diff --git a/.gitignore b/.gitignore index 3bf7654..9fcbe2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ target !.mvn/wrapper/maven-wrapper.jar - + ### STS ### .apt_generated .classpath @@ -9,7 +9,7 @@ target .settings .springBeans .sts4-cache - + ### IntelliJ IDEA ### .idea *.iws @@ -24,3 +24,5 @@ target /nbdist/ /.nb-gradle/ +.flattened-pom.xml +**/.flattened-pom.xml diff --git a/pom.xml b/pom.xml index 1008997..14c6562 100644 --- a/pom.xml +++ b/pom.xml @@ -3,14 +3,20 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 cloud.tianai.captcha - tianai-captcha - 1.5.3 - - tianai-captcha + tianai-captcha-parent + ${revision} + pom + tianai-captcha-parent 行为验证码 https://gitee.com/tianai/tianai-captcha + + tianai-captcha + tianai-captcha-springboot-starter + tianai-captcha-solon-plugin + + 1.5.3 1.8 true @@ -18,9 +24,9 @@ UTF-8 false - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - https://oss.sonatype.org/content/repositories/snapshots/ + ossrh + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + https://s01.oss.sonatype.org/content/repositories/snapshots @@ -28,7 +34,6 @@ - The MulanPSL2 License, Version 2.0 @@ -36,6 +41,11 @@ + + https://gitee.com/tianai/tianai-captcha + + + tianaiyouqing @@ -44,12 +54,11 @@ http://tianai.cloud - - https://gitee.com/tianai/tianai-captcha - + + - ${deplay.id} + ${serverId} ${deplay.snapshotRepository} @@ -58,42 +67,55 @@ - - - org.projectlombok - lombok - 1.18.12 - true - - - org.slf4j - slf4j-api - 1.7.30 - - - + - org.apache.maven.plugins - maven-compiler-plugin + org.codehaus.mojo + flatten-maven-plugin + 1.2.7 - 8 - 8 - -parameters + true + resolveCiFriendliesOnly + + + flatten + process-resources + + flatten + + + + flatten.clean + clean + + clean + + + - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.7 - true + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 - ${skip.nexus} - ossrh - https://oss.sonatype.org/ - true + + true + false + false + + + attach-javadocs + + jar + + + -Xdoclint:none + + + org.apache.maven.plugins @@ -108,22 +130,7 @@ - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - - attach-javadocs - - jar - - - -Xdoclint:none - - - - + org.apache.maven.plugins maven-gpg-plugin @@ -143,7 +150,24 @@ maven-resources-plugin 2.6 + + org.sonatype.central + central-publishing-maven-plugin + 0.5.0 + true + + ossrh + + true + + + + + + + + diff --git a/readme.md b/readme.md index 1f3eb06..e2fdf62 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,7 @@
![][image-logo] - + ![star](https://gitcode.com/dromara/tianai-captcha/star/badge.svg) ### tianaiCAPTCHA - 天爱验证码(TAC) @@ -22,22 +22,85 @@ - 文字点选验证码 - 后面会陆续支持市面上更多好玩的验证码玩法... 敬请期待 -## 快速上手 +## 快速上手(后端) -> 注意: 如果你项目是使用的**Springboot**, -> -> -请使用SpringBoot脚手架工具 - - [tianai-captcha-springboot-starter(gitee)](https://gitee.com/tianai/tianai-captcha-springboot-starter); - - [tianai-captcha-springboot-starter(gitcode)](https://gitcode.com/tiana/tianai-captcha-springboot-starter); - - [tianai-captcha-springboot-starter(github)](https://github.com/tianaiyouqing/tianai-captcha-springboot-starter); -> -> 该工具对tianai-captcha验证码进行了封装,使其使用更加方便快捷 +### springboot项目 + +1. 导入依赖 + + ```xml + + cloud.tianai.captcha + tianai-captcha-springboot-starter + 1.5.2 + + ``` + +2. 使用`ImageCaptchaApplication`生成和校验验证码 + + ```java + public class Test2 { + @Autowired + private ImageCaptchaApplication application; + + // 生成验证码 + public void gen() { + ApiResponse res1 = application.generateCaptcha(CaptchaTypeConstant.SLIDER); + + // 匹配验证码是否正确 + // 该参数包含了滑动轨迹滑动时间等数据,用于校验滑块验证码。 由前端传入 + ImageCaptchaTrack sliderCaptchaTrack = new ImageCaptchaTrack(); + ApiResponse match = application.matching(res1.getId(), sliderCaptchaTrack); + } + + // 校验验证码 + public boolean valid(@RequestBody ImageCaptchaTrack captchaTrack) { + ApiResponse matching = captchaApplication.matching(data.getId(), sliderCaptchaTrack); + return matching.isSuccess(); + } + + } + ``` + +3. springboot配置文件说明 + + ```yaml + # 滑块验证码配置, 详细请看 cloud.tianai.captcha.autoconfiguration.ImageCaptchaProperties 类 + captcha: + # 如果项目中使用到了redis,滑块验证码会自动把验证码数据存到redis中, 这里配置redis的key的前缀,默认是captcha:slider + prefix: captcha + # 验证码过期时间,默认是2分钟,单位毫秒, 可以根据自身业务进行调整 + expire: + # 默认缓存时间 2分钟 + default: 10000 + # 针对 点选验证码 过期时间设置为 2分钟, 因为点选验证码验证比较慢,把过期时间调整大一些 + WORD_IMAGE_CLICK: 20000 + # 使用加载系统自带的资源, 默认是 false + init-default-resource: false + # 缓存控制, 默认为false不开启 + local-cache-enabled: true + # 验证码会提前缓存一些生成好的验证数据, 默认是20 + local-cache-size: 20 + # 缓存拉取失败后等待时间 默认是 5秒钟 + local-cache-wait-time: 5000 + # 缓存检查间隔 默认是2秒钟 + local-cache-period: 2000 + # 配置字体库,文字点选验证码的字体库,可以配置多个 + font-path: + - classpath:font/simhei.ttf + secondary: + # 二次验证, 默认false 不开启 + enabled: false + # 二次验证过期时间, 默认 2分钟 + expire: 120000 + # 二次验证缓存key前缀,默认是 captcha:secondary + keyPrefix: "captcha:secondary" + ``` + + -> **写好的验证码demo移步 -> - [tianai-captcha-demo(gitee)](https://gitee.com/tianai/tianai-captcha-demo) -> - [tianai-captcha-demo(gitcode)](https://gitcode.com/tiana/tianai-captcha-demo) +### 非spring项目 ### 1. 导入xml @@ -90,7 +153,117 @@ public class ApplicationTest { } ``` -### 3.详细文档请点击 [在线文档](http://doc.captcha.tianai.cloud) + + +## 快速上手(前端) + + +| 条目 | | +| -------- | ------------------------------------------------------------ | +| 兼容性 | Chrome、Firefox、Safari、Opera、主流手机浏览器、iOS 及 Android上的内嵌Webview | +| 框架支持 | H5、Angular、React、Vue2、Vue3 | + + + +### 安装 + +1. 将打包好的`tac`目录放到自己项目中,如果是vue、react等框架,将tac目录放到public目录中、或者放到某个可以访问到地方,比如oss之类的可以被浏览器访问到的地方 (tac下载地址 [https://gitee.com/tianai/tianai-captcha-web-sdk/releases/tag/1.2](https://gitee.com/tianai/tianai-captcha-web-sdk/releases/tag/1.2)) + +2. 引入初始化函数 (load.js下载地址 [https://minio.tianai.cloud/public/static/captcha/js/load.min.js](https://minio.tianai.cloud/public/static/captcha/js/load.min.js)) 可自己将load.js下载到本地 + + ```html + + ``` + + **注: 如果是web框架,将该引入代码放到 `public/index.html`** + +### 使用方法 + +2. 创建一个div块用于渲染验证码, 该div用于装载验证码 + + ```html +
+ ``` + +3. 在需要调用验证码的时候执行加载验证码方法 + + ```js + function login() { + // config 对象为TAC验证码的一些配置和验证的回调 + const config = { + // 生成接口 (必选项,必须配置, 要符合tianai-captcha默认验证码生成接口规范) + requestCaptchaDataUrl: "/gen", + // 验证接口 (必选项,必须配置, 要符合tianai-captcha默认验证码校验接口规范) + validCaptchaUrl: "/check", + // 验证码绑定的div块 (必选项,必须配置) + bindEl: "#captcha-box", + // 验证成功回调函数(必选项,必须配置) + validSuccess: (res, c, tac) => { + // 销毁验证码服务 + tac.destroyWindow(); + console.log("验证成功,后端返回的数据为", res); + // 调用具体的login方法 + login(res.data.token) + }, + // 验证失败的回调函数(可忽略,如果不自定义 validFail 方法时,会使用默认的) + validFail: (res, c, tac) => { + console.log("验证码验证失败回调...") + // 验证失败后重新拉取验证码 + tac.reloadCaptcha(); + }, + // 刷新按钮回调事件 + btnRefreshFun: (el, tac) => { + console.log("刷新按钮触发事件...") + tac.reloadCaptcha(); + }, + // 关闭按钮回调事件 + btnCloseFun: (el, tac) => { + console.log("关闭按钮触发事件...") + tac.destroyWindow(); + } + } + // 一些样式配置, 可不传 + let style = { + logoUrl: null;// 去除logo + // logoUrl: "/xx/xx/xxx.png" // 替换成自定义的logo + } + // 参数1 为 tac文件是目录地址, 目录里包含 tac的js和css等文件 + // 参数2 为 tac验证码相关配置 + // 参数3 为 tac窗口一些样式配置 + window.initTAC("./tac", config, style).then(tac => { + tac.init(); // 调用init则显示验证码 + }).catch(e => { + console.log("初始化tac失败", e); + }) + } + ``` + +### 对滑块的按钮和背景设置为自定义的一些样式 + +```js +// 这里分享一些作者自己调的样式供参考 +const style = { + // 按钮样式 + btnUrl: "https://minio.tianai.cloud/public/captcha-btn/btn3.png", + // 背景样式 + bgUrl: "https://minio.tianai.cloud/public/captcha-btn/btn3-bg.jpg", + // logo地址 + logoUrl: "https://minio.tianai.cloud/public/static/captcha/images/logo.png", + // 滑动边框样式 + moveTrackMaskBgColor: "#f7b645", + moveTrackMaskBorderColor: "#ef9c0d" + } + window.initTAC("./tac", config, style).then(tac => { + tac.init(); // 调用init则显示验证码 + }).catch(e => { + console.log("初始化tac失败", e); + }) +``` + + + +## 详细文档请点击 [在线文档](http://doc.captcha.tianai.cloud) + # qq群: 197340494 # 微信群: diff --git a/src/main/java/cloud/tianai/captcha/application/vo/CaptchaResponse.java b/src/main/java/cloud/tianai/captcha/application/vo/CaptchaResponse.java deleted file mode 100644 index a309fc8..0000000 --- a/src/main/java/cloud/tianai/captcha/application/vo/CaptchaResponse.java +++ /dev/null @@ -1,24 +0,0 @@ -package cloud.tianai.captcha.application.vo; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @Author: 天爱有情 - * @Date 2020/5/29 8:31 - * @Description 验证码返回对象 - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class CaptchaResponse implements Serializable { - private String id; - private T captcha; - - public static CaptchaResponse of(String id, T data) { - return new CaptchaResponse(id, data); - } -} diff --git a/tianai-captcha-solon-plugin/pom.xml b/tianai-captcha-solon-plugin/pom.xml new file mode 100644 index 0000000..965b055 --- /dev/null +++ b/tianai-captcha-solon-plugin/pom.xml @@ -0,0 +1,63 @@ + + 4.0.0 + + cloud.tianai.captcha + tianai-captcha-parent + ${revision} + + tianai-captcha-solon-plugin + tianai-captcha-solon-plugin + 行为验证码的solon插件 + https://gitee.com/tianai/tianai-captcha-solon-plugin + + + 3.5.2 + 8 + UTF-8 + + 1.8 + + true + UTF-8 + UTF-8 + + + + + + + org.noear + solon + ${solon.version} + + + + org.noear + solon-web + ${solon.version} + test + + + + cloud.tianai.captcha + tianai-captcha + ${revision} + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + -parameters + + + + + diff --git a/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/XPluginImp.java b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/XPluginImp.java new file mode 100644 index 0000000..3e83d9e --- /dev/null +++ b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/XPluginImp.java @@ -0,0 +1,21 @@ +package cloud.tianai.captcha.solon; + +import cloud.tianai.captcha.solon.config.ImageCaptchaAutoConfiguration; +import cloud.tianai.captcha.solon.properties.CaptchaProperties; +import org.noear.solon.core.AppContext; +import org.noear.solon.core.Plugin; + +/** + * 插件启动类 + * @Author XT + * @Date 2024.09.03 + */ +public class XPluginImp implements Plugin { + + @Override + public void start(AppContext context) { + context.beanMake(CaptchaProperties.class); + context.beanMake(ImageCaptchaAutoConfiguration.class); + } + +} diff --git a/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/config/ImageCaptchaAutoConfiguration.java b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/config/ImageCaptchaAutoConfiguration.java new file mode 100644 index 0000000..d5ece4b --- /dev/null +++ b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/config/ImageCaptchaAutoConfiguration.java @@ -0,0 +1,95 @@ +package cloud.tianai.captcha.solon.config; + +import cloud.tianai.captcha.application.ImageCaptchaApplication; +import cloud.tianai.captcha.application.TACBuilder; +import cloud.tianai.captcha.cache.CacheStore; +import cloud.tianai.captcha.cache.impl.LocalCacheStore; +import cloud.tianai.captcha.resource.common.model.dto.Resource; +import cloud.tianai.captcha.solon.plugins.secondary.SecondaryVerificationApplication; +import cloud.tianai.captcha.solon.properties.CaptchaProperties; +import cloud.tianai.captcha.solon.service.CaptchaRedisCacheService; +import org.noear.solon.annotation.Bean; +import org.noear.solon.annotation.Configuration; +import org.noear.solon.annotation.Inject; + +import java.util.List; + +/** + * @Author XT + * @Date 2024.09.03 + */ +@Configuration +public class ImageCaptchaAutoConfiguration { + + @Bean + public ImageCaptchaApplication imageCaptchaApplication(CaptchaProperties captchaProperties, @Inject(required = false) CaptchaRedisCacheService cacheService) { + TACBuilder tacBuilder = TACBuilder.builder(); + tacBuilder.addDefaultTemplate(); + tacBuilder.expire("default", captchaProperties.getExpire()); + tacBuilder.prefix(captchaProperties.getPrefix()); + // 注入背景图资源 + if (captchaProperties.getResources().getAuto()) { + String[] split = captchaProperties.getResources().getAutoType().split(","); + List wordImageClickList = captchaProperties.getResources().getImages(); + for (String type : split) { + for (String path : wordImageClickList) { + tacBuilder.addResource(type, new Resource("classpath", path)); + } + } + } else { + List wordImageClickList = captchaProperties.getResources().getWORD_IMAGE_CLICK(); + if (!wordImageClickList.isEmpty()) { + for (String path : wordImageClickList) { + tacBuilder.addResource("WORD_IMAGE_CLICK", new Resource("classpath", path)); + } + } + List concatList = captchaProperties.getResources().getCONCAT(); + if (!concatList.isEmpty()) { + for (String path : concatList) { + tacBuilder.addResource("CONCAT", new Resource("classpath", path)); + } + } + List sliderList = captchaProperties.getResources().getSLIDER(); + if (!sliderList.isEmpty()) { + for (String path : sliderList) { + tacBuilder.addResource("SLIDER", new Resource("classpath", path)); + } + } + List rotateList = captchaProperties.getResources().getROTATE(); + if (!rotateList.isEmpty()) { + for (String path : rotateList) { + tacBuilder.addResource("ROTATE", new Resource("classpath", path)); + } + } + } + + // 注入字体包 + if (null != captchaProperties.getFontPath()) { + List fontPathList = captchaProperties.getFontPath(); + if (!fontPathList.isEmpty()) { + for (String path : fontPathList) { + try { + tacBuilder.addFont(new Resource("classpath", path)); + } catch (Exception e) { + throw new RuntimeException("读取字体包失败,path=" + path, e); + } + } + } + } + + CacheStore cacheStore = cacheService; + // 注入缓存器 + if (null == cacheStore) { + cacheStore = new LocalCacheStore(); + } + tacBuilder.setCacheStore(cacheStore); + ImageCaptchaApplication target = tacBuilder.build(); + + // 二次验证 + if (captchaProperties.getSecondary().getEnabled()) { + target = new SecondaryVerificationApplication(target, captchaProperties, cacheStore); + } + return target; + } + +} diff --git a/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/plugins/secondary/SecondaryVerificationApplication.java b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/plugins/secondary/SecondaryVerificationApplication.java new file mode 100644 index 0000000..2db90a3 --- /dev/null +++ b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/plugins/secondary/SecondaryVerificationApplication.java @@ -0,0 +1,109 @@ +package cloud.tianai.captcha.solon.plugins.secondary; + +import cloud.tianai.captcha.application.FilterImageCaptchaApplication; +import cloud.tianai.captcha.application.ImageCaptchaApplication; +import cloud.tianai.captcha.application.vo.ImageCaptchaVO; +import cloud.tianai.captcha.cache.CacheStore; +import cloud.tianai.captcha.common.AnyMap; +import cloud.tianai.captcha.common.exception.ImageCaptchaException; +import cloud.tianai.captcha.common.response.ApiResponse; +import cloud.tianai.captcha.solon.properties.CaptchaLimit; +import cloud.tianai.captcha.solon.properties.CaptchaProperties; +import cloud.tianai.captcha.solon.properties.CaptchaSecondary; +import cloud.tianai.captcha.validator.common.model.dto.ImageCaptchaTrack; +import org.noear.solon.core.handle.Context; + +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * @Author XT + * @Date 2024.09.03 + */ +public class SecondaryVerificationApplication extends FilterImageCaptchaApplication { + + private final CaptchaSecondary prop; + private final CaptchaProperties captchaProperties; + private final CacheStore redisCacheService; + + public SecondaryVerificationApplication(ImageCaptchaApplication target, CaptchaProperties captchaProperties, CacheStore redisCacheService) { + super(target); + this.captchaProperties = captchaProperties; + this.prop = captchaProperties.getSecondary(); + this.redisCacheService = redisCacheService; + } + + @Override + public ApiResponse generateCaptcha(String type) { + // 检查是否每分钟超过限制 + CaptchaLimit limit = captchaProperties.getLimit(); + if (null != limit && limit.getEnable()) { + Context current = Context.current(); + String errLimitKey = getLimitKey(current, "error"); + Long errLimit = redisCacheService.getLong(errLimitKey); + if (null != errLimit && errLimit >= limit.getErrorLimit()) { + throw new ImageCaptchaException("验证次数过多,请稍后再试"); + } + String reqLimitKey = getLimitKey(current, "req"); + Long reqLimit = redisCacheService.getLong(reqLimitKey); + if (null != reqLimit && reqLimit >= limit.getReqLimit()) { + throw new ImageCaptchaException("获取验证码频繁,请稍后再试"); + } + redisCacheService.incr(reqLimitKey, 1, 60L, TimeUnit.SECONDS); + } + return super.generateCaptcha(type); + } + + @Override + public ApiResponse matching(String id, ImageCaptchaTrack imageCaptchaTrack) { + ApiResponse match = super.matching(id, imageCaptchaTrack); + if (match.isSuccess()) { + // 如果匹配成功, 添加二次验证记录 + addSecondaryVerification(id + getRemoteId(Context.current()), imageCaptchaTrack); + } else { + CaptchaLimit limit = captchaProperties.getLimit(); + if (null != limit && limit.getEnable()) { + Context current = Context.current(); + String limitKey = getLimitKey(current, "error"); + redisCacheService.incr(limitKey, 1, 60L, TimeUnit.SECONDS); + } + } + return match; + } + + /** + * 二次缓存验证 + * @param id id + * @return boolean + */ + public boolean secondaryVerification(String id) { + Map cache = target.getCacheStore().getAndRemoveCache(getKey(id + getRemoteId(Context.current()))); + return cache != null; + } + + /** + * 添加二次缓存验证记录 + * @param id id + * @param imageCaptchaTrack sliderCaptchaTrack + */ + protected void addSecondaryVerification(String id, ImageCaptchaTrack imageCaptchaTrack) { + target.getCacheStore().setCache(getKey(id), new AnyMap(), prop.getExpire(), TimeUnit.MILLISECONDS); + } + + protected String getKey(String id) { + return prop.getKeyPrefix().concat(":").concat(id); + } + + protected String getLimitKey(Context ctx, String type) { + return prop.getKeyPrefix().concat(":limit:") + .concat(type) + .concat(":") + .concat(getRemoteId(ctx)); + } + + + public static String getRemoteId(Context ctx) { + return ctx.realIp() + ctx.userAgent(); + } + +} diff --git a/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaLimit.java b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaLimit.java new file mode 100644 index 0000000..721088f --- /dev/null +++ b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaLimit.java @@ -0,0 +1,38 @@ +package cloud.tianai.captcha.solon.properties; + +/** + * @Author XT + * @Date 2024.09.04 + */ +public class CaptchaLimit { + + private Boolean enable; + + private Long reqLimit; + + private Long errorLimit; + + public Boolean getEnable() { + return enable; + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public Long getReqLimit() { + return reqLimit; + } + + public void setReqLimit(Long reqLimit) { + this.reqLimit = reqLimit; + } + + public Long getErrorLimit() { + return errorLimit; + } + + public void setErrorLimit(Long errorLimit) { + this.errorLimit = errorLimit; + } +} diff --git a/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaProperties.java b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaProperties.java new file mode 100644 index 0000000..7c6dc51 --- /dev/null +++ b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaProperties.java @@ -0,0 +1,93 @@ +package cloud.tianai.captcha.solon.properties; + +import org.noear.solon.annotation.Configuration; +import org.noear.solon.annotation.Inject; + +import java.util.List; + +/** + * @Author XT + * @Date 2024.09.03 + */ +@Inject("${captcha}") +@Configuration +public class CaptchaProperties { + + /** + * redis 前缀 + */ + private String prefix; + + /** + * 有效期 + */ + private Long expire; + + /** + * 字体路径 + */ + private List fontPath; + + /** + * 资源路径 + */ + private CaptchaResource resources; + + /** + * 二次验证 + */ + private CaptchaSecondary secondary; + + /** + * 每分限流 + */ + private CaptchaLimit limit; + + public String getPrefix() { + return prefix; + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + public Long getExpire() { + return expire; + } + + public void setExpire(Long expire) { + this.expire = expire; + } + + public List getFontPath() { + return fontPath; + } + + public void setFontPath(List fontPath) { + this.fontPath = fontPath; + } + + public CaptchaResource getResources() { + return resources; + } + + public void setResources(CaptchaResource resources) { + this.resources = resources; + } + + public CaptchaSecondary getSecondary() { + return secondary; + } + + public void setSecondary(CaptchaSecondary secondary) { + this.secondary = secondary; + } + + public CaptchaLimit getLimit() { + return limit; + } + + public void setLimit(CaptchaLimit limit) { + this.limit = limit; + } +} diff --git a/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaResource.java b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaResource.java new file mode 100644 index 0000000..07bd55c --- /dev/null +++ b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaResource.java @@ -0,0 +1,80 @@ +package cloud.tianai.captcha.solon.properties; + +import java.util.List; + +/** + * @Author XT + * @Date 2024.09.03 + */ +public class CaptchaResource { + + private Boolean auto; + + private String autoType; + + private List images; + + private List SLIDER; + + private List WORD_IMAGE_CLICK; + + private List ROTATE; + + private List CONCAT; + + public List getSLIDER() { + return SLIDER; + } + + public void setSLIDER(List SLIDER) { + this.SLIDER = SLIDER; + } + + public List getWORD_IMAGE_CLICK() { + return WORD_IMAGE_CLICK; + } + + public void setWORD_IMAGE_CLICK(List WORD_IMAGE_CLICK) { + this.WORD_IMAGE_CLICK = WORD_IMAGE_CLICK; + } + + public List getROTATE() { + return ROTATE; + } + + public void setROTATE(List ROTATE) { + this.ROTATE = ROTATE; + } + + public List getCONCAT() { + return CONCAT; + } + + public void setCONCAT(List CONCAT) { + this.CONCAT = CONCAT; + } + + public Boolean getAuto() { + return auto; + } + + public void setAuto(Boolean auto) { + this.auto = auto; + } + + public String getAutoType() { + return autoType; + } + + public void setAutoType(String autoType) { + this.autoType = autoType; + } + + public List getImages() { + return images; + } + + public void setImages(List images) { + this.images = images; + } +} diff --git a/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaSecondary.java b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaSecondary.java new file mode 100644 index 0000000..b821522 --- /dev/null +++ b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/properties/CaptchaSecondary.java @@ -0,0 +1,38 @@ +package cloud.tianai.captcha.solon.properties; + +/** + * @Author XT + * @Date 2024.09.03 + */ +public class CaptchaSecondary { + + private Boolean enabled; + + private Long expire; + + private String keyPrefix; + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public Long getExpire() { + return expire; + } + + public void setExpire(Long expire) { + this.expire = expire; + } + + public String getKeyPrefix() { + return keyPrefix; + } + + public void setKeyPrefix(String keyPrefix) { + this.keyPrefix = keyPrefix; + } +} diff --git a/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/service/CaptchaRedisCacheService.java b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/service/CaptchaRedisCacheService.java new file mode 100644 index 0000000..79efc89 --- /dev/null +++ b/tianai-captcha-solon-plugin/src/main/java/cloud/tianai/captcha/solon/service/CaptchaRedisCacheService.java @@ -0,0 +1,7 @@ +package cloud.tianai.captcha.solon.service; + +import cloud.tianai.captcha.cache.CacheStore; + +public interface CaptchaRedisCacheService extends CacheStore { + +} diff --git a/tianai-captcha-springboot-starter/pom.xml b/tianai-captcha-springboot-starter/pom.xml new file mode 100644 index 0000000..968dcb1 --- /dev/null +++ b/tianai-captcha-springboot-starter/pom.xml @@ -0,0 +1,106 @@ + + 4.0.0 + + cloud.tianai.captcha + tianai-captcha-parent + ${revision} + ../pom.xml + + tianai-captcha-springboot-starter + tianai-captcha-springboot-starter + 滑块验证码springboot启动器 + https://gitee.com/tianai/tianai-captcha-springboot-starter + + + + + org.springframework.boot + spring-boot-dependencies + 2.2.7.RELEASE + pom + import + + + + + + 1.8 + 3.7 + + true + UTF-8 + UTF-8 + + + + + org.springframework.data + spring-data-redis + compile + true + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + com.google.code.gson + gson + + + org.springframework.boot + spring-boot-autoconfigure + compile + + + org.springframework.boot + spring-boot-autoconfigure-processor + + + org.springframework.boot + spring-boot-configuration-processor + + + org.projectlombok + lombok + true + + + cloud.tianai.captcha + tianai-captcha + ${revision} + + + + + + + + org.springframework.boot + spring-boot-starter-web + compile + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + -parameters + + + + + + diff --git a/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/CacheStoreAutoConfiguration.java b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/CacheStoreAutoConfiguration.java new file mode 100644 index 0000000..3452518 --- /dev/null +++ b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/CacheStoreAutoConfiguration.java @@ -0,0 +1,63 @@ +package cloud.tianai.captcha.spring.autoconfiguration; + +import cloud.tianai.captcha.cache.CacheStore; +import cloud.tianai.captcha.cache.impl.LocalCacheStore; +import cloud.tianai.captcha.spring.store.impl.RedisCacheStore; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; +import org.springframework.data.redis.core.StringRedisTemplate; + +/** + * 缓存存储器的自动配置类 + * + * @author Hccake + */ +@AutoConfigureAfter({RedisAutoConfiguration.class}) +@Configuration(proxyBeanMethods = false) +public class CacheStoreAutoConfiguration { + + /** + * RedisCacheStoreConfiguration + * + * @author 天爱有情 + * @since 2020/10/27 14:06 + */ + @Order(1) + @Configuration(proxyBeanMethods = false) + @ConditionalOnClass(StringRedisTemplate.class) + public static class RedisCacheStoreConfiguration { + + @Bean + @ConditionalOnBean(StringRedisTemplate.class) + @ConditionalOnMissingBean(CacheStore.class) + public CacheStore redis(StringRedisTemplate redisTemplate) { + return new RedisCacheStore(redisTemplate); + } + + } + + /** + * LocalCacheStoreConfiguration + * + * @author 天爱有情 + * @since 2020/10/27 14:06 + */ + @Order(2) + @Configuration(proxyBeanMethods = false) + public static class LocalCacheStoreConfiguration { + + @Bean + @ConditionalOnMissingBean(CacheStore.class) + public CacheStore local() { + return new LocalCacheStore(); + } + + } + +} diff --git a/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/ImageCaptchaAutoConfiguration.java b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/ImageCaptchaAutoConfiguration.java new file mode 100644 index 0000000..2e7aad3 --- /dev/null +++ b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/ImageCaptchaAutoConfiguration.java @@ -0,0 +1,130 @@ +package cloud.tianai.captcha.spring.autoconfiguration; + + +import cloud.tianai.captcha.application.ImageCaptchaApplication; +import cloud.tianai.captcha.application.TACBuilder; +import cloud.tianai.captcha.cache.CacheStore; +import cloud.tianai.captcha.common.util.CollectionUtils; +import cloud.tianai.captcha.generator.ImageCaptchaGenerator; +import cloud.tianai.captcha.generator.ImageTransform; +import cloud.tianai.captcha.generator.impl.transform.Base64ImageTransform; +import cloud.tianai.captcha.interceptor.CaptchaInterceptor; +import cloud.tianai.captcha.interceptor.CaptchaInterceptorGroup; +import cloud.tianai.captcha.interceptor.impl.ParamCheckCaptchaInterceptor; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.ResourceProviders; +import cloud.tianai.captcha.resource.ResourceStore; +import cloud.tianai.captcha.resource.impl.DefaultImageCaptchaResourceManager; +import cloud.tianai.captcha.resource.impl.LocalMemoryResourceStore; +import cloud.tianai.captcha.spring.plugins.SpringMultiImageCaptchaGenerator; +import cloud.tianai.captcha.spring.plugins.secondary.SecondaryVerificationApplication; +import cloud.tianai.captcha.validator.ImageCaptchaValidator; +import cloud.tianai.captcha.validator.impl.SimpleImageCaptchaValidator; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Role; +import org.springframework.core.annotation.Order; + +/** + * @Author: 天爱有情 + * @Date 2020/5/29 9:49 + * @Description 滑块验证码自动装配 + */ +@Slf4j +@Order +@Configuration +@AutoConfigureAfter(CacheStoreAutoConfiguration.class) +@EnableConfigurationProperties({SpringImageCaptchaProperties.class}) +public class ImageCaptchaAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public ResourceStore resourceStore() { + return new LocalMemoryResourceStore(); + } + + @Bean + @ConditionalOnMissingBean + public ImageCaptchaResourceManager imageCaptchaResourceManager(ResourceStore resourceStore) { + ResourceProviders resourceProviders = new ResourceProviders(); + return new DefaultImageCaptchaResourceManager(resourceStore,resourceProviders); + } + + @Bean + @ConditionalOnMissingBean + public ImageTransform imageTransform() { + return new Base64ImageTransform(); + } + + + @Bean + @ConditionalOnMissingBean + public ImageCaptchaGenerator imageCaptchaTemplate(SpringImageCaptchaProperties prop, + ImageCaptchaResourceManager captchaResourceManager, + ImageTransform imageTransform, + BeanFactory beanFactory) { + return new SpringMultiImageCaptchaGenerator(captchaResourceManager, imageTransform, beanFactory); + } + + @Bean + @ConditionalOnMissingBean + public ImageCaptchaValidator imageCaptchaValidator() { + return new SimpleImageCaptchaValidator(); + } + + @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) + @ConditionalOnMissingBean + public CaptchaInterceptor captchaInterceptor() { + CaptchaInterceptorGroup group = new CaptchaInterceptorGroup(); + group.addInterceptor(new ParamCheckCaptchaInterceptor()); +// group.addInterceptor(new BasicTrackCaptchaInterceptor()); + return group; + } + + + @Bean + @ConditionalOnMissingBean + public ImageCaptchaApplication imageCaptchaApplication(ImageCaptchaGenerator captchaGenerator, + ImageCaptchaValidator imageCaptchaValidator, + CacheStore cacheStore, + ResourceStore resourceStore, + SpringImageCaptchaProperties prop, + CaptchaInterceptor captchaInterceptor, + ApplicationContext applicationContext) { + TACBuilder tacBuilder = TACBuilder.builder(resourceStore) + .setGenerator(captchaGenerator) + .setValidator(imageCaptchaValidator) + .setCacheStore(cacheStore) + .setProp(prop) + .setInterceptor(captchaInterceptor); + + if (prop.getInitDefaultResource()) { + tacBuilder.addDefaultTemplate(prop.getDefaultResourcePrefix()); + } + if (!CollectionUtils.isEmpty(prop.getFontPath())) { + // 读取字体包 + for (String fontPath : prop.getFontPath()) { + int index = fontPath.indexOf(":"); + String[] split = index > 0 ? new String[]{fontPath.substring(0, index), fontPath.substring(index + 1)} : new String[]{"", fontPath}; + String type = split[0]; + String path = split[1]; + tacBuilder.addFont(new cloud.tianai.captcha.resource.common.model.dto.Resource(type, path)); + } + } + ImageCaptchaApplication target = tacBuilder.build(); + if (prop.getSecondary() != null && Boolean.TRUE.equals(prop.getSecondary().getEnabled())) { + // 一个简单的二次验证 + target = new SecondaryVerificationApplication(target, prop.getSecondary()); + } + return target; + } + +} diff --git a/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/SecondaryVerificationProperties.java b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/SecondaryVerificationProperties.java new file mode 100644 index 0000000..da756e8 --- /dev/null +++ b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/SecondaryVerificationProperties.java @@ -0,0 +1,12 @@ +package cloud.tianai.captcha.spring.autoconfiguration; + +import lombok.Data; + +@Data +public class SecondaryVerificationProperties { + + private Boolean enabled = false; + private Long expire = 120000L; + private String keyPrefix = "captcha:secondary"; + +} diff --git a/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/SpringImageCaptchaProperties.java b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/SpringImageCaptchaProperties.java new file mode 100644 index 0000000..66a0b21 --- /dev/null +++ b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/SpringImageCaptchaProperties.java @@ -0,0 +1,30 @@ +package cloud.tianai.captcha.spring.autoconfiguration; + +import cloud.tianai.captcha.application.ImageCaptchaProperties; +import cloud.tianai.captcha.resource.DefaultBuiltInResources; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; + +import java.util.List; + +/** + * @Author: 天爱有情 + * @date 2020/10/19 18:41 + * @Description 滑块验证码属性 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ConfigurationProperties(prefix = "captcha") +public class SpringImageCaptchaProperties extends ImageCaptchaProperties { + /** 是否初始化默认资源. */ + private Boolean initDefaultResource = false; + /** 默认资源的位置. */ + private String defaultResourcePrefix = DefaultBuiltInResources.PATH_PREFIX; + /** 字体包路径. */ + private List fontPath; + /** 二次验证配置. */ + @NestedConfigurationProperty + private SecondaryVerificationProperties secondary; +} diff --git a/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/exception/CaptchaValidException.java b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/exception/CaptchaValidException.java new file mode 100644 index 0000000..90fe82d --- /dev/null +++ b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/exception/CaptchaValidException.java @@ -0,0 +1,41 @@ +package cloud.tianai.captcha.spring.exception; + +import cloud.tianai.captcha.common.exception.ImageCaptchaException; +import lombok.Getter; +import lombok.Setter; + +/** + * @Author: 天爱有情 + * @Date 2020/6/19 16:36 + * @Description 验证码验证失败异常 + */ +@Getter +@Setter +public class CaptchaValidException extends ImageCaptchaException { + + private String captchaType; + private Integer code; + public CaptchaValidException() { + } + + public CaptchaValidException(String captchaType,String message) { + super(message); + this.captchaType = captchaType; + } + public CaptchaValidException(String captchaType,Integer code, String message) { + super(message); + this.code = code; + this.captchaType = captchaType; + } + public CaptchaValidException(String message, Throwable cause) { + super(message, cause); + } + + public CaptchaValidException(Throwable cause) { + super(cause); + } + + public CaptchaValidException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/plugins/SpringMultiImageCaptchaGenerator.java b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/plugins/SpringMultiImageCaptchaGenerator.java new file mode 100644 index 0000000..759cdac --- /dev/null +++ b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/plugins/SpringMultiImageCaptchaGenerator.java @@ -0,0 +1,36 @@ +package cloud.tianai.captcha.spring.plugins; + +import cloud.tianai.captcha.generator.ImageCaptchaGeneratorProvider; +import cloud.tianai.captcha.generator.ImageTransform; +import cloud.tianai.captcha.generator.impl.MultiImageCaptchaGenerator; +import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.ListableBeanFactory; + +/** + * @Author: 天爱有情 + * @date 2022/5/19 14:37 + * @Description 基于spring的 多验证码生成器 + */ +public class SpringMultiImageCaptchaGenerator extends MultiImageCaptchaGenerator { + private ListableBeanFactory beanFactory; + + public SpringMultiImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, ImageTransform imageTransform, + BeanFactory beanFactory) { + super(imageCaptchaResourceManager, imageTransform); + this.beanFactory = (ListableBeanFactory) beanFactory; + } + + @Override + protected void doInit() { + super.doInit(); + String[] beanNamesForType = beanFactory.getBeanNamesForType(ImageCaptchaGeneratorProvider.class); + if (!ArrayUtils.isEmpty(beanNamesForType)) { + for (String beanName : beanNamesForType) { + ImageCaptchaGeneratorProvider provider = beanFactory.getBean(beanName, ImageCaptchaGeneratorProvider.class); + addImageCaptchaGeneratorProvider(provider); + } + } + } +} diff --git a/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/plugins/secondary/SecondaryVerificationApplication.java b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/plugins/secondary/SecondaryVerificationApplication.java new file mode 100644 index 0000000..efb54fc --- /dev/null +++ b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/plugins/secondary/SecondaryVerificationApplication.java @@ -0,0 +1,58 @@ +package cloud.tianai.captcha.spring.plugins.secondary; + +import cloud.tianai.captcha.application.FilterImageCaptchaApplication; +import cloud.tianai.captcha.application.ImageCaptchaApplication; +import cloud.tianai.captcha.common.AnyMap; +import cloud.tianai.captcha.common.response.ApiResponse; +import cloud.tianai.captcha.spring.autoconfiguration.SecondaryVerificationProperties; +import cloud.tianai.captcha.validator.common.model.dto.ImageCaptchaTrack; + +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * @Author: 天爱有情 + * @date 2022/3/2 14:16 + * @Description 二次验证 + */ +public class SecondaryVerificationApplication extends FilterImageCaptchaApplication { + private SecondaryVerificationProperties prop; + + public SecondaryVerificationApplication(ImageCaptchaApplication target, SecondaryVerificationProperties prop) { + super(target); + this.prop = prop; + } + + @Override + public ApiResponse matching(String id, ImageCaptchaTrack imageCaptchaTrack) { + ApiResponse match = super.matching(id, imageCaptchaTrack); + if (match.isSuccess()) { + // 如果匹配成功, 添加二次验证记录 + addSecondaryVerification(id, imageCaptchaTrack); + } + return match; + } + + /** + * 二次缓存验证 + * @param id id + * @return boolean + */ + public boolean secondaryVerification(String id) { + Map cache = target.getCacheStore().getAndRemoveCache(getKey(id)); + return cache != null; + } + + /** + * 添加二次缓存验证记录 + * @param id id + * @param imageCaptchaTrack sliderCaptchaTrack + */ + protected void addSecondaryVerification(String id, ImageCaptchaTrack imageCaptchaTrack) { + target.getCacheStore().setCache(getKey(id), new AnyMap(), prop.getExpire(), TimeUnit.MILLISECONDS); + } + + protected String getKey(String id) { + return prop.getKeyPrefix().concat(":").concat(id); + } +} diff --git a/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/store/impl/RedisCacheStore.java b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/store/impl/RedisCacheStore.java new file mode 100644 index 0000000..aff4394 --- /dev/null +++ b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/store/impl/RedisCacheStore.java @@ -0,0 +1,71 @@ +package cloud.tianai.captcha.spring.store.impl; + +import cloud.tianai.captcha.cache.CacheStore; +import cloud.tianai.captcha.common.AnyMap; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.data.redis.core.script.DefaultRedisScript; +import org.springframework.data.redis.core.script.RedisScript; +import org.springframework.util.StringUtils; + +import java.util.Collections; +import java.util.concurrent.TimeUnit; + +/** + * @Author: 天爱有情 + * @date 2022/3/2 14:42 + * @Description redis实现的缓存 + */ +public class RedisCacheStore implements CacheStore { + + private static final RedisScript SCRIPT_GET_CACHE = new DefaultRedisScript<>("local res = redis.call('get',KEYS[1]) if res == nil then return nil else redis.call('del',KEYS[1]) return res end", String.class); + protected StringRedisTemplate redisTemplate; + private Gson gson = new Gson(); + + public RedisCacheStore(StringRedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + @Override + public AnyMap getCache(String key) { + String jsonData = redisTemplate.opsForValue().get(key); + if (StringUtils.isEmpty(jsonData)) { + return null; + } + return gson.fromJson(jsonData, new TypeToken() { + }.getType()); + } + + @Override + public AnyMap getAndRemoveCache(String key) { + String json = redisTemplate.execute(SCRIPT_GET_CACHE, Collections.singletonList(key)); + if (org.apache.commons.lang3.StringUtils.isBlank(json)) { + return null; + } + return gson.fromJson(json, new TypeToken() { + }.getType()); + } + + @Override + public boolean setCache(String key, AnyMap data, Long expire, TimeUnit timeUnit) { + redisTemplate.opsForValue().set(key, gson.toJson(data), expire, timeUnit); + return true; + } + + @Override + public Long incr(String key, long delta, Long expire, TimeUnit timeUnit) { + Long increment = redisTemplate.opsForValue().increment(key, delta); + redisTemplate.expire(key, expire, timeUnit); + return increment; + } + + @Override + public Long getLong(String key) { + String value = redisTemplate.opsForValue().get(key); + if (value == null) { + return null; + } + return Long.valueOf(value); + } +} diff --git a/tianai-captcha-springboot-starter/src/main/resources/META-INF/spring.factories b/tianai-captcha-springboot-starter/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..13101a6 --- /dev/null +++ b/tianai-captcha-springboot-starter/src/main/resources/META-INF/spring.factories @@ -0,0 +1,3 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + cloud.tianai.captcha.spring.autoconfiguration.CacheStoreAutoConfiguration,\ + cloud.tianai.captcha.spring.autoconfiguration.ImageCaptchaAutoConfiguration \ No newline at end of file diff --git a/tianai-captcha-springboot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/tianai-captcha-springboot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..ac73fb8 --- /dev/null +++ b/tianai-captcha-springboot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +cloud.tianai.captcha.spring.autoconfiguration.CacheStoreAutoConfiguration +cloud.tianai.captcha.spring.autoconfiguration.ImageCaptchaAutoConfiguration diff --git a/tianai-captcha-web-sdk/.gitignore b/tianai-captcha-web-sdk/.gitignore new file mode 100644 index 0000000..a33b78f --- /dev/null +++ b/tianai-captcha-web-sdk/.gitignore @@ -0,0 +1,3 @@ +dist/ +node_modules/ +.idea/ diff --git a/tianai-captcha-web-sdk/LICENSE b/tianai-captcha-web-sdk/LICENSE new file mode 100644 index 0000000..9e32cde --- /dev/null +++ b/tianai-captcha-web-sdk/LICENSE @@ -0,0 +1,127 @@ + 木兰宽松许可证, 第2版 + + 木兰宽松许可证, 第2版 + 2020年1月 http://license.coscl.org.cn/MulanPSL2 + + + 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: + + 0. 定义 + + “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 + + “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 + + “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 + + “法人实体”是指提交贡献的机构及其“关联实体”。 + + “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 + + 1. 授予版权许可 + + 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 + + 2. 授予专利许可 + + 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 + + 3. 无商标许可 + + “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 + + 4. 分发限制 + + 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 + + 5. 免责声明与责任限制 + + “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 + + 6. 语言 + “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 + + 条款结束 + + 如何将木兰宽松许可证,第2版,应用到您的软件 + + 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: + + 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; + + 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; + + 3, 请将如下声明文本放入每个源文件的头部注释中。 + + Copyright (c) [Year] [name of copyright holder] + [Software Name] is licensed under Mulan PSL v2. + You can use this software according to the terms and conditions of the Mulan PSL v2. + You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 + THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + See the Mulan PSL v2 for more details. + + + Mulan Permissive Software License,Version 2 + + Mulan Permissive Software License,Version 2 (Mulan PSL v2) + January 2020 http://license.coscl.org.cn/MulanPSL2 + + Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: + + 0. Definition + + Software means the program and related documents which are licensed under this License and comprise all Contribution(s). + + Contribution means the copyrightable work licensed by a particular Contributor under this License. + + Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. + + Legal Entity means the entity making a Contribution and all its Affiliates. + + Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. + + 1. Grant of Copyright License + + Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. + + 2. Grant of Patent License + + Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. + + 3. No Trademark License + + No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. + + 4. Distribution Restriction + + You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. + + 5. Disclaimer of Warranty and Limitation of Liability + + THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 6. Language + + THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. + + END OF THE TERMS AND CONDITIONS + + How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software + + To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: + + i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; + + ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; + + iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. + + + Copyright (c) [Year] [name of copyright holder] + [Software Name] is licensed under Mulan PSL v2. + You can use this software according to the terms and conditions of the Mulan PSL v2. + You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 + THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + See the Mulan PSL v2 for more details. diff --git a/tianai-captcha-web-sdk/package-lock.json b/tianai-captcha-web-sdk/package-lock.json new file mode 100644 index 0000000..2a405e6 --- /dev/null +++ b/tianai-captcha-web-sdk/package-lock.json @@ -0,0 +1,12901 @@ +{ + "name": "webpack-demo", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "webpack-demo", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "@babel/core": "^7.22.17", + "@babel/preset-env": "^7.22.15", + "babel-loader": "^9.1.3", + "clean-webpack-plugin": "^4.0.0", + "css-loader": "^6.8.1", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.5.3", + "javascript-obfuscator": "^4.1.0", + "mini-css-extract-plugin": "^2.7.6", + "sass-loader": "^13.3.2", + "style-loader": "^3.3.3", + "terser-webpack-plugin": "^5.3.10", + "url-loader": "^4.1.1", + "webpack": "^5.88.2", + "webpack-bundle-analyzer": "^4.9.1", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.22.17.tgz", + "integrity": "sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.17", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.17", + "@babel/types": "^7.22.17", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.22.15.tgz", + "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", + "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz", + "integrity": "sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.17.tgz", + "integrity": "sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.17" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz", + "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.17.tgz", + "integrity": "sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.17" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.22.15.tgz", + "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.13", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.16", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", + "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", + "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", + "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", + "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.22.15.tgz", + "integrity": "sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.15", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.22.17.tgz", + "integrity": "sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.16", + "@babel/types": "^7.22.17", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/types": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.22.17.tgz", + "integrity": "sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.15", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@javascript-obfuscator/escodegen": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/@javascript-obfuscator/escodegen/-/escodegen-2.3.0.tgz", + "integrity": "sha512-QVXwMIKqYMl3KwtTirYIA6gOCiJ0ZDtptXqAv/8KWLG9uQU2fZqTVy7a/A5RvcoZhbDoFfveTxuGxJ5ibzQtkw==", + "dev": true, + "dependencies": { + "@javascript-obfuscator/estraverse": "^5.3.0", + "esprima": "^4.0.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/@javascript-obfuscator/estraverse": { + "version": "5.4.0", + "resolved": "https://registry.npmmirror.com/@javascript-obfuscator/estraverse/-/estraverse-5.4.0.tgz", + "integrity": "sha512-CZFX7UZVN9VopGbjTx4UXaXsi9ewoM1buL0kY7j1ftYdSs7p2spv9opxFjHlQ/QGTgh4UqufYqJJ0WKLml7b6w==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.23", + "resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.23.tgz", + "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmmirror.com/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.2", + "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.36", + "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.5.9", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.5.9.tgz", + "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmmirror.com/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/validator": { + "version": "13.11.1", + "resolved": "https://registry.npmmirror.com/@types/validator/-/validator-13.11.1.tgz", + "integrity": "sha512-d/MUkJYdOeKycmm75Arql4M5+UuXmf4cHdHKsyw1GcvnNgL6s77UkgSgJ8TE/rI5PYsnwYq5jkcWBLuN/MpQ1A==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/assert": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dev": true, + "dependencies": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-loader/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/babel-loader/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/babel-loader/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001527", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001527.tgz", + "integrity": "sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chance": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/chance/-/chance-1.1.9.tgz", + "integrity": "sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ==", + "dev": true + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/class-validator": { + "version": "0.14.0", + "resolved": "https://registry.npmmirror.com/class-validator/-/class-validator-0.14.0.tgz", + "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", + "dev": true, + "dependencies": { + "@types/validator": "^13.7.10", + "libphonenumber-js": "^1.10.14", + "validator": "^13.7.0" + } + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", + "dev": true, + "dependencies": { + "del": "^4.1.1" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.0 <6.0.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.32.2", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.32.2.tgz", + "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.10" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.509", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.509.tgz", + "integrity": "sha512-G5KlSWY0zzhANtX15tkikHl4WB7zil2Y65oT52EZUL194abjUXBZym12Ht7Bhuwm/G3LJFEqMADyv2Cks56dmg==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "node_modules/envinfo": { + "version": "7.10.0", + "resolved": "https://registry.npmmirror.com/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "dev": true + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmmirror.com/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmmirror.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/inversify": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/inversify/-/inversify-6.0.1.tgz", + "integrity": "sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/javascript-obfuscator": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/javascript-obfuscator/-/javascript-obfuscator-4.1.0.tgz", + "integrity": "sha512-ckC0VFKQ0/sFtLH9apW/ZLfsP8LuZqZhVEM4VTJ5KLzyLaodW6C1lTU8808eboDmddKyvd2uyRx5bzc0Me0GYg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@javascript-obfuscator/escodegen": "2.3.0", + "@javascript-obfuscator/estraverse": "5.4.0", + "acorn": "8.8.2", + "assert": "2.0.0", + "chalk": "4.1.2", + "chance": "1.1.9", + "class-validator": "0.14.0", + "commander": "10.0.0", + "eslint-scope": "7.1.1", + "eslint-visitor-keys": "3.3.0", + "fast-deep-equal": "3.1.3", + "inversify": "6.0.1", + "js-string-escape": "1.0.1", + "md5": "2.3.0", + "mkdirp": "2.1.3", + "multimatch": "5.0.0", + "opencollective-postinstall": "2.0.3", + "process": "0.11.10", + "reflect-metadata": "0.1.13", + "source-map-support": "0.5.21", + "string-template": "1.0.0", + "stringz": "2.1.0", + "tslib": "2.5.0" + }, + "bin": { + "javascript-obfuscator": "bin/javascript-obfuscator" + }, + "engines": { + "node": "^12.22.0 || ^14.0.0 || ^16.0.0 || ^17.0.0 || >=18.0.0" + } + }, + "node_modules/javascript-obfuscator/node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/javascript-obfuscator/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/javascript-obfuscator/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/javascript-obfuscator/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/javascript-obfuscator/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/javascript-obfuscator/node_modules/commander": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-10.0.0.tgz", + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/javascript-obfuscator/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/javascript-obfuscator/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/javascript-obfuscator/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/javascript-obfuscator/node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libphonenumber-js": { + "version": "1.10.44", + "resolved": "https://registry.npmmirror.com/libphonenumber-js/-/libphonenumber-js-1.10.44.tgz", + "integrity": "sha512-svlRdNBI5WgBjRC20GrCfbFiclbF0Cx+sCcQob/C1r57nsoq0xg8r65QbTyVyweQIlB33P+Uahyho6EMYgcOyQ==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==", + "dev": true + }, + "node_modules/lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmmirror.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mkdirp": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-2.1.3.tgz", + "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/multimatch/node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/multimatch/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmmirror.com/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + "dev": true, + "bin": { + "opencollective-postinstall": "index.js" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.29", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "dev": true, + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.77.4", + "resolved": "https://registry.npmmirror.com/sass/-/sass-1.77.4.tgz", + "integrity": "sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.3.2", + "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sirv": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy-transport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/spdy/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-template": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/string-template/-/string-template-1.0.0.tgz", + "integrity": "sha512-SLqR3GBUXuoPP5MmYtD7ompvXiG87QjT6lzOszyXjTM86Uu7At7vNnt2xgyTLq5o9T4IxTYFyGxcULqpsmsfdg==", + "dev": true + }, + "node_modules/stringz": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/stringz/-/stringz-2.1.0.tgz", + "integrity": "sha512-KlywLT+MZ+v0IRepfMxRtnSvDCMc3nR1qqCs3m/qIbSOWkNZYT8XHQA31rS3TnKp0c5xjZu3M4GY/2aRKSi/6A==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/style-loader": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/style-loader/-/style-loader-3.3.3.tgz", + "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.31.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmmirror.com/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmmirror.com/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.9.1", + "resolved": "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.14.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.14.0.tgz", + "integrity": "sha512-WR0RJE9Ehsio6U4TuM+LmunEsjQ5ncHlw4sn9ihD6RoJKZrVyH9FWV3dmnwu8B2aNib1OvG2X6adUCyFpQyWcg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "requires": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + } + }, + "@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "dev": true + }, + "@babel/core": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.22.17.tgz", + "integrity": "sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.17", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.17", + "@babel/types": "^7.22.17", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.22.15.tgz", + "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "dev": true, + "requires": { + "@babel/types": "^7.22.15", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dev": true, + "requires": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", + "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "dev": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-module-transforms": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz", + "integrity": "sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.15" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.17.tgz", + "integrity": "sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.17" + } + }, + "@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz", + "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.17.tgz", + "integrity": "sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.17" + } + }, + "@babel/helpers": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.22.15.tgz", + "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "dev": true, + "requires": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15" + } + }, + "@babel/highlight": { + "version": "7.22.13", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.22.16", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "requires": {} + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", + "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", + "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", + "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", + "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/preset-env": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.22.15.tgz", + "integrity": "sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.15", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + } + }, + "@babel/traverse": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.22.17.tgz", + "integrity": "sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.16", + "@babel/types": "^7.22.17", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.22.17", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.22.17.tgz", + "integrity": "sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.15", + "to-fast-properties": "^2.0.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@javascript-obfuscator/escodegen": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/@javascript-obfuscator/escodegen/-/escodegen-2.3.0.tgz", + "integrity": "sha512-QVXwMIKqYMl3KwtTirYIA6gOCiJ0ZDtptXqAv/8KWLG9uQU2fZqTVy7a/A5RvcoZhbDoFfveTxuGxJ5ibzQtkw==", + "dev": true, + "requires": { + "@javascript-obfuscator/estraverse": "^5.3.0", + "esprima": "^4.0.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "@javascript-obfuscator/estraverse": { + "version": "5.4.0", + "resolved": "https://registry.npmmirror.com/@javascript-obfuscator/estraverse/-/estraverse-5.4.0.tgz", + "integrity": "sha512-CZFX7UZVN9VopGbjTx4UXaXsi9ewoM1buL0kY7j1ftYdSs7p2spv9opxFjHlQ/QGTgh4UqufYqJJ0WKLml7b6w==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@polka/url": { + "version": "1.0.0-next.23", + "resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.23.tgz", + "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmmirror.com/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.44.2", + "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.36", + "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "@types/node": { + "version": "20.5.9", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.5.9.tgz", + "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==", + "dev": true + }, + "@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmmirror.com/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dev": true, + "requires": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/validator": { + "version": "13.11.1", + "resolved": "https://registry.npmmirror.com/@types/validator/-/validator-13.11.1.tgz", + "integrity": "sha512-d/MUkJYdOeKycmm75Arql4M5+UuXmf4cHdHKsyw1GcvnNgL6s77UkgSgJ8TE/rI5PYsnwYq5jkcWBLuN/MpQ1A==", + "dev": true + }, + "@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "requires": {} + }, + "@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "assert": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dev": true, + "requires": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "requires": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "caniuse-lite": { + "version": "1.0.30001527", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001527.tgz", + "integrity": "sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chance": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/chance/-/chance-1.1.9.tgz", + "integrity": "sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ==", + "dev": true + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "class-validator": { + "version": "0.14.0", + "resolved": "https://registry.npmmirror.com/class-validator/-/class-validator-0.14.0.tgz", + "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", + "dev": true, + "requires": { + "@types/validator": "^13.7.10", + "libphonenumber-js": "^1.10.14", + "validator": "^13.7.0" + } + }, + "clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "clean-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", + "dev": true, + "requires": { + "del": "^4.1.1" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "core-js-compat": { + "version": "3.32.2", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.32.2.tgz", + "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "dev": true, + "requires": { + "browserslist": "^4.21.10" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true + }, + "css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.509", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.509.tgz", + "integrity": "sha512-G5KlSWY0zzhANtX15tkikHl4WB7zil2Y65oT52EZUL194abjUXBZym12Ht7Bhuwm/G3LJFEqMADyv2Cks56dmg==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "envinfo": { + "version": "7.10.0", + "resolved": "https://registry.npmmirror.com/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", + "dev": true + }, + "es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "dev": true + }, + "es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmmirror.com/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmmirror.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "requires": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "dependencies": { + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "requires": { + "p-locate": "^6.0.0" + } + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true + }, + "pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "requires": { + "find-up": "^6.3.0" + } + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + } + } + }, + "html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "dev": true, + "optional": true, + "peer": true + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true + }, + "inversify": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/inversify/-/inversify-6.0.1.tgz", + "integrity": "sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ==", + "dev": true + }, + "ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.11" + } + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "javascript-obfuscator": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/javascript-obfuscator/-/javascript-obfuscator-4.1.0.tgz", + "integrity": "sha512-ckC0VFKQ0/sFtLH9apW/ZLfsP8LuZqZhVEM4VTJ5KLzyLaodW6C1lTU8808eboDmddKyvd2uyRx5bzc0Me0GYg==", + "dev": true, + "requires": { + "@javascript-obfuscator/escodegen": "2.3.0", + "@javascript-obfuscator/estraverse": "5.4.0", + "acorn": "8.8.2", + "assert": "2.0.0", + "chalk": "4.1.2", + "chance": "1.1.9", + "class-validator": "0.14.0", + "commander": "10.0.0", + "eslint-scope": "7.1.1", + "eslint-visitor-keys": "3.3.0", + "fast-deep-equal": "3.1.3", + "inversify": "6.0.1", + "js-string-escape": "1.0.1", + "md5": "2.3.0", + "mkdirp": "2.1.3", + "multimatch": "5.0.0", + "opencollective-postinstall": "2.0.3", + "process": "0.11.10", + "reflect-metadata": "0.1.13", + "source-map-support": "0.5.21", + "string-template": "1.0.0", + "stringz": "2.1.0", + "tslib": "2.5.0" + }, + "dependencies": { + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-10.0.0.tgz", + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + } + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "libphonenumber-js": { + "version": "1.10.44", + "resolved": "https://registry.npmmirror.com/libphonenumber-js/-/libphonenumber-js-1.10.44.tgz", + "integrity": "sha512-svlRdNBI5WgBjRC20GrCfbFiclbF0Cx+sCcQob/C1r57nsoq0xg8r65QbTyVyweQIlB33P+Uahyho6EMYgcOyQ==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==", + "dev": true + }, + "lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==", + "dev": true + }, + "lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmmirror.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "requires": { + "fs-monkey": "^1.0.4" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mkdirp": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-2.1.3.tgz", + "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", + "dev": true + }, + "mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + } + } + }, + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmmirror.com/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + "dev": true + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "postcss": { + "version": "8.4.29", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "dev": true, + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "requires": { + "resolve": "^1.20.0" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.77.4", + "resolved": "https://registry.npmmirror.com/sass/-/sass-1.77.4.tgz", + "integrity": "sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "13.3.2", + "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "dev": true, + "requires": { + "neo-async": "^2.6.2" + } + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sirv": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-template": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/string-template/-/string-template-1.0.0.tgz", + "integrity": "sha512-SLqR3GBUXuoPP5MmYtD7ompvXiG87QjT6lzOszyXjTM86Uu7At7vNnt2xgyTLq5o9T4IxTYFyGxcULqpsmsfdg==", + "dev": true + }, + "stringz": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/stringz/-/stringz-2.1.0.tgz", + "integrity": "sha512-KlywLT+MZ+v0IRepfMxRtnSvDCMc3nR1qqCs3m/qIbSOWkNZYT8XHQA31rS3TnKp0c5xjZu3M4GY/2aRKSi/6A==", + "dev": true, + "requires": { + "char-regex": "^1.0.2" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "style-loader": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/style-loader/-/style-loader-3.3.3.tgz", + "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "dev": true, + "requires": {} + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "terser": { + "version": "5.31.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + } + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmmirror.com/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "validator": { + "version": "13.11.0", + "resolved": "https://registry.npmmirror.com/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + } + }, + "webpack-bundle-analyzer": { + "version": "4.9.1", + "resolved": "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} + } + } + }, + "webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "8.14.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.14.0.tgz", + "integrity": "sha512-WR0RJE9Ehsio6U4TuM+LmunEsjQ5ncHlw4sn9ihD6RoJKZrVyH9FWV3dmnwu8B2aNib1OvG2X6adUCyFpQyWcg==", + "dev": true, + "requires": {} + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } +} diff --git a/tianai-captcha-web-sdk/package.json b/tianai-captcha-web-sdk/package.json new file mode 100644 index 0000000..e34a184 --- /dev/null +++ b/tianai-captcha-web-sdk/package.json @@ -0,0 +1,33 @@ +{ + "name": "webpack-demo", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack serve --open --mode development", + "build": "webpack --mode development", + "buildprod": "webpack --mode production --progress" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@babel/core": "^7.22.17", + "@babel/preset-env": "^7.22.15", + "babel-loader": "^9.1.3", + "clean-webpack-plugin": "^4.0.0", + "css-loader": "^6.8.1", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.5.3", + "javascript-obfuscator": "^4.1.0", + "mini-css-extract-plugin": "^2.7.6", + "sass-loader": "^13.3.2", + "style-loader": "^3.3.3", + "terser-webpack-plugin": "^5.3.10", + "url-loader": "^4.1.1", + "webpack": "^5.88.2", + "webpack-bundle-analyzer": "^4.9.1", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1" + } +} diff --git a/tianai-captcha-web-sdk/public/index-prod.html b/tianai-captcha-web-sdk/public/index-prod.html new file mode 100644 index 0000000..b4d271e --- /dev/null +++ b/tianai-captcha-web-sdk/public/index-prod.html @@ -0,0 +1,28 @@ + + + + + + + Document + + + + + +
+ + + + + diff --git a/tianai-captcha-web-sdk/public/index.html b/tianai-captcha-web-sdk/public/index.html new file mode 100644 index 0000000..4aeba4c --- /dev/null +++ b/tianai-captcha-web-sdk/public/index.html @@ -0,0 +1,101 @@ + + + + + + + Document + + + + + +
+ +
+

用户登录

+
+ 用户名 + xxxxx +
+
+ 密码 + xxxxx +
+ + + + +
+ + + + + diff --git a/tianai-captcha-web-sdk/readme.md b/tianai-captcha-web-sdk/readme.md new file mode 100644 index 0000000..c3667da --- /dev/null +++ b/tianai-captcha-web-sdk/readme.md @@ -0,0 +1,108 @@ +# (captcha-web-sdk) + +# ([TIANAI-CAPTCHA)](https://gitee.com/tianai/tianai-captcha)验证码前端SDK + + + +| 条目 | | +| -------- | ------------------------------------------------------------ | +| 兼容性 | Chrome、Firefox、Safari、Opera、主流手机浏览器、iOS 及 Android上的内嵌Webview | +| 框架支持 | H5、Angular、React、Vue2、Vue3 | + + + +## 安装 + +1. 将打包好的`tac`目录放到自己项目中,如果是vue、react等框架,将tac目录放到public目录中、或者放到某个可以访问到地方,比如oss之类的可以被浏览器访问到的地方 (tac下载地址 [https://gitee.com/tianai/tianai-captcha-web-sdk/releases/tag/1.2](https://gitee.com/tianai/tianai-captcha-web-sdk/releases/tag/1.2)) + +2. 引入初始化函数 (load.js下载地址 [https://minio.tianai.cloud/public/static/captcha/js/load.min.js](https://minio.tianai.cloud/public/static/captcha/js/load.min.js)) 可自己将load.js下载到本地 + + ```html + + ``` + + **注: 如果是web框架,将该引入代码放到 `public/index.html`** + +## 使用方法 + +2. 创建一个div块用于渲染验证码, 该div用于装载验证码 + + ```html +
+ ``` + +3. 在需要调用验证码的时候执行加载验证码方法 + + ```js + function login() { + // config 对象为TAC验证码的一些配置和验证的回调 + const config = { + // 生成接口 (必选项,必须配置, 要符合tianai-captcha默认验证码生成接口规范) + requestCaptchaDataUrl: "/gen", + // 验证接口 (必选项,必须配置, 要符合tianai-captcha默认验证码校验接口规范) + validCaptchaUrl: "/check", + // 验证码绑定的div块 (必选项,必须配置) + bindEl: "#captcha-box", + // 验证成功回调函数(必选项,必须配置) + validSuccess: (res, c, tac) => { + // 销毁验证码服务 + tac.destroyWindow(); + console.log("验证成功,后端返回的数据为", res); + // 调用具体的login方法 + login(res.data.token) + }, + // 验证失败的回调函数(可忽略,如果不自定义 validFail 方法时,会使用默认的) + validFail: (res, c, tac) => { + console.log("验证码验证失败回调...") + // 验证失败后重新拉取验证码 + tac.reloadCaptcha(); + }, + // 刷新按钮回调事件 + btnRefreshFun: (el, tac) => { + console.log("刷新按钮触发事件...") + tac.reloadCaptcha(); + }, + // 关闭按钮回调事件 + btnCloseFun: (el, tac) => { + console.log("关闭按钮触发事件...") + tac.destroyWindow(); + } + } + // 一些样式配置, 可不传 + let style = { + logoUrl: null;// 去除logo + // logoUrl: "/xx/xx/xxx.png" // 替换成自定义的logo + } + // 参数1 为 tac文件是目录地址, 目录里包含 tac的js和css等文件 + // 参数2 为 tac验证码相关配置 + // 参数3 为 tac窗口一些样式配置 + window.initTAC("./tac", config, style).then(tac => { + tac.init(); // 调用init则显示验证码 + }).catch(e => { + console.log("初始化tac失败", e); + }) + } + ``` + +### 对滑块的按钮和背景设置为自定义的一些样式 + +```js +// 这里分享一些作者自己调的样式供参考 +const style = { + // 按钮样式 + btnUrl: "https://minio.tianai.cloud/public/captcha-btn/btn3.png", + // 背景样式 + bgUrl: "https://minio.tianai.cloud/public/captcha-btn/btn3-bg.jpg", + // logo地址 + logoUrl: "https://minio.tianai.cloud/public/static/captcha/images/logo.png", + // 滑动边框样式 + moveTrackMaskBgColor: "#f7b645", + moveTrackMaskBorderColor: "#ef9c0d" + } + window.initTAC("./tac", config, style).then(tac => { + tac.init(); // 调用init则显示验证码 + }).catch(e => { + console.log("初始化tac失败", e); + }) +``` + diff --git a/tianai-captcha-web-sdk/src/assets/images/dun.jpeg b/tianai-captcha-web-sdk/src/assets/images/dun.jpeg new file mode 100644 index 0000000..347a371 Binary files /dev/null and b/tianai-captcha-web-sdk/src/assets/images/dun.jpeg differ diff --git a/tianai-captcha-web-sdk/src/assets/images/icon.png b/tianai-captcha-web-sdk/src/assets/images/icon.png new file mode 100644 index 0000000..586a123 Binary files /dev/null and b/tianai-captcha-web-sdk/src/assets/images/icon.png differ diff --git a/tianai-captcha-web-sdk/src/assets/images/loading.gif b/tianai-captcha-web-sdk/src/assets/images/loading.gif new file mode 100644 index 0000000..2a12a7f Binary files /dev/null and b/tianai-captcha-web-sdk/src/assets/images/loading.gif differ diff --git a/tianai-captcha-web-sdk/src/captcha/captcha.js b/tianai-captcha-web-sdk/src/captcha/captcha.js new file mode 100644 index 0000000..4237238 --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/captcha.js @@ -0,0 +1,183 @@ +import "./captcha.scss" +import Slider from "./slider/slider" +import Rotate from "./rotate/rotate"; +import Concat from "./concat/concat"; +import Disable from "./disable/disable"; +import WordImageClick from "./word_image_click/word_image_click"; +import {CaptchaConfig, wrapConfig, wrapStyle} from "./config/config"; +import {clearAllPreventDefault} from "./common/common"; +const template = + ` +
+
+
+
+
+ +
+ +
+
+
+
+ `; +function createCaptchaByType(type, tac) { + const box = tac.config.domBindEl.find("#tianai-captcha-box"); + const styleConfig = tac.style; + switch (type) { + case "SLIDER": + return new Slider(box, styleConfig); + case "ROTATE": + return new Rotate(box, styleConfig); + case "CONCAT": + return new Concat(box, styleConfig); + case "WORD_IMAGE_CLICK": + return new WordImageClick(box, styleConfig); + case "DISABLED": + return new Disable(box, styleConfig); + default: + return null; + } +} +class TianAiCaptcha { + constructor(config, style) { + this.config = wrapConfig(config); + if (this.config.btnRefreshFun) { + this.btnRefreshFun = this.config.btnRefreshFun; + } + if (this.config.btnCloseFun) { + this.btnCloseFun = this.config.btnCloseFun; + } + this.style = wrapStyle(style); + } + + init() { + this.destroyWindow(); + this.config.domBindEl.append(template); + this.domTemplate = this.config.domBindEl.find("#tianai-captcha-parent"); + clearAllPreventDefault(this.domTemplate); + this.loadStyle(); + // 绑定按钮事件 + this.config.domBindEl.find("#tianai-captcha-slider-refresh-btn").click((el) => { + this.btnRefreshFun(el, this); + }); + this.config.domBindEl.find("#tianai-captcha-slider-close-btn").click((el) => { + this.btnCloseFun(el, this); + }); + // 加载验证码 + this.reloadCaptcha(); + return this; + } + + btnRefreshFun(el, tac) { + tac.reloadCaptcha(); + } + btnCloseFun(el, tac) { + tac.destroyWindow(); + } + reloadCaptcha() { + this.showLoading(); + this.destroyCaptcha(() => { + this.createCaptcha(); + }) + } + showLoading() { + this.config.domBindEl.find("#tianai-captcha-loading").css("display", "block"); + } + + closeLoading() { + this.config.domBindEl.find("#tianai-captcha-loading").css("display", "none"); + } + + loadStyle() { + // 设置样式 + const bgUrl = this.style.bgUrl; + const logoUrl = this.style.logoUrl; + if (bgUrl) { + // 背景图片 + this.config.domBindEl.find("#tianai-captcha-bg-img").css("background-image", "url(" + bgUrl + ")"); + } + if (logoUrl && logoUrl !== "") { + // logo + this.config.domBindEl.find("#tianai-captcha-logo").attr("src", logoUrl); + } else if (logoUrl === null){ + // 删除logo + this.config.domBindEl.find("#tianai-captcha-logo").css("display", "none"); + } + } + + destroyWindow() { + if (this.C) { + this.C.destroy(); + this.C = undefined; + } + if (this.domTemplate) { + this.domTemplate.remove(); + } + } + + openCaptcha() { + setTimeout(() => { + + this.C.el.css("transform", "translateX(0)") + }, 10) + } + + createCaptcha() { + this.config.requestCaptchaData().then(data => { + this.closeLoading(); + if (!data.code) { + throw new Error("[TAC] 后台验证码接口数据错误!!!"); + } + let captchaType = data.code === 200 ? data.data?.type : "DISABLED" + const captcha = createCaptchaByType(captchaType, this); + if (captcha == null) { + throw new Error("[TAC] 未知的验证码类型[" + captchaType + "]"); + } + captcha.init(data, (d, c) => { + // 验证 + const currentCaptchaData = c.currentCaptchaData; + const data = { + bgImageWidth: currentCaptchaData.bgImageWidth, + bgImageHeight: currentCaptchaData.bgImageHeight, + templateImageWidth: currentCaptchaData.templateImageWidth, + templateImageHeight: currentCaptchaData.templateImageHeight, + startTime: currentCaptchaData.startTime.getTime(), + stopTime: currentCaptchaData.stopTime.getTime(), + trackList: currentCaptchaData.trackList, + }; + if (c.type === 'ROTATE_DEGREE' || c.type === 'ROTATE') { + data.bgImageWidth = c.currentCaptchaData.end; + } + if (currentCaptchaData.data) { + data.data = currentCaptchaData.data; + } + // 清空 + const id = c.currentCaptchaData.currentCaptchaId; + c.currentCaptchaData = undefined; + // 调用验证接口 + this.config.validCaptcha(id, data, c, this) + }) + this.C = captcha; + this.openCaptcha() + }); + } + + destroyCaptcha(callback) { + if (this.C) { + this.C.el.css("transform", "translateX(300px)") + setTimeout(() => { + this.C.destroy(); + if (callback) { + callback(); + } + }, 500) + } else { + callback(); + } + } + + +} + +export {TianAiCaptcha, CaptchaConfig} diff --git a/tianai-captcha-web-sdk/src/captcha/captcha.scss b/tianai-captcha-web-sdk/src/captcha/captcha.scss new file mode 100644 index 0000000..6252b93 --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/captcha.scss @@ -0,0 +1,107 @@ +#tianai-captcha-parent { + box-shadow: 0 0 11px 0 #999999; + width: 318px; + height: 318px; + overflow: hidden; + position: relative; + z-index: 997; + box-sizing: border-box; + border-radius: 5px; + padding: 8px; + #tianai-captcha-box { + height: 260px; + width: 100%; + position: relative; + overflow: hidden; + .loading { + width: 120px; + height: 20px; + -webkit-mask: linear-gradient(90deg, #000 70%, #0000 0) 0/20%; + background: linear-gradient(#f7b645 0 0) 0 / 0% no-repeat #dddddd6b; + animation: cartoon 1s infinite steps(6); + margin: 120px auto; + @keyframes cartoon { + 100% { + background-size: 120%; + } + } + } + #tianai-captcha { + transform-style: preserve-3d; + will-change: transform; + transition-duration: .45s; + //transition-timing-function: cubic-bezier(0.36, 0.3, 0.42, 1.5); + transform: translateX(-300px); + } + } + #tianai-captcha-bg-img { + background-color: #fff; + background-position: top; + background-size: cover; + z-index: -1; + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + border-radius: 6px; + //background-image: url(""); + } + + .slider-bottom { + .close-btn { + width: 20px; + height: 20px; + background-image: url("@/assets/images/icon.png"); + background-repeat: no-repeat; + background-position: 0 -14px; + float: right; + margin-right: 2px; + cursor: pointer; + } + .refresh-btn { + width: 20px; + height: 20px; + background-image: url("@/assets/images/icon.png"); + background-position: 0 -167px; + background-repeat: no-repeat; + float: right; + margin-right: 10px; + cursor: pointer; + } + .logo { + height: 30px; + float: left; + } + height: 19px; + width: 100%; + } + .slider-move-shadow { + animation: myanimation 2s infinite; + height: 100%; + width: 5px; + background-color: #fff; + position: absolute; + top: 0; + left: 0; + filter: opacity(0.5); + box-shadow: 1px 1px 1px #fff; + border-radius: 50%; + } + #tianai-captcha-slider-move-track-mask { + border-width: 1px; + border-style: solid; + border-color: #00f4ab; + + width: 0; + height: 32px; + background-color: #a9ffe5; + opacity: .5; + position: absolute; + top: -1px; + left: -1px; + border-radius: 5px; + } + +} + diff --git a/tianai-captcha-web-sdk/src/captcha/common/common.js b/tianai-captcha-web-sdk/src/captcha/common/common.js new file mode 100644 index 0000000..78f18e9 --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/common/common.js @@ -0,0 +1,464 @@ +/** 是否打印日志 */ +var isPrintLog = false; + +function printLog(params) { + if (isPrintLog) { + console.log(JSON.stringify(params)); + } +} + +/** + * 清除默认事件 + * @param event event + */ +function clearPreventDefault(event) { + if (event.preventDefault) { + event.preventDefault(); + } +} + +/** + * 阻止某div默认事件 + * @param dom + */ +function clearAllPreventDefault(dom) { + Dom(dom).each((el) => { + // 手机端 + el.addEventListener('touchmove', clearPreventDefault, {passive: false}); + // pc端 + el.addEventListener('mousemove', clearPreventDefault, {passive: false}); + }); +} + +function reductionAllPreventDefault(dom) { + Dom(dom).each(function (el) { + el.removeEventListener('touchmove', clearPreventDefault); + el.addEventListener('mousemove', clearPreventDefault); + }); +} + +/** + * 获取当前坐标 + * @param event 事件 + * @returns {{x: number, y: number}} + */ +function getCurrentCoordinate(event) { + if (event.pageX !== null && event.pageX !== undefined) { + return { + x: Math.round(event.pageX), + y: Math.round(event.pageY) + } + } + let targetTouches; + if (event.changedTouches) { + // 抬起事件 + targetTouches = event.changedTouches; + } else if (event.targetTouches) { + // pc 按下事件 + targetTouches = event.targetTouches; + } else if (event.originalEvent && event.originalEvent.targetTouches) { + // 鼠标触摸事件 + targetTouches = event.originalEvent.targetTouches; + } + if (targetTouches[0].pageX !== null && targetTouches[0].pageX !== undefined) { + return { + x: Math.round(targetTouches[0].pageX), + y: Math.round(targetTouches[0].pageY) + } + } + return { + x: Math.round(targetTouches[0].clientX), + y: Math.round(targetTouches[0].clientY) + } +} + +function down(currentCaptcha, event) { + // debugger + const coordinate = getCurrentCoordinate(event); + let startX = coordinate.x; + let startY = coordinate.y; + currentCaptcha.currentCaptchaData.startX = startX; + currentCaptcha.currentCaptchaData.startY = startY; + const trackList = currentCaptcha.currentCaptchaData.trackList; + currentCaptcha.currentCaptchaData.startTime = new Date(); + const startTime = currentCaptcha.currentCaptchaData.startTime; + + trackList.push({ + x: coordinate.x, + y: coordinate.y, + type: "down", + t: (new Date().getTime() - startTime.getTime()) + }); + printLog(["start", startX, startY]) + currentCaptcha.__m__ = move.bind(null, currentCaptcha); + currentCaptcha.__u__ = up.bind(null, currentCaptcha); + // pc + window.addEventListener("mousemove", currentCaptcha.__m__); + window.addEventListener("mouseup", currentCaptcha.__u__); + // 手机端 + window.addEventListener("touchmove", currentCaptcha.__m__, false); + window.addEventListener("touchend", currentCaptcha.__u__, false); + if (currentCaptcha && currentCaptcha.doDown) { + currentCaptcha.doDown(event, currentCaptcha) + } +} + +function move(currentCaptcha, event) { + if (event.touches && event.touches.length > 0) { + event = event.touches[0]; + } + // debugger + const coordinate = getCurrentCoordinate(event); + let pageX = coordinate.x; + let pageY = coordinate.y; + const startX = currentCaptcha.currentCaptchaData.startX; + const startY = currentCaptcha.currentCaptchaData.startY; + const startTime = currentCaptcha.currentCaptchaData.startTime; + const end = currentCaptcha.currentCaptchaData.end; + const bgImageWidth = currentCaptcha.currentCaptchaData.bgImageWidth; + const trackList = currentCaptcha.currentCaptchaData.trackList; + let moveX = pageX - startX; + let moveY = pageY - startY; + const track = { + x: coordinate.x, + y: coordinate.y, + type: "move", + t: (new Date().getTime() - startTime.getTime()) + }; + trackList.push(track); + if (moveX < 0) { + moveX = 0; + } else if (moveX > end) { + moveX = end; + } + currentCaptcha.currentCaptchaData.moveX = moveX; + currentCaptcha.currentCaptchaData.moveY = moveY; + if (currentCaptcha.doMove) { + currentCaptcha.doMove(event, currentCaptcha); + } + printLog(["move", track]) +} +function destroyEvent(currentCaptcha) { + if (currentCaptcha) { + if (currentCaptcha.__m__) { + window.removeEventListener("mousemove", currentCaptcha.__m__); + window.removeEventListener("touchmove", currentCaptcha.__m__); + } + if (currentCaptcha.__u__) { + window.removeEventListener("mouseup", currentCaptcha.__u__); + window.removeEventListener("touchend", currentCaptcha.__u__); + } + } +} + +function up(currentCaptcha, event) { + destroyEvent(currentCaptcha); + const coordinate = getCurrentCoordinate(event); + currentCaptcha.currentCaptchaData.stopTime = new Date(); + const startTime = currentCaptcha.currentCaptchaData.startTime; + const trackList = currentCaptcha.currentCaptchaData.trackList; + + const track = { + x: coordinate.x, + y: coordinate.y, + type: "up", + t: (new Date().getTime() - startTime.getTime()) + } + + trackList.push(track); + printLog(["up", track]) + printLog(["tracks", trackList]) + if (currentCaptcha.doUp) { + currentCaptcha.doUp(event, currentCaptcha) + } + currentCaptcha.endCallback(currentCaptcha.currentCaptchaData, currentCaptcha); +} + +function initConfig(bgImageWidth, bgImageHeight, templateImageWidth, templateImageHeight, end) { + // bugfix 图片宽高可能会有小数情况,强转一下整数 + const currentCaptchaConfig = { + startTime: new Date(), + trackList: [], + movePercent: 0, + clickCount: 0, + bgImageWidth: Math.round(bgImageWidth), + bgImageHeight: Math.round(bgImageHeight), + templateImageWidth: Math.round(templateImageWidth), + templateImageHeight: Math.round(templateImageHeight), + end: end + } + printLog(["init", currentCaptchaConfig]); + return currentCaptchaConfig; +} + +function closeTips(el, callback) { + const tipEl = Dom(el).find("#tianai-captcha-tips"); + tipEl.removeClass("tianai-captcha-tips-on") + // tipEl.removeClass("tianai-captcha-tips-success") + // tipEl.removeClass("tianai-captcha-tips-error") + // 延时 + if (callback) { + setTimeout(callback, .35); + } +} + +function showTips(el, msg, type, callback) { + const tipEl = Dom(el).find("#tianai-captcha-tips"); + tipEl.text(msg); + if (type === 1) { + // 成功 + tipEl.removeClass("tianai-captcha-tips-error") + tipEl.addClass("tianai-captcha-tips-success") + } else { + // 失败 + tipEl.removeClass("tianai-captcha-tips-success") + tipEl.addClass("tianai-captcha-tips-error") + } + tipEl.addClass("tianai-captcha-tips-on"); + // 延时 + setTimeout(callback, 1000); +} + +class CommonCaptcha { + showTips(msg, type, callback) { + showTips(this.el, msg, type, callback) + } + + closeTips(msg, callback) { + closeTips(this.el, msg, callback) + } +} + +function Dom(domStr, dom) { + return new DomEl(domStr, dom); +} + +class DomEl { + constructor(domStr, dom) { + if (dom && typeof dom === 'object' && typeof dom.nodeType !== 'undefined') { + this.dom = dom; + this.domStr = domStr; + return; + } + if (domStr instanceof DomEl) { + this.dom = domStr.dom; + this.domStr = domStr.domStr; + } else if (typeof domStr === "string") { + this.dom = document.querySelector(domStr) + this.domStr = domStr; + } else if (typeof document === 'object' && typeof document.nodeType !== 'undefined') { + this.dom = domStr; + this.domStr = domStr.nodeName; + } else { + throw new Error("不支持的类型"); + } + } + + each(callback) { + this.getTarget().querySelectorAll("*").forEach(callback); + } + + removeClass(className) { + let element = this.getTarget(); + if (element.classList) { + // 使用 classList API 移除类 + element.classList.remove(className); + } else { + // 兼容旧版本浏览器 + const currentClass = element.className; + const regex = new RegExp('(?:^|\\s)' + className + '(?!\\S)', 'g'); + element.className = currentClass.replace(regex, ''); + } + return this; + } + + addClass(className) { + const element = this.getTarget(); + if (element.classList) { + // 使用 classList API 添加类 + element.classList.add(className); + } else { + // 兼容旧版本浏览器 + let currentClass = element.className; + if (currentClass.indexOf(className) === -1) { + element.className = currentClass + ' ' + className; + } + } + return this; + } + + find(str) { + const el = this.getTarget().querySelector(str); + if (el) { + return new DomEl(str, el); + } + return null; + } + + children(selector) { + const childNodes = this.getTarget().childNodes; + for (let i = 0; i < childNodes.length; i++) { + if (childNodes[i].nodeType === 1 && childNodes[i].matches(selector)) { + return new DomEl(selector, childNodes[i]); + } + } + return null; + } + + remove() { + this.getTarget().remove(); + return null; + } + + css(property, value) { + if (typeof property === 'string' && typeof value === 'string') { + // 设置单个属性 + this.getTarget().style[property] = value; + } else if (typeof property === 'object') { + // 设置多个属性 + for (var prop in property) { + if (property.hasOwnProperty(prop)) { + this.getTarget().style[prop] = property[prop]; + } + } + } else if (typeof property === 'string' && typeof value === 'undefined') { + // 获取单个属性 + return window.getComputedStyle(element)[property]; + } + } + + attr(attributeName, value) { + if (value === undefined) { + // 如果未提供值,则返回属性的当前值 + return this.getTarget().getAttribute(attributeName); + } else { + // 如果提供了值,则设置属性的值 + this.getTarget().setAttribute(attributeName, value); + } + return this; + } + + text(str) { + this.getTarget().innerText = str; + return this; + } + + html(str) { + this.getTarget().innerHtml = str; + return this; + } + + is(dom) { + if (dom && typeof dom === 'object' && typeof dom.nodeType !== 'undefined') { + return this.dom === dom; + } + if (dom instanceof DomEl) { + return this.dom === dom.dom; + } + } + + append(content) { + if (typeof content === 'string') { + this.getTarget().insertAdjacentHTML("beforeend", content); + } else if (content instanceof HTMLElement) { + this.getTarget().appendChild(content); + } else { + throw new Error('Invalid content type'); + } + return this; + } + + click(fun) { + this.on("click", fun); + return this; + } + + mousedown(fun) { + this.on("mousedown", fun); + return this; + } + + touchstart(fun) { + this.on("touchstart", fun); + return this; + } + + on(eventType, fun) { + this.getTarget().addEventListener(eventType, fun, {passive: true}); + return this; + } + + width() { + return this.getTarget().offsetWidth; + } + + height() { + return this.getTarget().offsetHeight; + } + + getTarget() { + if (this.dom) { + return this.dom; + } + throw new Error("dom不存在: [" + this.domStr + "]"); + } +} + +function http(options) { + return new Promise(function (resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open(options.method || 'GET', options.url); + // 设置请求头 + if (options.headers) { + for (const header in options.headers) { + if (options.headers.hasOwnProperty(header)) { + xhr.setRequestHeader(header, options.headers[header]); + } + } + } + xhr.onreadystatechange = function () { + if (xhr.readyState === XMLHttpRequest.DONE) { + if (xhr.status >= 200 && xhr.status <= 500) { + const contentType = xhr.getResponseHeader('Content-Type'); + if (contentType && contentType.indexOf('application/json') !== -1) { + resolve(JSON.parse(xhr.responseText)); + } else { + resolve(xhr.responseText); + } + } else { + reject(new Error('Request failed with status: ' + xhr.status)); + } + } + }; + xhr.onerror = function () { + reject(new Error('Network Error')); + }; + xhr.send(options.data); + }); +} + +function isEmptyObject(obj) { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + return false; // 对象不为空 + } + } + return true; // 对象为空 +} + + +export { + isEmptyObject, + http, + Dom, + DomEl, + CommonCaptcha, + clearAllPreventDefault, + down, + move, + up, + initConfig, + showTips, + closeTips, + destroyEvent +} diff --git a/tianai-captcha-web-sdk/src/captcha/common/common.scss b/tianai-captcha-web-sdk/src/captcha/common/common.scss new file mode 100644 index 0000000..80722ea --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/common/common.scss @@ -0,0 +1,87 @@ +#tianai-captcha { + text-align: left; + box-sizing: content-box; + width: 300px; + height: 260px; + z-index: 999; + .slider-bottom .logo { + height: 30px; + } + .slider-bottom { + height: 19px; + width: 100%; + } + .content { + .tianai-captcha-tips { + height: 25px; + width: 100%; + position: absolute; + bottom: -25px; + left: 0; + z-index: 999; + font-size: 15px; + line-height: 25px; + /*background-color: #FF5D39;*/ + color: #fff; + text-align: center; + /* transform: translateY(0px); */ + /* display: none; */ + /* transition: max-height 0.5s; */ + transition: bottom .3s ease-in-out; + } + .tianai-captcha-tips.tianai-captcha-tips-error { + background-color: #FF5D39; + } + .tianai-captcha-tips.tianai-captcha-tips-success { + background-color: #39C522; + } + .tianai-captcha-tips.tianai-captcha-tips-on { + bottom: 0; + } + + #tianai-captcha-loading { + z-index: 9999; + background-color: #f5f5f5; + text-align: center; + height: 100%; + overflow: hidden; + position: relative; + display: flex; + justify-content: center; + align-items: center; + img { + display: block; + width: 45px; + height: 45px; + } + } + } + #tianai-captcha-slider-bg-canvas { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + border-radius: 5px; + } + #tianai-captcha-slider-bg-div{ + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + border-radius: 5px; + .tianai-captcha-slider-bg-div-slice { + position: absolute; + } + } +} +@keyframes myanimation { + from { + left: 0; + } + to { + left: 289px; + } +} + diff --git a/tianai-captcha-web-sdk/src/captcha/concat/concat.js b/tianai-captcha-web-sdk/src/captcha/concat/concat.js new file mode 100644 index 0000000..599d6a3 --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/concat/concat.js @@ -0,0 +1,111 @@ +import "../common/common.scss" +import "@/captcha/slider/slider.scss" +import "./concat.scss" +import {Dom, CommonCaptcha, clearAllPreventDefault, down, initConfig, destroyEvent} from "../common/common.js" + + +const TYPE = "CONCAT"; + +function getTemplate(styleConfig) { + return ` +
+
+ 拖动滑块完成拼图 +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+ `; +} + +class Concat extends CommonCaptcha { + constructor(divId, styleConfig) { + super(); + this.boxEl = Dom(divId); + this.styleConfig = styleConfig; + this.type = TYPE; + this.currentCaptchaData = {} + } + + init(captchaData, endCallback, loadSuccessCallback) { + // 重载样式 + this.destroy(); + this.boxEl.append(getTemplate(this.styleConfig)); + this.el = this.boxEl.find("#tianai-captcha"); + this.loadStyle(); + // 按钮绑定事件 + this.el.find("#tianai-captcha-slider-move-btn").mousedown(down.bind(null,this)); + this.el.find("#tianai-captcha-slider-move-btn").touchstart(down.bind(null,this)); + clearAllPreventDefault(this.el); + // 绑定全局 + window.currentCaptcha = this; + // 载入验证码 + this.loadCaptchaForData(this, captchaData); + this.endCallback = endCallback; + if (loadSuccessCallback) { + // 加载成功 + loadSuccessCallback(this); + } + return this; + } + + destroy() { + destroyEvent(); + const existsCaptchaEl = this.boxEl.children("#tianai-captcha"); + if (existsCaptchaEl) { + existsCaptchaEl.remove(); + } + } + + doMove() { + const moveX = this.currentCaptchaData.moveX; + this.el.find("#tianai-captcha-slider-move-btn").css("transform", "translate(" + moveX + "px, 0px)") + this.el.find("#tianai-captcha-slider-concat-img-div").css("background-position-x", moveX + "px"); + this.el.find("#tianai-captcha-slider-move-track-mask").css("width", moveX + "px") + } + + loadStyle() { + let sliderImg = ""; + let moveTrackMaskBorderColor = "#00f4ab"; + let moveTrackMaskBgColor = "#a9ffe5"; + const styleConfig = this.styleConfig; + if (styleConfig) { + sliderImg = styleConfig.btnUrl; + moveTrackMaskBgColor = styleConfig.moveTrackMaskBgColor; + moveTrackMaskBorderColor = styleConfig.moveTrackMaskBorderColor; + } + this.el.find(".slider-move .slider-move-btn").css("background-image", "url(" + sliderImg + ")"); + // this.el.find("#tianai-captcha-slider-move-track-font").text(title); + this.el.find("#tianai-captcha-slider-move-track-mask").css("border-color", moveTrackMaskBorderColor); + this.el.find("#tianai-captcha-slider-move-track-mask").css("background-color", moveTrackMaskBgColor); + } + + loadCaptchaForData(that, data) { + const bgImg = that.el.find(".tianai-captcha-slider-concat-bg-img"); + const sliderImg = that.el.find("#tianai-captcha-slider-concat-img-div"); + bgImg.css("background-image", "url(" + data.data.backgroundImage + ")"); + sliderImg.css("background-image", "url(" + data.data.backgroundImage + ")"); + sliderImg.css("background-position", "0px 0px"); + var backgroundImageHeight = data.data.backgroundImageHeight; + var height = ((backgroundImageHeight - data.data.data.randomY) / backgroundImageHeight) * 180; + sliderImg.css("height", height+"px"); + + that.currentCaptchaData = initConfig(bgImg.width(), bgImg.height(), sliderImg.width(), sliderImg.height(), 300 - 63 + 5); + that.currentCaptchaData.currentCaptchaId = data.data.id; + } +} + +export default Concat; diff --git a/tianai-captcha-web-sdk/src/captcha/concat/concat.scss b/tianai-captcha-web-sdk/src/captcha/concat/concat.scss new file mode 100644 index 0000000..ef645bc --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/concat/concat.scss @@ -0,0 +1,17 @@ +#tianai-captcha.tianai-captcha-concat { + .tianai-captcha-slider-concat-img-div { + background-size: 100% 180px; + position: absolute; + transform: translate(0px, 0px); + /* border-bottom: 1px solid blue; */ + z-index: 1; + width: 100%; + } + .tianai-captcha-slider-concat-bg-img { + width: 100%; + height: 100%; + position: absolute; + transform: translate(0px, 0px); + background-size: 100% 180px; + } +} diff --git a/tianai-captcha-web-sdk/src/captcha/config/config.js b/tianai-captcha-web-sdk/src/captcha/config/config.js new file mode 100644 index 0000000..862d5ed --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/config/config.js @@ -0,0 +1,211 @@ +import StyleConfig from "./styleConfig"; +import {Dom,http} from "../common/common"; +class CaptchaConfig { + constructor(args) { + if (!args.bindEl) { + throw new Error("[TAC] 必须配置 [bindEl]用于将验证码绑定到该元素上"); + } + if (!args.requestCaptchaDataUrl) { + throw new Error("[TAC] 必须配置 [requestCaptchaDataUrl]请求验证码接口"); + } + if (!args.validCaptchaUrl) { + throw new Error("[TAC] 必须配置 [validCaptchaUrl]验证验证码接口"); + } + this.bindEl = args.bindEl; + this.domBindEl = Dom(args.bindEl); + this.requestCaptchaDataUrl = args.requestCaptchaDataUrl; + this.validCaptchaUrl = args.validCaptchaUrl; + if (args.validSuccess) { + this.validSuccess = args.validSuccess; + } + if (args.validFail) { + this.validFail = args.validFail; + } + if (args.requestHeaders) { + this.requestHeaders = args.requestHeaders + }else { + this.requestHeaders = {} + } + if (args.btnCloseFun) { + this.btnCloseFun = args.btnCloseFun; + } + if (args.btnRefreshFun) { + this.btnRefreshFun = args.btnRefreshFun; + } + this.requestChain = []; + // 时间戳转换 + this.timeToTimestamp = args.timeToTimestamp || true; + this.insertRequestChain(0, { + preRequest(type, param, c, tac) { + if (this.timeToTimestamp && param.data) { + for (let key in param.data){ + // 将date全部转换为时间戳 + if (param.data[key] instanceof Date) { + param.data[key] = param.data[key].getTime(); + } + } + } + return true; + } + }) + } + addRequestChain(fun) { + this.requestChain.push(fun); + } + insertRequestChain(index,chain) { + this.requestChain.splice(index, 0, chain); + } + removeRequestChain(index) { + this.requestChain.splice(index, 1); + } + requestCaptchaData() { + const requestParam = {} + requestParam.headers = this.requestHeaders || {}; + requestParam.data = {}; + // 设置默认值 + requestParam.headers["Content-Type"] = "application/json;charset=UTF-8"; + requestParam.method="POST"; + requestParam.url = this.requestCaptchaDataUrl; + // 请求前装载参数 + this._preRequest("requestCaptchaData", requestParam); + // 发送请求 + const request = this.doSendRequest(requestParam); + // 返回结果 + return request.then(res => { + // 装返回结果 + this._postRequest("requestCaptchaData", requestParam, res); + // 返回结果 + return res; + }); + } + + doSendRequest(requestParam) { + // 如果content-type是json,那么data就是json字符串, 这里直接匹配所有header是否包含application/json + if (requestParam.headers ) { + for (const key in requestParam.headers){ + if(requestParam.headers[key].indexOf("application/json") > -1) { + if (typeof requestParam.data !== "string") { + requestParam.data = JSON.stringify(requestParam.data); + } + break; + } + } + } + return http(requestParam).then(res => { + try { + return JSON.parse(res); + }catch (e) { + return res; + } + }) + } + + _preRequest(type, requestParam, c, tac) { + for (let i = 0; i < this.requestChain.length; i++) { + const r = this.requestChain[i]; + if (r.preRequest) { + if (!r.preRequest(type, requestParam, this, c, tac)) { + break; + } + } + } + + } + + _postRequest(type, requestParam, res, c, tac) { + for (let i = 0; i < this.requestChain.length; i++) { + const r = this.requestChain[i]; + // 判断r是否存圩postRequest方法 + if (r.postRequest) { + if (!r.postRequest(type, requestParam, res, this, c, tac)) { + break; + } + } + } + } + + validCaptcha(currentCaptchaId, data, c, tac) { + const sendParam = { + id: currentCaptchaId, + data: data + }; + let requestParam = {}; + requestParam.headers = this.requestHeaders || {}; + requestParam.data = sendParam; + requestParam.headers["Content-Type"] = "application/json;charset=UTF-8"; + requestParam.method="POST"; + requestParam.url = this.validCaptchaUrl; + + this._preRequest("validCaptcha", requestParam, c, tac); + const request = this.doSendRequest(requestParam); + return request.then(res => { + this._postRequest("validCaptcha", requestParam, res, c, tac); + return res; + }).then(res => { + if (res.code == 200) { + const useTimes = (data.stopTime - data.startTime) / 1000; + c.showTips(`验证成功,耗时${useTimes}秒`, 1, () => this.validSuccess(res, c, tac)); + } else { + let tipMsg = "验证失败,请重新尝试!"; + if (res.code) { + if (res.code != 4001) { + tipMsg = "验证码被黑洞吸走了!"; + } + } + c.showTips(tipMsg, 0, () => this.validFail(res, c, tac)); + } + }).catch(e => { + let tipMsg = c.styleConfig.i18n.tips_error; + if (e.code && e.code != 200) { + if (res.code != 4001) { + tipMsg = c.styleConfig.i18n.tips_4001; + } + c.showTips(tipMsg, 0, () => this.validFail(res, c, tac)); + } + }) + + } + + validSuccess(res, c, tac) { + console.log("验证码校验成功, 请重写 [config.validSuccess] 方法, 用于自定义逻辑处理") + window.currentCaptchaRes = res; + tac.destroyWindow(); + } + + validFail(res, c, tac) { + tac.reloadCaptcha(); + } +} + +function wrapConfig(config) { + if (config instanceof CaptchaConfig) { + return config; + } + return new CaptchaConfig(config); +} + +function wrapStyle(style) { + // if (!style) { + // style = {} + // } + // + // if (!style.btnUrl) { + // // 设置默认图片 + // style.btnUrl = "data:image/png;base64,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"; + // } + // if (!style.moveTrackMaskBgColor && !style.moveTrackMaskBorderColor) { + // style.moveTrackMaskBgColor = "#89d2ff"; + // style.moveTrackMaskBorderColor = "#0298f8"; + // + // } + // return style; + + let margeStyle = {...StyleConfig, ...style}; + margeStyle.i18n = {...StyleConfig.i18n, ...style?.i18n}; + return margeStyle; +} + +const captchaRequestChains = {} + + +export {CaptchaConfig, wrapConfig, wrapStyle} diff --git a/tianai-captcha-web-sdk/src/captcha/config/styleConfig.js b/tianai-captcha-web-sdk/src/captcha/config/styleConfig.js new file mode 100644 index 0000000..93d1f8a --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/config/styleConfig.js @@ -0,0 +1,24 @@ +export default { + // 按钮图片 + btnUrl: "data:image/png;base64,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", + // 移动边框背景颜色 + moveTrackMaskBgColor: "#89d2ff", + // 移动边框颜色 + moveTrackMaskBorderColor: "#0298f8", + // 文字提示 + i18n: { + tips_success: "验证成功,耗时%s秒", + tips_error : "验证失败,请重新尝试!", + slider_title:"拖动滑块完成拼图", + concat_title: "拖动滑块完成拼图", + image_click_title: "请依次点击:", + rotate_title: "拖动滑块完成拼图", + // TITLE 大小 + slider_title_size:"15px", + concat_title_size: "15px", + image_click_title_size: "20px", + rotate_title_size: "15px", + } + +} + diff --git a/tianai-captcha-web-sdk/src/captcha/disable/disable.js b/tianai-captcha-web-sdk/src/captcha/disable/disable.js new file mode 100644 index 0000000..f7cc317 --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/disable/disable.js @@ -0,0 +1,59 @@ +const TYPE = "DISABLE"; +import "./disable.scss" +import {Dom} from "../common/common"; + +function getTemplate(styleConfig) { + return ` +
+
+ ${styleConfig.i18n.disable_title} +
+
+
+ + + + + +
+
+
+ `; +} +class Disable { + constructor(boxEl, styleConfig) { + this.boxEl = boxEl; + this.styleConfig = styleConfig; + this.type = TYPE; + this.currentCaptchaData = {} + } + init(captchaData, endCallback, loadSuccessCallback) { + // 重载样式 + this.destroy(); + this.boxEl.append(getTemplate(this.styleConfig)); + this.el = this.boxEl.find("#tianai-captcha"); + // 绑定全局 + // window.currentCaptcha = this; + // 载入验证码 + this.loadCaptchaForData(this, captchaData); + this.endCallback = endCallback; + if (loadSuccessCallback) { + // 加载成功 + loadSuccessCallback(this); + } + return this; + } + + destroy () { + const existsCaptchaEl = this.boxEl.find("#tianai-captcha"); + if (existsCaptchaEl) { + existsCaptchaEl.remove(); + } + } + loadCaptchaForData (that, data) { + const msg = data.msg || data.message || "接口异常"; + that.el.find("#content-span").text(msg); + } +} + +export default Disable; diff --git a/tianai-captcha-web-sdk/src/captcha/disable/disable.scss b/tianai-captcha-web-sdk/src/captcha/disable/disable.scss new file mode 100644 index 0000000..a85df8a --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/disable/disable.scss @@ -0,0 +1,56 @@ +#tianai-captcha.tianai-captcha-disable{ + z-index: 999; + position: absolute; + left: 0; + top: 0; + .content { + width: 100%; + height: 180px; + position: relative; + overflow: hidden; + .bg-img-div { + background-image: url("@/assets/images/dun.jpeg"); + width: 100%; + height: 100%; + overflow: hidden; + #content-span { + color: #fff; + overflow: hidden; + margin-top: 132px; + display: block; + text-align: center; + } + } + } +} +//#tianai-captcha.tianai-captcha-disable { +// z-index: 999; +// position: absolute; +// left: 0; +// top: 0; +// +// .content { +// width: 100%; +// height: 180px; +// position: relative; +// overflow: hidden; +// +// .bg-img-div { +// display: flex; +// justify-content: center; +// flex-direction: column; +// align-items: center; +// background-color: #0A3850; +// width: 100%; +// height: 100%; +// overflow: hidden; +// +// #content-span { +// color: #fff; +// overflow: hidden; +// display: block; +// text-align: center; +// } +// } +// } +//} diff --git a/tianai-captcha-web-sdk/src/captcha/image_click/image_click.js b/tianai-captcha-web-sdk/src/captcha/image_click/image_click.js new file mode 100644 index 0000000..6cf5415 --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/image_click/image_click.js @@ -0,0 +1,114 @@ +import "./image_click.scss" +import {Dom,CommonCaptcha,move, initConfig, destroyEvent} from "../common/common.js" + +/** + * 滑动验证码 + */ + +const TYPE = "IMAGE_CLICK" +function getTemplate(styleConfig) { + return ` +
+
+ ${styleConfig.i18n.image_click_title} + +
+
+
+ + +
+
+
+
+
确定
+
+`; +} +class ImageClick extends CommonCaptcha{ + constructor(boxEl, styleConfig) { + super(); + this.boxEl = boxEl; + this.styleConfig = styleConfig; + this.type = TYPE; + this.currentCaptchaData = {} + } + init(captchaData, endCallback, loadSuccessCallback) { + // 重载样式 + this.destroy(); + this.boxEl.append(getTemplate(this.styleConfig)); + this.el = this.boxEl.find("#tianai-captcha"); + // 绑定全局 + // window.currentCaptcha = this; + // 载入验证码 + this.loadCaptchaForData(this, captchaData); + this.endCallback = endCallback; + const moveFun = move.bind(null, this); + // 绑定事件 + this.el.find("#bg-img-click-mask").click((event) => { + if(event.target.className === "click-span") { + + return; + } + this.currentCaptchaData.clickCount++; + const trackList = this.currentCaptchaData.trackList; + if (this.currentCaptchaData.clickCount === 1) { + this.currentCaptchaData.startTime = new Date(); + // move 轨迹 + window.addEventListener("mousemove", moveFun); + this.currentCaptchaData.startX = event.offsetX; + this.currentCaptchaData.startY = event.offsetY; + } + const startTime = this.currentCaptchaData.startTime; + trackList.push({ + x: Math.round(event.offsetX), + y: Math.round(event.offsetY), + type: "click", + t: (new Date().getTime() - startTime.getTime()) + }); + const left = event.offsetX - 10; + const top = event.offsetY - 10; + this.el.find("#bg-img-click-mask").append("" + this.currentCaptchaData.clickCount + "") + // if (this.currentCaptchaData.clickCount === 4) { + // // 校验 + // this.currentCaptchaData.stopTime = new Date(); + // window.removeEventListener("mousemove", move); + // this.endCallback(this.currentCaptchaData,this); + // } + }); + this.el.find(".click-confirm-btn").click(() => { + + if (this.currentCaptchaData.clickCount > 0) { + // 校验 + this.currentCaptchaData.stopTime = new Date(); + window.removeEventListener("mousemove", moveFun); + this.endCallback(this.currentCaptchaData,this); + } + }); + + if (loadSuccessCallback) { + // 加载成功 + loadSuccessCallback(this); + } + return this; + } + destroy () { + const existsCaptchaEl = this.boxEl.children("#tianai-captcha"); + if (existsCaptchaEl) { + existsCaptchaEl.remove(); + } + destroyEvent(); + } + loadCaptchaForData (that, data) { + const bgImg = that.el.find("#tianai-captcha-slider-bg-img"); + const tipImg = that.el.find("#tianai-captcha-tip-img"); + bgImg.on("load",() => { + that.currentCaptchaData = initConfig(bgImg.width(), bgImg.height(), tipImg.width(), tipImg.height()); + that.currentCaptchaData.currentCaptchaId = data.data.id; + }) + bgImg.attr("src", data.data.backgroundImage); + tipImg.attr("src", data.data.templateImage); + } +} + +export default ImageClick; diff --git a/tianai-captcha-web-sdk/src/captcha/image_click/image_click.scss b/tianai-captcha-web-sdk/src/captcha/image_click/image_click.scss new file mode 100644 index 0000000..b1bb8df --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/image_click/image_click.scss @@ -0,0 +1,64 @@ +#tianai-captcha.tianai-captcha-word-click { + //position: relative; + box-sizing: border-box; + //padding-top: 10px; + .click-tip { + position: relative; + height: 40px; + width: 100%; + .tip-img { + height: 35px; + position: absolute; + right: 15px; + } + #tianai-captcha-click-track-font { + font-size: 18px; + display: inline-block; + height: 40px; + line-height: 40px; + position: absolute; + } + } + .slider-bottom { + position: relative; + top: 6px; + } + .content { + #bg-img-click-mask { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + .click-span { + position: absolute; + left: 0; + top: 0; + border-radius: 50px; + background-color: #409eff; + width: 20px; + height: 20px; + text-align: center; + line-height: 20px; + color: #fff; + border: 2px solid #fff; + box-sizing: content-box; + } + } + } + .click-confirm-btn { + width: 100%; + height: 35px; + border-radius: 4px; + background-image: linear-gradient(173deg, hsl(38.09deg 91% 57.89%) 0%, hsl(38.09deg 89.38% 71.74%) 100%); + font-size: 15px; + text-align: center; + box-sizing: border-box; + line-height: 35px; + color: #fff; + margin-top: 3px; + } + .click-confirm-btn:hover{ + cursor: pointer + } +} diff --git a/tianai-captcha-web-sdk/src/captcha/rotate/rotate.js b/tianai-captcha-web-sdk/src/captcha/rotate/rotate.js new file mode 100644 index 0000000..e3ae41c --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/rotate/rotate.js @@ -0,0 +1,106 @@ +import "@/captcha/slider/slider.scss" +import "./rotate.scss" +import {Dom,CommonCaptcha, down, initConfig, destroyEvent} from "../common/common.js" + +/** + * 滑动验证码 + */ + +const TYPE = "ROTATE" +function getTemplate(styleConfig) { + return ` +
+
+ ${styleConfig.i18n.rotate_title} +
+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+`; +} +class Rotate extends CommonCaptcha{ + constructor(boxEl, styleConfig) { + super(); + this.boxEl = boxEl; + this.styleConfig = styleConfig; + this.type = TYPE; + this.currentCaptchaData = {} + } + init(captchaData, endCallback, loadSuccessCallback) { + // 重载样式 + this.destroy(); + this.boxEl.append(getTemplate(this.styleConfig)); + this.el = this.boxEl.find("#tianai-captcha"); + this.loadStyle(); + // 按钮绑定事件 + this.el.find("#tianai-captcha-slider-move-btn").mousedown(down.bind(null,this)); + this.el.find("#tianai-captcha-slider-move-btn").touchstart(down.bind(null,this)); + // 绑定全局 + // window.currentCaptcha = this; + // 载入验证码 + this.loadCaptchaForData(this, captchaData); + this.endCallback = endCallback; + if (loadSuccessCallback) { + // 加载成功 + loadSuccessCallback(this); + } + return this; + } + + destroy () { + const existsCaptchaEl = this.boxEl.children("#tianai-captcha"); + if (existsCaptchaEl) { + existsCaptchaEl.remove(); + } + destroyEvent(); + } + doMove() { + const moveX = this.currentCaptchaData.moveX; + this.el.find("#tianai-captcha-slider-move-btn").css("transform", "translate(" + moveX + "px, 0px)") + this.el.find("#tianai-captcha-slider-move-img").css("transform", "rotate(" + (moveX / (this.currentCaptchaData.end / 360)) + "deg)") + this.el.find("#tianai-captcha-slider-move-track-mask").css("width", moveX + "px") + } + loadStyle () { + let sliderImg = ""; + let moveTrackMaskBorderColor = "#00f4ab"; + let moveTrackMaskBgColor = "#a9ffe5"; + const styleConfig = this.styleConfig; + if (styleConfig) { + sliderImg = styleConfig.btnUrl; + moveTrackMaskBgColor = styleConfig.moveTrackMaskBgColor; + moveTrackMaskBorderColor = styleConfig.moveTrackMaskBorderColor; + } + this.el.find(".slider-move .slider-move-btn").css("background-image", "url(" + sliderImg + ")"); + // this.el.find("#tianai-captcha-slider-move-track-font").text(title); + this.el.find("#tianai-captcha-slider-move-track-mask").css("border-color", moveTrackMaskBorderColor); + this.el.find("#tianai-captcha-slider-move-track-mask").css("background-color", moveTrackMaskBgColor); + } + loadCaptchaForData (that, data) { + const bgImg = that.el.find("#tianai-captcha-slider-bg-img"); + const sliderImg = that.el.find("#tianai-captcha-slider-move-img"); + bgImg.attr("src", data.data.backgroundImage); + sliderImg.attr("src", data.data.templateImage); + bgImg.on("load",() => { + that.currentCaptchaData = initConfig(bgImg.width(), bgImg.height(), sliderImg.width(), sliderImg.height(), 300 - 63 + 5); + that.currentCaptchaData.currentCaptchaId = data.data.id; + }); + } +} + +export default Rotate; diff --git a/tianai-captcha-web-sdk/src/captcha/rotate/rotate.scss b/tianai-captcha-web-sdk/src/captcha/rotate/rotate.scss new file mode 100644 index 0000000..441f2b0 --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/rotate/rotate.scss @@ -0,0 +1,12 @@ +#tianai-captcha.tianai-captcha-rotate { + .rotate-img-div { + height: 100%; + /*position: absolute;*/ + text-align: center; + img { + height: 100%; + transform: rotate(0deg); + display: inline-block; + } + } +} diff --git a/tianai-captcha-web-sdk/src/captcha/slider/slider.js b/tianai-captcha-web-sdk/src/captcha/slider/slider.js new file mode 100644 index 0000000..b8ec976 --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/slider/slider.js @@ -0,0 +1,123 @@ +import "../common/common.scss" +import "./slider.scss" +import { + Dom, + CommonCaptcha, + closeTips, + down, + initConfig, + showTips, + destroyEvent +} from "../common/common.js" + +/** + * 滑动验证码 + */ + +const TYPE = "SLIDER" +function getTemplate(styleConfig) { + return ` +
+
+ ${styleConfig.i18n.slider_title} +
+
+
+ + +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+` +} + +class Slider extends CommonCaptcha{ + constructor(boxEl, styleConfig) { + super(); + this.boxEl = boxEl; + this.styleConfig = styleConfig; + this.type = TYPE; + this.currentCaptchaData = {} + } + init(captchaData, endCallback, loadSuccessCallback) { + // 重载样式 + this.destroy(); + this.boxEl.append(getTemplate(this.styleConfig)); + this.el = this.boxEl.find("#tianai-captcha"); + this.loadStyle(); + // 按钮绑定事件 + this.el.find("#tianai-captcha-slider-move-btn").mousedown(down.bind(null,this)); + this.el.find("#tianai-captcha-slider-move-btn").touchstart( down.bind(null,this)); + // 绑定全局 + // window.currentCaptcha = this; + // 载入验证码 + this.loadCaptchaForData(this, captchaData); + this.endCallback = endCallback; + if (loadSuccessCallback) { + // 加载成功 + loadSuccessCallback(this); + } + return this; + } + showTips(msg, type,callback) { + showTips(this.el, msg,type, callback) + } + closeTips(callback) { + closeTips(this.el, callback) + } + + destroy () { + const existsCaptchaEl = this.boxEl.children("#tianai-captcha"); + if (existsCaptchaEl) { + existsCaptchaEl.remove(); + } + destroyEvent(); + } + doMove() { + const moveX = this.currentCaptchaData.moveX; + this.el.find("#tianai-captcha-slider-move-btn").css("transform", "translate(" + moveX + "px, 0px)") + this.el.find("#tianai-captcha-slider-img-div").css("transform", "translate(" + moveX + "px, 0px)") + this.el.find("#tianai-captcha-slider-move-track-mask").css("width", moveX + "px") + } + loadStyle () { + let sliderImg = ""; + let moveTrackMaskBorderColor = "#00f4ab"; + let moveTrackMaskBgColor = "#a9ffe5"; + const styleConfig = this.styleConfig; + if (styleConfig) { + sliderImg = styleConfig.btnUrl; + moveTrackMaskBgColor = styleConfig.moveTrackMaskBgColor; + moveTrackMaskBorderColor = styleConfig.moveTrackMaskBorderColor; + } + this.el.find(".slider-move .slider-move-btn").css("background-image", "url(" + sliderImg + ")"); + // this.el.find("#tianai-captcha-slider-move-track-font").text(title); + this.el.find("#tianai-captcha-slider-move-track-mask").css("border-color", moveTrackMaskBorderColor); + this.el.find("#tianai-captcha-slider-move-track-mask").css("background-color", moveTrackMaskBgColor); + } + loadCaptchaForData (that, data) { + const bgImg = that.el.find("#tianai-captcha-slider-bg-img"); + const sliderImg = that.el.find("#tianai-captcha-slider-move-img"); + bgImg.attr("src", data.data.backgroundImage); + sliderImg.attr("src", data.data.templateImage); + bgImg.on("load",() => { + that.currentCaptchaData = initConfig(bgImg.width(), bgImg.height(), sliderImg.width(), sliderImg.height(), 300 - 63 + 5); + that.currentCaptchaData.currentCaptchaId = data.data.id; + }); + } +} + +export default Slider; diff --git a/tianai-captcha-web-sdk/src/captcha/slider/slider.scss b/tianai-captcha-web-sdk/src/captcha/slider/slider.scss new file mode 100644 index 0000000..0677d74 --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/slider/slider.scss @@ -0,0 +1,88 @@ +#tianai-captcha.tianai-captcha-slider { + z-index: 999; + position: absolute; + left: 0; + top: 0; + .content { + width: 100%; + height: 180px; + position: relative; + overflow: hidden; + } + .bg-img-div { + width: 100%; + height: 100%; + position: absolute; + transform: translate(0px, 0px); + img { + height: 100%; + width: 100%; + border-radius: 5px; + } + } + .slider-img-div { + height: 100%; + position: absolute; + left: 0; + transform: translate(0px, 0px); + #tianai-captcha-slider-move-img { + height: 100%; + } + } + .slider-move { + height: 34px; + width: 100%; + margin: 11px 0; + position: relative; + } + .slider-move-track { + position: relative; + height: 32px; + line-height: 32px; + text-align: center; + background: #f5f5f5; + color: #999; + transition: 0s; + font-size: 14px; + box-sizing: content-box; + border: 1px solid #f5f5f5; + border-radius: 4px; + } + .refresh-btn, .close-btn { + display: inline-block; + } + .slider-move { + line-height: 38px; + font-size: 14px; + text-align: center; + white-space: nowrap; + color: #88949d; + -moz-user-select: none; + -webkit-user-select: none; + user-select: none; + filter: opacity(.8); + } + .slider-move .slider-move-btn { + transform: translate(0px, 0px); + position: absolute; + top: -6px; + left: 0; + width: 63px; + height: 45px; + background-color: #fff; + background-repeat: no-repeat; + background-size: contain; + border-radius: 5px; + } + .slider-tip { + margin-bottom: 5px; + font-weight: bold; + font-size: 15px; + line-height: normal; + color: black; + } + .slider-move-btn:hover { + cursor: pointer + } + user-select: none; +} diff --git a/tianai-captcha-web-sdk/src/captcha/word_image_click/word_image_click.js b/tianai-captcha-web-sdk/src/captcha/word_image_click/word_image_click.js new file mode 100644 index 0000000..4bf5e6b --- /dev/null +++ b/tianai-captcha-web-sdk/src/captcha/word_image_click/word_image_click.js @@ -0,0 +1,13 @@ +import ImageClick from "../image_click/image_click" +/** + * 滑动验证码 + */ +const TYPE = "WORD_IMAGE_CLICK" +class WordImageClick extends ImageClick { + constructor(divId, styleConfig) { + super(divId, styleConfig); + this.type = TYPE; + } +} + +export default WordImageClick; diff --git a/tianai-captcha-web-sdk/src/index.js b/tianai-captcha-web-sdk/src/index.js new file mode 100644 index 0000000..6396b21 --- /dev/null +++ b/tianai-captcha-web-sdk/src/index.js @@ -0,0 +1,4 @@ +import {CaptchaConfig, TianAiCaptcha} from "./captcha/captcha"; + +window.TAC = TianAiCaptcha; +window.CaptchaConfig = CaptchaConfig; diff --git a/tianai-captcha-web-sdk/src/slider.json b/tianai-captcha-web-sdk/src/slider.json new file mode 100644 index 0000000..d73a7cb --- /dev/null +++ b/tianai-captcha-web-sdk/src/slider.json @@ -0,0 +1 @@ +{"id":"96fc0563e18c49b28995e553c1176bb3","captcha":{"type":"SLIDER","backgroundImage":"data:image/jpeg;base64,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","templateImage":"data:image/png;base64,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","backgroundImageTag":"default","templateImageTag":"default","backgroundImageWidth":600,"backgroundImageHeight":360,"templateImageWidth":110,"templateImageHeight":360,"data":null}} diff --git a/tianai-captcha-web-sdk/webpack.config.dev.js b/tianai-captcha-web-sdk/webpack.config.dev.js new file mode 100644 index 0000000..ba0fc7c --- /dev/null +++ b/tianai-captcha-web-sdk/webpack.config.dev.js @@ -0,0 +1,14 @@ +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const path = require("path"); +module.exports = { + output: { + filename: "tac/js/tac.js", + path: path.resolve(__dirname, "./dist") + }, + plugins: [ + new HtmlWebpackPlugin({ + filename: 'index.html', + template: './public/index.html' + }), + ] +} diff --git a/tianai-captcha-web-sdk/webpack.config.js b/tianai-captcha-web-sdk/webpack.config.js new file mode 100644 index 0000000..e7d556d --- /dev/null +++ b/tianai-captcha-web-sdk/webpack.config.js @@ -0,0 +1,78 @@ +const webpack = require('webpack') +const {merge} = require("webpack-merge") +const devConfig = require("./webpack.config.dev") +const prodConfig = require("./webpack.config.prod") +const path = require("path"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const {CleanWebpackPlugin} = require("clean-webpack-plugin"); + +const commonConfig = { + mode: 'development', + entry: "./src/index.js", + output: { + filename: "tac.js", + path: path.resolve(__dirname, "./dist") + }, + resolve: { + alias: { + "@": path.join(__dirname, "./src") // 这样@符号就表示项目根目录中src这一层路径 + } + }, + module: { + rules: [ + { + test: /\.(css)$/, + use: [MiniCssExtractPlugin.loader, 'css-loader'], + }, + { + test: /\.s[ac]ss$/, + use: [MiniCssExtractPlugin.loader, "css-loader", "sass-loader"], + }, + { + test: /\.(png|svg|jpg|jpeg|gif)$/i, + use: { + loader: 'file-loader', + options: { + esModule: false, + name: '[name].[ext]', + outputPath: 'tac/images' + } + }, + type: 'javascript/auto' + }, + // { + // test: /\.js$/, + // exclude: /node_modules/, + // loader: 'babel-loader', + // options: { + // // 预设babel做怎样的兼容性处理 + // presets: ['@babel/preset-env'] + // } + // } + ] + }, + plugins: [ + new MiniCssExtractPlugin({ + // 指定抽离的之后形成的文件名 + filename: 'tac/css/tac.css' + }), + new webpack.HotModuleReplacementPlugin(), + new CleanWebpackPlugin() + ], + devServer: { + // 开发时可直接访问到 ./public 下的静态资源,这些资源在开发中不必打包 + port: 3000, + static: "./dist" + } +} + +module.exports = (env, argv) => { + if (argv && argv.mode === 'production') { + console.log("=============production==================") + return merge(commonConfig, prodConfig); + }else { + console.log("=============development==================") + return merge(commonConfig, devConfig); + } +} + diff --git a/tianai-captcha-web-sdk/webpack.config.prod.js b/tianai-captcha-web-sdk/webpack.config.prod.js new file mode 100644 index 0000000..30d4e9e --- /dev/null +++ b/tianai-captcha-web-sdk/webpack.config.prod.js @@ -0,0 +1,32 @@ +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const path = require("path"); +const TerserPlugin = require('terser-webpack-plugin'); +module.exports = { + optimization: { + minimize: true, + minimizer: [new TerserPlugin({ + terserOptions: { + compress: { + drop_console: true, // 移除所有的`console`语句 + }, + output: { + comments: false, // 去掉注释 + }, + }, + extractComments: false, // 是否将注释提取到单独的文件中 + })], + }, + externals: { + }, + output: { + filename: "tac/js/tac.min.js", + path: path.resolve(__dirname, "./dist") + }, + plugins: [ + new HtmlWebpackPlugin({ + filename: 'index.html', + template: './public/index-prod.html' + }) + ] + +} diff --git a/tianai-captcha/pom.xml b/tianai-captcha/pom.xml new file mode 100644 index 0000000..164fc1e --- /dev/null +++ b/tianai-captcha/pom.xml @@ -0,0 +1,52 @@ + + 4.0.0 + + cloud.tianai.captcha + tianai-captcha-parent + ${revision} + ../pom.xml + + tianai-captcha + tianai-captcha + 行为验证码 + https://gitee.com/tianai/tianai-captcha + + + 1.8 + + true + UTF-8 + UTF-8 + + + + + + org.projectlombok + lombok + 1.18.12 + true + + + org.slf4j + slf4j-api + 1.7.30 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + -parameters + + + + + + diff --git a/src/main/java/cloud/tianai/captcha/application/CaptchaImageType.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/application/CaptchaImageType.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/application/CaptchaImageType.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/application/CaptchaImageType.java diff --git a/src/main/java/cloud/tianai/captcha/application/DefaultImageCaptchaApplication.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/application/DefaultImageCaptchaApplication.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/application/DefaultImageCaptchaApplication.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/application/DefaultImageCaptchaApplication.java diff --git a/src/main/java/cloud/tianai/captcha/application/FilterImageCaptchaApplication.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/application/FilterImageCaptchaApplication.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/application/FilterImageCaptchaApplication.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/application/FilterImageCaptchaApplication.java diff --git a/src/main/java/cloud/tianai/captcha/application/ImageCaptchaApplication.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/application/ImageCaptchaApplication.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/application/ImageCaptchaApplication.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/application/ImageCaptchaApplication.java diff --git a/src/main/java/cloud/tianai/captcha/application/ImageCaptchaProperties.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/application/ImageCaptchaProperties.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/application/ImageCaptchaProperties.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/application/ImageCaptchaProperties.java diff --git a/src/main/java/cloud/tianai/captcha/application/TACBuilder.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/application/TACBuilder.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/application/TACBuilder.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/application/TACBuilder.java diff --git a/src/main/java/cloud/tianai/captcha/application/vo/ImageCaptchaVO.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/application/vo/ImageCaptchaVO.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/application/vo/ImageCaptchaVO.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/application/vo/ImageCaptchaVO.java diff --git a/src/main/java/cloud/tianai/captcha/cache/CacheStore.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/cache/CacheStore.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/cache/CacheStore.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/cache/CacheStore.java diff --git a/src/main/java/cloud/tianai/captcha/cache/impl/ConCurrentExpiringMap.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/cache/impl/ConCurrentExpiringMap.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/cache/impl/ConCurrentExpiringMap.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/cache/impl/ConCurrentExpiringMap.java diff --git a/src/main/java/cloud/tianai/captcha/cache/impl/ExpiringMap.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/cache/impl/ExpiringMap.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/cache/impl/ExpiringMap.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/cache/impl/ExpiringMap.java diff --git a/src/main/java/cloud/tianai/captcha/cache/impl/LocalCacheStore.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/cache/impl/LocalCacheStore.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/cache/impl/LocalCacheStore.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/cache/impl/LocalCacheStore.java diff --git a/src/main/java/cloud/tianai/captcha/common/AnyMap.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/AnyMap.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/AnyMap.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/AnyMap.java diff --git a/src/main/java/cloud/tianai/captcha/common/constant/CaptchaTypeConstant.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/constant/CaptchaTypeConstant.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/constant/CaptchaTypeConstant.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/constant/CaptchaTypeConstant.java diff --git a/src/main/java/cloud/tianai/captcha/common/constant/CommonConstant.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/constant/CommonConstant.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/constant/CommonConstant.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/constant/CommonConstant.java diff --git a/src/main/java/cloud/tianai/captcha/common/exception/ImageCaptchaException.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/exception/ImageCaptchaException.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/exception/ImageCaptchaException.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/exception/ImageCaptchaException.java diff --git a/src/main/java/cloud/tianai/captcha/common/response/ApiResponse.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/response/ApiResponse.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/response/ApiResponse.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/response/ApiResponse.java diff --git a/src/main/java/cloud/tianai/captcha/common/response/ApiResponseStatusConstant.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/response/ApiResponseStatusConstant.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/response/ApiResponseStatusConstant.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/response/ApiResponseStatusConstant.java diff --git a/src/main/java/cloud/tianai/captcha/common/response/CodeDefinition.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/response/CodeDefinition.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/response/CodeDefinition.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/response/CodeDefinition.java diff --git a/src/main/java/cloud/tianai/captcha/common/util/CaptchaTypeClassifier.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/CaptchaTypeClassifier.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/util/CaptchaTypeClassifier.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/CaptchaTypeClassifier.java diff --git a/src/main/java/cloud/tianai/captcha/common/util/CollectionUtils.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/CollectionUtils.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/util/CollectionUtils.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/CollectionUtils.java diff --git a/src/main/java/cloud/tianai/captcha/common/util/FontUtils.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/FontUtils.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/util/FontUtils.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/FontUtils.java diff --git a/src/main/java/cloud/tianai/captcha/common/util/NamedThreadFactory.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/NamedThreadFactory.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/util/NamedThreadFactory.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/NamedThreadFactory.java diff --git a/src/main/java/cloud/tianai/captcha/common/util/ObjectUtils.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/ObjectUtils.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/util/ObjectUtils.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/ObjectUtils.java diff --git a/src/main/java/cloud/tianai/captcha/common/util/UUIDUtils.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/UUIDUtils.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/common/util/UUIDUtils.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/common/util/UUIDUtils.java diff --git a/src/main/java/cloud/tianai/captcha/generator/AbstractImageCaptchaGenerator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/AbstractImageCaptchaGenerator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/AbstractImageCaptchaGenerator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/AbstractImageCaptchaGenerator.java diff --git a/src/main/java/cloud/tianai/captcha/generator/ImageCaptchaGenerator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/ImageCaptchaGenerator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/ImageCaptchaGenerator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/ImageCaptchaGenerator.java diff --git a/src/main/java/cloud/tianai/captcha/generator/ImageCaptchaGeneratorProvider.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/ImageCaptchaGeneratorProvider.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/ImageCaptchaGeneratorProvider.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/ImageCaptchaGeneratorProvider.java diff --git a/src/main/java/cloud/tianai/captcha/generator/ImageTransform.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/ImageTransform.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/ImageTransform.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/ImageTransform.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/FontWrapper.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/FontWrapper.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/FontWrapper.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/FontWrapper.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/model/dto/CaptchaExchange.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/CaptchaExchange.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/model/dto/CaptchaExchange.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/CaptchaExchange.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ClickImageCheckDefinition.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ClickImageCheckDefinition.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/model/dto/ClickImageCheckDefinition.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ClickImageCheckDefinition.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/model/dto/CustomData.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/CustomData.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/model/dto/CustomData.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/CustomData.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/model/dto/GenerateParam.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/GenerateParam.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/model/dto/GenerateParam.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/GenerateParam.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ImageCaptchaInfo.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ImageCaptchaInfo.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/model/dto/ImageCaptchaInfo.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ImageCaptchaInfo.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ImageTransformData.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ImageTransformData.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/model/dto/ImageTransformData.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ImageTransformData.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ParamKey.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ParamKey.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/model/dto/ParamKey.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ParamKey.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ParamKeyEnum.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ParamKeyEnum.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/model/dto/ParamKeyEnum.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/ParamKeyEnum.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/model/dto/RotateImageCaptchaInfo.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/RotateImageCaptchaInfo.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/model/dto/RotateImageCaptchaInfo.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/RotateImageCaptchaInfo.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/model/dto/SliderImageCaptchaInfo.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/SliderImageCaptchaInfo.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/model/dto/SliderImageCaptchaInfo.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/model/dto/SliderImageCaptchaInfo.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/util/CaptchaImageUtils.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/util/CaptchaImageUtils.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/util/CaptchaImageUtils.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/util/CaptchaImageUtils.java diff --git a/src/main/java/cloud/tianai/captcha/generator/common/util/ImgWriter.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/util/ImgWriter.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/common/util/ImgWriter.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/common/util/ImgWriter.java diff --git a/src/main/java/cloud/tianai/captcha/generator/impl/AbstractClickImageCaptchaGenerator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/AbstractClickImageCaptchaGenerator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/impl/AbstractClickImageCaptchaGenerator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/AbstractClickImageCaptchaGenerator.java diff --git a/src/main/java/cloud/tianai/captcha/generator/impl/CacheImageCaptchaGenerator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/CacheImageCaptchaGenerator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/impl/CacheImageCaptchaGenerator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/CacheImageCaptchaGenerator.java diff --git a/src/main/java/cloud/tianai/captcha/generator/impl/MultiImageCaptchaGenerator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/MultiImageCaptchaGenerator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/impl/MultiImageCaptchaGenerator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/MultiImageCaptchaGenerator.java diff --git a/src/main/java/cloud/tianai/captcha/generator/impl/StandardConcatImageCaptchaGenerator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/StandardConcatImageCaptchaGenerator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/impl/StandardConcatImageCaptchaGenerator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/StandardConcatImageCaptchaGenerator.java diff --git a/src/main/java/cloud/tianai/captcha/generator/impl/StandardRotateImageCaptchaGenerator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/StandardRotateImageCaptchaGenerator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/impl/StandardRotateImageCaptchaGenerator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/StandardRotateImageCaptchaGenerator.java diff --git a/src/main/java/cloud/tianai/captcha/generator/impl/StandardSliderImageCaptchaGenerator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/StandardSliderImageCaptchaGenerator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/impl/StandardSliderImageCaptchaGenerator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/StandardSliderImageCaptchaGenerator.java diff --git a/src/main/java/cloud/tianai/captcha/generator/impl/StandardWordClickImageCaptchaGenerator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/StandardWordClickImageCaptchaGenerator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/impl/StandardWordClickImageCaptchaGenerator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/StandardWordClickImageCaptchaGenerator.java diff --git a/src/main/java/cloud/tianai/captcha/generator/impl/provider/CommonImageCaptchaGeneratorProvider.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/provider/CommonImageCaptchaGeneratorProvider.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/impl/provider/CommonImageCaptchaGeneratorProvider.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/provider/CommonImageCaptchaGeneratorProvider.java diff --git a/src/main/java/cloud/tianai/captcha/generator/impl/transform/Base64ImageTransform.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/transform/Base64ImageTransform.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/generator/impl/transform/Base64ImageTransform.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/generator/impl/transform/Base64ImageTransform.java diff --git a/src/main/java/cloud/tianai/captcha/interceptor/CaptchaInterceptor.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/CaptchaInterceptor.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/interceptor/CaptchaInterceptor.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/CaptchaInterceptor.java diff --git a/src/main/java/cloud/tianai/captcha/interceptor/CaptchaInterceptorGroup.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/CaptchaInterceptorGroup.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/interceptor/CaptchaInterceptorGroup.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/CaptchaInterceptorGroup.java diff --git a/src/main/java/cloud/tianai/captcha/interceptor/Context.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/Context.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/interceptor/Context.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/Context.java diff --git a/src/main/java/cloud/tianai/captcha/interceptor/EmptyCaptchaInterceptor.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/EmptyCaptchaInterceptor.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/interceptor/EmptyCaptchaInterceptor.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/EmptyCaptchaInterceptor.java diff --git a/src/main/java/cloud/tianai/captcha/interceptor/impl/BasicTrackCaptchaInterceptor.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/impl/BasicTrackCaptchaInterceptor.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/interceptor/impl/BasicTrackCaptchaInterceptor.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/impl/BasicTrackCaptchaInterceptor.java diff --git a/src/main/java/cloud/tianai/captcha/interceptor/impl/ParamCheckCaptchaInterceptor.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/impl/ParamCheckCaptchaInterceptor.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/interceptor/impl/ParamCheckCaptchaInterceptor.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/interceptor/impl/ParamCheckCaptchaInterceptor.java diff --git a/src/main/java/cloud/tianai/captcha/resource/AbstractResourceProvider.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/AbstractResourceProvider.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/AbstractResourceProvider.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/AbstractResourceProvider.java diff --git a/src/main/java/cloud/tianai/captcha/resource/CrudResourceStore.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/CrudResourceStore.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/CrudResourceStore.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/CrudResourceStore.java diff --git a/src/main/java/cloud/tianai/captcha/resource/DefaultBuiltInResources.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/DefaultBuiltInResources.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/DefaultBuiltInResources.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/DefaultBuiltInResources.java diff --git a/src/main/java/cloud/tianai/captcha/resource/FontCache.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/FontCache.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/FontCache.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/FontCache.java diff --git a/src/main/java/cloud/tianai/captcha/resource/ImageCaptchaResourceManager.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/ImageCaptchaResourceManager.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/ImageCaptchaResourceManager.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/ImageCaptchaResourceManager.java diff --git a/src/main/java/cloud/tianai/captcha/resource/ResourceProvider.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/ResourceProvider.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/ResourceProvider.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/ResourceProvider.java diff --git a/src/main/java/cloud/tianai/captcha/resource/ResourceProviders.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/ResourceProviders.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/ResourceProviders.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/ResourceProviders.java diff --git a/src/main/java/cloud/tianai/captcha/resource/ResourceStore.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/ResourceStore.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/ResourceStore.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/ResourceStore.java diff --git a/src/main/java/cloud/tianai/captcha/resource/common/model/dto/Resource.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/common/model/dto/Resource.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/common/model/dto/Resource.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/common/model/dto/Resource.java diff --git a/src/main/java/cloud/tianai/captcha/resource/common/model/dto/ResourceMap.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/common/model/dto/ResourceMap.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/common/model/dto/ResourceMap.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/common/model/dto/ResourceMap.java diff --git a/src/main/java/cloud/tianai/captcha/resource/impl/DefaultImageCaptchaResourceManager.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/impl/DefaultImageCaptchaResourceManager.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/impl/DefaultImageCaptchaResourceManager.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/impl/DefaultImageCaptchaResourceManager.java diff --git a/src/main/java/cloud/tianai/captcha/resource/impl/LocalMemoryResourceStore.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/impl/LocalMemoryResourceStore.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/impl/LocalMemoryResourceStore.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/impl/LocalMemoryResourceStore.java diff --git a/src/main/java/cloud/tianai/captcha/resource/impl/provider/ClassPathResourceProvider.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/impl/provider/ClassPathResourceProvider.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/impl/provider/ClassPathResourceProvider.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/impl/provider/ClassPathResourceProvider.java diff --git a/src/main/java/cloud/tianai/captcha/resource/impl/provider/FileResourceProvider.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/impl/provider/FileResourceProvider.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/impl/provider/FileResourceProvider.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/impl/provider/FileResourceProvider.java diff --git a/src/main/java/cloud/tianai/captcha/resource/impl/provider/URLResourceProvider.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/resource/impl/provider/URLResourceProvider.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/resource/impl/provider/URLResourceProvider.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/resource/impl/provider/URLResourceProvider.java diff --git a/src/main/java/cloud/tianai/captcha/validator/ImageCaptchaValidator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/validator/ImageCaptchaValidator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/validator/ImageCaptchaValidator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/validator/ImageCaptchaValidator.java diff --git a/src/main/java/cloud/tianai/captcha/validator/SliderCaptchaPercentageValidator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/validator/SliderCaptchaPercentageValidator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/validator/SliderCaptchaPercentageValidator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/validator/SliderCaptchaPercentageValidator.java diff --git a/src/main/java/cloud/tianai/captcha/validator/common/constant/TrackTypeConstant.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/validator/common/constant/TrackTypeConstant.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/validator/common/constant/TrackTypeConstant.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/validator/common/constant/TrackTypeConstant.java diff --git a/src/main/java/cloud/tianai/captcha/validator/common/model/dto/Drives.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/validator/common/model/dto/Drives.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/validator/common/model/dto/Drives.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/validator/common/model/dto/Drives.java diff --git a/src/main/java/cloud/tianai/captcha/validator/common/model/dto/ImageCaptchaTrack.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/validator/common/model/dto/ImageCaptchaTrack.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/validator/common/model/dto/ImageCaptchaTrack.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/validator/common/model/dto/ImageCaptchaTrack.java diff --git a/src/main/java/cloud/tianai/captcha/validator/common/model/dto/MatchParam.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/validator/common/model/dto/MatchParam.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/validator/common/model/dto/MatchParam.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/validator/common/model/dto/MatchParam.java diff --git a/src/main/java/cloud/tianai/captcha/validator/impl/BasicCaptchaTrackValidator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/validator/impl/BasicCaptchaTrackValidator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/validator/impl/BasicCaptchaTrackValidator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/validator/impl/BasicCaptchaTrackValidator.java diff --git a/src/main/java/cloud/tianai/captcha/validator/impl/SimpleImageCaptchaValidator.java b/tianai-captcha/src/main/java/cloud/tianai/captcha/validator/impl/SimpleImageCaptchaValidator.java similarity index 100% rename from src/main/java/cloud/tianai/captcha/validator/impl/SimpleImageCaptchaValidator.java rename to tianai-captcha/src/main/java/cloud/tianai/captcha/validator/impl/SimpleImageCaptchaValidator.java diff --git a/src/main/resources/META-INF/cut-image/resource/1.jpg b/tianai-captcha/src/main/resources/META-INF/cut-image/resource/1.jpg similarity index 100% rename from src/main/resources/META-INF/cut-image/resource/1.jpg rename to tianai-captcha/src/main/resources/META-INF/cut-image/resource/1.jpg diff --git a/src/main/resources/META-INF/cut-image/template/fonts/SIMSUN.TTC b/tianai-captcha/src/main/resources/META-INF/cut-image/template/fonts/SIMSUN.TTC similarity index 100% rename from src/main/resources/META-INF/cut-image/template/fonts/SIMSUN.TTC rename to tianai-captcha/src/main/resources/META-INF/cut-image/template/fonts/SIMSUN.TTC diff --git a/src/main/resources/META-INF/cut-image/template/rotate_1/active.png b/tianai-captcha/src/main/resources/META-INF/cut-image/template/rotate_1/active.png similarity index 100% rename from src/main/resources/META-INF/cut-image/template/rotate_1/active.png rename to tianai-captcha/src/main/resources/META-INF/cut-image/template/rotate_1/active.png diff --git a/src/main/resources/META-INF/cut-image/template/rotate_1/fixed.png b/tianai-captcha/src/main/resources/META-INF/cut-image/template/rotate_1/fixed.png similarity index 100% rename from src/main/resources/META-INF/cut-image/template/rotate_1/fixed.png rename to tianai-captcha/src/main/resources/META-INF/cut-image/template/rotate_1/fixed.png diff --git a/src/main/resources/META-INF/cut-image/template/slider_1/active.png b/tianai-captcha/src/main/resources/META-INF/cut-image/template/slider_1/active.png similarity index 100% rename from src/main/resources/META-INF/cut-image/template/slider_1/active.png rename to tianai-captcha/src/main/resources/META-INF/cut-image/template/slider_1/active.png diff --git a/src/main/resources/META-INF/cut-image/template/slider_1/fixed.png b/tianai-captcha/src/main/resources/META-INF/cut-image/template/slider_1/fixed.png similarity index 100% rename from src/main/resources/META-INF/cut-image/template/slider_1/fixed.png rename to tianai-captcha/src/main/resources/META-INF/cut-image/template/slider_1/fixed.png diff --git a/src/main/resources/META-INF/cut-image/template/slider_2/active.png b/tianai-captcha/src/main/resources/META-INF/cut-image/template/slider_2/active.png similarity index 100% rename from src/main/resources/META-INF/cut-image/template/slider_2/active.png rename to tianai-captcha/src/main/resources/META-INF/cut-image/template/slider_2/active.png diff --git a/src/main/resources/META-INF/cut-image/template/slider_2/fixed.png b/tianai-captcha/src/main/resources/META-INF/cut-image/template/slider_2/fixed.png similarity index 100% rename from src/main/resources/META-INF/cut-image/template/slider_2/fixed.png rename to tianai-captcha/src/main/resources/META-INF/cut-image/template/slider_2/fixed.png diff --git a/src/main/test/java/example/readme/ApplicationTest.java b/tianai-captcha/src/test/java/example/readme/ApplicationTest.java similarity index 98% rename from src/main/test/java/example/readme/ApplicationTest.java rename to tianai-captcha/src/test/java/example/readme/ApplicationTest.java index 92adcd0..0cd565b 100644 --- a/src/main/test/java/example/readme/ApplicationTest.java +++ b/tianai-captcha/src/test/java/example/readme/ApplicationTest.java @@ -3,7 +3,6 @@ package example.readme; import cloud.tianai.captcha.application.DefaultImageCaptchaApplication; import cloud.tianai.captcha.application.ImageCaptchaApplication; import cloud.tianai.captcha.application.ImageCaptchaProperties; -import cloud.tianai.captcha.application.vo.CaptchaResponse; import cloud.tianai.captcha.application.vo.ImageCaptchaVO; import cloud.tianai.captcha.cache.CacheStore; import cloud.tianai.captcha.cache.impl.LocalCacheStore; diff --git a/src/main/test/java/example/readme/SimpleDemo.java b/tianai-captcha/src/test/java/example/readme/SimpleDemo.java similarity index 100% rename from src/main/test/java/example/readme/SimpleDemo.java rename to tianai-captcha/src/test/java/example/readme/SimpleDemo.java diff --git a/src/main/test/java/example/readme/TACBuilderTest.java b/tianai-captcha/src/test/java/example/readme/TACBuilderTest.java similarity index 98% rename from src/main/test/java/example/readme/TACBuilderTest.java rename to tianai-captcha/src/test/java/example/readme/TACBuilderTest.java index 91b9c2a..512a46d 100644 --- a/src/main/test/java/example/readme/TACBuilderTest.java +++ b/tianai-captcha/src/test/java/example/readme/TACBuilderTest.java @@ -3,7 +3,6 @@ package example.readme; import cloud.tianai.captcha.application.ImageCaptchaApplication; import cloud.tianai.captcha.application.ImageCaptchaProperties; import cloud.tianai.captcha.application.TACBuilder; -import cloud.tianai.captcha.application.vo.CaptchaResponse; import cloud.tianai.captcha.application.vo.ImageCaptchaVO; import cloud.tianai.captcha.cache.impl.LocalCacheStore; import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; diff --git a/src/main/test/java/example/readme/TACBuilderTest2.java b/tianai-captcha/src/test/java/example/readme/TACBuilderTest2.java similarity index 95% rename from src/main/test/java/example/readme/TACBuilderTest2.java rename to tianai-captcha/src/test/java/example/readme/TACBuilderTest2.java index a0ae1e8..74645c9 100644 --- a/src/main/test/java/example/readme/TACBuilderTest2.java +++ b/tianai-captcha/src/test/java/example/readme/TACBuilderTest2.java @@ -2,7 +2,6 @@ package example.readme; import cloud.tianai.captcha.application.ImageCaptchaApplication; import cloud.tianai.captcha.application.TACBuilder; -import cloud.tianai.captcha.application.vo.CaptchaResponse; import cloud.tianai.captcha.application.vo.ImageCaptchaVO; import cloud.tianai.captcha.common.response.ApiResponse; import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; diff --git a/src/main/test/java/example/readme/Test.java b/tianai-captcha/src/test/java/example/readme/Test.java similarity index 100% rename from src/main/test/java/example/readme/Test.java rename to tianai-captcha/src/test/java/example/readme/Test.java diff --git a/src/main/test/java/example/readme/Test2.java b/tianai-captcha/src/test/java/example/readme/Test2.java similarity index 100% rename from src/main/test/java/example/readme/Test2.java rename to tianai-captcha/src/test/java/example/readme/Test2.java diff --git a/src/main/test/java/example/readme/Test3.java b/tianai-captcha/src/test/java/example/readme/Test3.java similarity index 100% rename from src/main/test/java/example/readme/Test3.java rename to tianai-captcha/src/test/java/example/readme/Test3.java diff --git a/src/main/test/java/example/readme/Test4.java b/tianai-captcha/src/test/java/example/readme/Test4.java similarity index 100% rename from src/main/test/java/example/readme/Test4.java rename to tianai-captcha/src/test/java/example/readme/Test4.java diff --git a/src/main/test/java/example/readme/Test6.java b/tianai-captcha/src/test/java/example/readme/Test6.java similarity index 100% rename from src/main/test/java/example/readme/Test6.java rename to tianai-captcha/src/test/java/example/readme/Test6.java diff --git a/src/main/test/java/example/readme/Test7.java b/tianai-captcha/src/test/java/example/readme/Test7.java similarity index 100% rename from src/main/test/java/example/readme/Test7.java rename to tianai-captcha/src/test/java/example/readme/Test7.java diff --git a/src/main/test/java/example/readme/Test8.java b/tianai-captcha/src/test/java/example/readme/Test8.java similarity index 100% rename from src/main/test/java/example/readme/Test8.java rename to tianai-captcha/src/test/java/example/readme/Test8.java diff --git a/src/main/test/java/example/readme/TestImageCaptcha.java b/tianai-captcha/src/test/java/example/readme/TestImageCaptcha.java similarity index 100% rename from src/main/test/java/example/readme/TestImageCaptcha.java rename to tianai-captcha/src/test/java/example/readme/TestImageCaptcha.java