From a94a44826bece7ec1e8ea2cc825710b1611b93d1 Mon Sep 17 00:00:00 2001 From: lexluo09 <39718951+lexluo09@users.noreply.github.com> Date: Tue, 19 Sep 2023 16:38:24 +0800 Subject: [PATCH 01/11] (improvement)(project) support explain in semantic and show explain sql in web and fix chat start error (#103) --- .../chat/api/component/SemanticLayer.java | 15 ++ .../chat/api/component/SemanticQuery.java | 3 + .../chat/api/pojo/SemanticParseInfo.java | 3 + .../chat/query/llm/dsl/DslQuery.java | 35 ++++- .../query/plugin/PluginSemanticQuery.java | 7 +- .../chat/query/rule/RuleSemanticQuery.java | 19 +++ .../chat/service/impl/QueryServiceImpl.java | 40 +++--- .../semantic/DefaultSemanticConfig.java | 2 + .../semantic/LocalSemanticLayer.java | 8 ++ .../semantic/RemoteSemanticLayer.java | 79 +++++++--- .../jsqlparser/SqlParserSelectHelperTest.java | 7 + .../src/main/resources/db/chat-schema-h2.sql | 135 ++++++++++-------- .../api/model/response/ExplainResp.java | 19 +++ .../api/query/request/ExplainSqlReq.java | 20 +++ .../semantic/query/rest/QueryController.java | 44 +++++- .../semantic/query/service/QueryService.java | 5 +- .../query/service/QueryServiceImpl.java | 36 ++++- 17 files changed, 367 insertions(+), 110 deletions(-) create mode 100644 semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ExplainResp.java create mode 100644 semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/ExplainSqlReq.java diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java index dbd0226ee..12d336ed2 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java @@ -8,9 +8,11 @@ import com.tencent.supersonic.semantic.api.model.request.PageDimensionReq; import com.tencent.supersonic.semantic.api.model.request.PageMetricReq; import com.tencent.supersonic.semantic.api.model.response.DomainResp; import com.tencent.supersonic.semantic.api.model.response.DimensionResp; +import com.tencent.supersonic.semantic.api.model.response.ExplainResp; import com.tencent.supersonic.semantic.api.model.response.ModelResp; import com.tencent.supersonic.semantic.api.model.response.MetricResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; +import com.tencent.supersonic.semantic.api.query.request.ExplainSqlReq; import com.tencent.supersonic.semantic.api.query.request.QueryDimValueReq; import com.tencent.supersonic.semantic.api.query.request.QueryDslReq; import com.tencent.supersonic.semantic.api.query.request.QueryMultiStructReq; @@ -32,14 +34,27 @@ import java.util.List; public interface SemanticLayer { QueryResultWithSchemaResp queryByStruct(QueryStructReq queryStructReq, User user); + QueryResultWithSchemaResp queryByMultiStruct(QueryMultiStructReq queryMultiStructReq, User user); + QueryResultWithSchemaResp queryByDsl(QueryDslReq queryDslReq, User user); + QueryResultWithSchemaResp queryDimValue(QueryDimValueReq queryDimValueReq, User user); + List getModelSchema(); + List getModelSchema(List ids); + ModelSchema getModelSchema(Long model, Boolean cacheEnable); + PageInfo getDimensionPage(PageDimensionReq pageDimensionCmd); + PageInfo getMetricPage(PageMetricReq pageMetricCmd); + List getDomainList(User user); + List getModelList(AuthType authType, Long domainId, User user); + + ExplainResp explain(ExplainSqlReq explainSqlReq, User user) throws Exception; + } diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticQuery.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticQuery.java index 91acf9016..70d263153 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticQuery.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticQuery.java @@ -3,6 +3,7 @@ package com.tencent.supersonic.chat.api.component; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; import com.tencent.supersonic.chat.api.pojo.response.QueryResult; +import com.tencent.supersonic.semantic.api.model.response.ExplainResp; import org.apache.calcite.sql.parser.SqlParseException; /** @@ -14,6 +15,8 @@ public interface SemanticQuery { QueryResult execute(User user) throws SqlParseException; + ExplainResp explain(User user); + SemanticParseInfo getParseInfo(); void setParseInfo(SemanticParseInfo parseInfo); diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SemanticParseInfo.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SemanticParseInfo.java index 671aa91a4..e8edc777b 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SemanticParseInfo.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/SemanticParseInfo.java @@ -37,6 +37,8 @@ public class SemanticParseInfo { private List elementMatches = new ArrayList<>(); private Map properties = new HashMap<>(); private EntityInfo entityInfo; + private String sql; + public Long getModelId() { return model != null ? model.getId() : 0L; } @@ -46,6 +48,7 @@ public class SemanticParseInfo { } private static class SchemaNameLengthComparator implements Comparator { + @Override public int compare(SchemaElement o1, SchemaElement o2) { int len1 = o1.getName().length(); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/dsl/DslQuery.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/dsl/DslQuery.java index 64b97bbf0..58764882a 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/dsl/DslQuery.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/dsl/DslQuery.java @@ -15,7 +15,10 @@ import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.QueryColumn; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.JsonUtil; +import com.tencent.supersonic.semantic.api.model.enums.QueryTypeEnum; +import com.tencent.supersonic.semantic.api.model.response.ExplainResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; +import com.tencent.supersonic.semantic.api.query.request.ExplainSqlReq; import com.tencent.supersonic.semantic.api.query.request.QueryDslReq; import java.util.ArrayList; import java.util.List; @@ -42,12 +45,10 @@ public class DslQuery extends PluginSemanticQuery { @Override public QueryResult execute(User user) { - String json = JsonUtil.toString(parseInfo.getProperties().get(Constants.CONTEXT)); - DSLParseResult dslParseResult = JsonUtil.toObject(json, DSLParseResult.class); - LLMResp llmResp = dslParseResult.getLlmResp(); + LLMResp llmResp = getLlmResp(); long startTime = System.currentTimeMillis(); - QueryDslReq queryDslReq = QueryReqBuilder.buildDslReq(llmResp.getCorrectorSql(), parseInfo.getModelId()); + QueryDslReq queryDslReq = getQueryDslReq(llmResp); QueryResultWithSchemaResp queryResp = semanticLayer.queryByDsl(queryDslReq, user); log.info("queryByDsl cost:{},querySql:{}", System.currentTimeMillis() - startTime, llmResp.getSqlOutput()); @@ -71,4 +72,30 @@ public class DslQuery extends PluginSemanticQuery { parseInfo.setProperties(null); return queryResult; } + + private LLMResp getLlmResp() { + String json = JsonUtil.toString(parseInfo.getProperties().get(Constants.CONTEXT)); + DSLParseResult dslParseResult = JsonUtil.toObject(json, DSLParseResult.class); + return dslParseResult.getLlmResp(); + } + + private QueryDslReq getQueryDslReq(LLMResp llmResp) { + QueryDslReq queryDslReq = QueryReqBuilder.buildDslReq(llmResp.getCorrectorSql(), parseInfo.getModelId()); + return queryDslReq; + } + + @Override + public ExplainResp explain(User user) { + ExplainSqlReq explainSqlReq = null; + try { + explainSqlReq = ExplainSqlReq.builder() + .queryTypeEnum(QueryTypeEnum.SQL) + .queryReq(getQueryDslReq(getLlmResp())) + .build(); + return semanticLayer.explain(explainSqlReq, user); + } catch (Exception e) { + log.error("explain error explainSqlReq:{}", explainSqlReq, e); + } + return null; + } } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/PluginSemanticQuery.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/PluginSemanticQuery.java index da2b48072..6e0341af0 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/PluginSemanticQuery.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/plugin/PluginSemanticQuery.java @@ -1,7 +1,9 @@ package com.tencent.supersonic.chat.query.plugin; +import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.chat.api.component.SemanticQuery; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; +import com.tencent.supersonic.semantic.api.model.response.ExplainResp; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -17,5 +19,8 @@ public abstract class PluginSemanticQuery implements SemanticQuery { return parseInfo; } - + @Override + public ExplainResp explain(User user) { + return null; + } } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java index d8348c077..4b5a8ac74 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java @@ -21,8 +21,11 @@ import com.tencent.supersonic.chat.utils.ComponentFactory; import com.tencent.supersonic.chat.utils.QueryReqBuilder; import com.tencent.supersonic.common.pojo.QueryColumn; import com.tencent.supersonic.common.util.ContextUtils; +import com.tencent.supersonic.semantic.api.model.enums.QueryTypeEnum; +import com.tencent.supersonic.semantic.api.model.response.ExplainResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; +import com.tencent.supersonic.semantic.api.query.request.ExplainSqlReq; import com.tencent.supersonic.semantic.api.query.request.QueryMultiStructReq; import com.tencent.supersonic.semantic.api.query.request.QueryStructReq; import java.io.Serializable; @@ -215,6 +218,22 @@ public abstract class RuleSemanticQuery implements SemanticQuery, Serializable { return queryResult; } + + @Override + public ExplainResp explain(User user) { + ExplainSqlReq explainSqlReq = null; + try { + explainSqlReq = ExplainSqlReq.builder() + .queryTypeEnum(QueryTypeEnum.STRUCT) + .queryReq(convertQueryStruct()) + .build(); + return semanticLayer.explain(explainSqlReq, user); + } catch (Exception e) { + log.error("explain error explainSqlReq:{}", explainSqlReq, e); + } + return null; + } + public QueryResult multiStructExecute(User user) { String queryMode = parseInfo.getQueryMode(); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java index 0e1a1e59f..e569efe60 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java @@ -27,6 +27,7 @@ import com.tencent.supersonic.chat.service.SemanticService; import com.tencent.supersonic.chat.service.StatisticsService; import com.tencent.supersonic.chat.utils.ComponentFactory; +import com.tencent.supersonic.semantic.api.model.response.ExplainResp; import java.util.List; import java.util.ArrayList; import java.util.Set; @@ -35,9 +36,7 @@ import java.util.Comparator; import java.util.Objects; import java.util.stream.Collectors; -//import com.tencent.supersonic.common.pojo.Aggregator; import com.tencent.supersonic.common.pojo.DateConf; -//import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.JsonUtil; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; @@ -64,8 +63,6 @@ public class QueryServiceImpl implements QueryService { @Autowired private StatisticsService statisticsService; - private final String entity = "ENTITY"; - @Value("${time.threshold: 100}") private Integer timeThreshold; @@ -109,12 +106,16 @@ public class QueryServiceImpl implements QueryService { .map(SemanticQuery::getParseInfo) .sorted(Comparator.comparingDouble(SemanticParseInfo::getScore).reversed()) .collect(Collectors.toList()); + selectedParses.forEach(parseInfo -> { - if (parseInfo.getQueryMode().contains(entity)) { + String queryMode = parseInfo.getQueryMode(); + if (QueryManager.isEntityQuery(queryMode)) { EntityInfo entityInfo = ContextUtils.getBean(SemanticService.class) .getEntityInfo(parseInfo, queryReq.getUser()); parseInfo.setEntityInfo(entityInfo); } + addExplainSql(queryReq, parseInfo); + }); List candidateParses = queryCtx.getCandidateQueries().stream() .map(SemanticQuery::getParseInfo).collect(Collectors.toList()); @@ -138,6 +139,19 @@ public class QueryServiceImpl implements QueryService { return parseResult; } + private void addExplainSql(QueryReq queryReq, SemanticParseInfo parseInfo) { + SemanticQuery semanticQuery = QueryManager.createQuery(parseInfo.getQueryMode()); + if (Objects.isNull(semanticQuery)) { + return; + } + semanticQuery.setParseInfo(parseInfo); + ExplainResp explain = semanticQuery.explain(queryReq.getUser()); + if (Objects.isNull(explain)) { + return; + } + parseInfo.setSql(explain.getSql()); + } + @Override public QueryResult performExecution(ExecuteQueryReq queryReq) throws Exception { ChatParseDO chatParseDO = chatService.getParseInfo(queryReq.getQueryId(), @@ -155,9 +169,9 @@ public class QueryServiceImpl implements QueryService { chatCtx.setAgentId(queryReq.getAgentId()); Long startTime = System.currentTimeMillis(); QueryResult queryResult = semanticQuery.execute(queryReq.getUser()); - Long endTime = System.currentTimeMillis(); + if (queryResult != null) { - timeCostDOList.add(StatisticsDO.builder().cost((int) (endTime - startTime)) + timeCostDOList.add(StatisticsDO.builder().cost((int) (System.currentTimeMillis() - startTime)) .interfaceName(semanticQuery.getClass().getSimpleName()).type(CostType.QUERY.getType()).build()); saveInfo(timeCostDOList, queryReq.getQueryText(), queryReq.getQueryId(), queryReq.getUser().getName(), queryReq.getChatId().longValue()); @@ -169,7 +183,6 @@ public class QueryServiceImpl implements QueryService { } chatCtx.setQueryText(queryReq.getQueryText()); chatCtx.setUser(queryReq.getUser().getName()); - //chatService.addQuery(queryResult, chatCtx); chatService.updateQuery(queryReq.getQueryId(), queryResult, chatCtx); } else { chatService.deleteChatQuery(queryReq.getQueryId()); @@ -179,8 +192,8 @@ public class QueryServiceImpl implements QueryService { } public void saveInfo(List timeCostDOList, - String queryText, Long queryId, - String userName, Long chatId) { + String queryText, Long queryId, + String userName, Long chatId) { List list = timeCostDOList.stream() .filter(o -> o.getCost() > timeThreshold).collect(Collectors.toList()); list.forEach(o -> { @@ -264,13 +277,6 @@ public class QueryServiceImpl implements QueryService { dateConf.setPeriod("DAY"); queryStructReq.setDateInfo(dateConf); queryStructReq.setLimit(20L); - - // List aggregators = new ArrayList<>(); - // Aggregator aggregator = new Aggregator(dimensionValueReq.getQueryFilter().getBizName(), - // AggOperatorEnum.DISTINCT); - // aggregators.add(aggregator); - // queryStructReq.setAggregators(aggregators); - queryStructReq.setModelId(dimensionValueReq.getModelId()); queryStructReq.setNativeQuery(true); List groups = new ArrayList<>(); diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/DefaultSemanticConfig.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/DefaultSemanticConfig.java index a28b71682..9038330cf 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/DefaultSemanticConfig.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/DefaultSemanticConfig.java @@ -38,4 +38,6 @@ public class DefaultSemanticConfig { @Value("${fetchModelList.path:/api/semantic/schema/model/list}") private String fetchModelListPath; + @Value("${explain.path:/api/semantic/query/explain}") + private String explainPath; } diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java index d0dceaaa5..c675a7217 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java @@ -8,12 +8,14 @@ import com.tencent.supersonic.common.pojo.enums.AuthType; import com.tencent.supersonic.semantic.api.model.request.ModelSchemaFilterReq; import com.tencent.supersonic.semantic.api.model.request.PageDimensionReq; import com.tencent.supersonic.semantic.api.model.request.PageMetricReq; +import com.tencent.supersonic.semantic.api.model.response.ExplainResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; import com.tencent.supersonic.semantic.api.model.response.ModelResp; import com.tencent.supersonic.semantic.api.model.response.MetricResp; import com.tencent.supersonic.semantic.api.model.response.DomainResp; import com.tencent.supersonic.semantic.api.model.response.DimensionResp; import com.tencent.supersonic.semantic.api.model.response.ModelSchemaResp; +import com.tencent.supersonic.semantic.api.query.request.ExplainSqlReq; import com.tencent.supersonic.semantic.api.query.request.QueryDimValueReq; import com.tencent.supersonic.semantic.api.query.request.QueryDslReq; import com.tencent.supersonic.semantic.api.query.request.QueryMultiStructReq; @@ -95,6 +97,12 @@ public class LocalSemanticLayer extends BaseSemanticLayer { return schemaService.getModelList(user, authType, domainId); } + @Override + public ExplainResp explain(ExplainSqlReq explainSqlReq, User user) throws Exception { + queryService = ContextUtils.getBean(QueryService.class); + return queryService.explain(explainSqlReq, user); + } + @Override public PageInfo getDimensionPage(PageDimensionReq pageDimensionCmd) { dimensionService = ContextUtils.getBean(DimensionService.class); diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java index 05630263d..723dc6a40 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java @@ -1,38 +1,44 @@ package com.tencent.supersonic.knowledge.semantic; +import static com.tencent.supersonic.common.pojo.Constants.LIST_LOWER; +import static com.tencent.supersonic.common.pojo.Constants.PAGESIZE_LOWER; +import static com.tencent.supersonic.common.pojo.Constants.TOTAL_LOWER; +import static com.tencent.supersonic.common.pojo.Constants.TRUE_LOWER; + import com.alibaba.fastjson.JSON; import com.github.pagehelper.PageInfo; import com.google.gson.Gson; import com.tencent.supersonic.auth.api.authentication.config.AuthenticationConfig; import com.tencent.supersonic.auth.api.authentication.constant.UserConstants; import com.tencent.supersonic.auth.api.authentication.pojo.User; +import com.tencent.supersonic.common.pojo.ResultData; +import com.tencent.supersonic.common.pojo.ReturnCode; +import com.tencent.supersonic.common.pojo.enums.AuthType; +import com.tencent.supersonic.common.pojo.exception.CommonException; import com.tencent.supersonic.common.util.ContextUtils; +import com.tencent.supersonic.common.util.JsonUtil; import com.tencent.supersonic.common.util.S2ThreadContext; import com.tencent.supersonic.common.util.ThreadContext; -import com.tencent.supersonic.common.util.JsonUtil; -import com.tencent.supersonic.common.pojo.enums.AuthType; import com.tencent.supersonic.semantic.api.model.request.ModelSchemaFilterReq; import com.tencent.supersonic.semantic.api.model.request.PageDimensionReq; import com.tencent.supersonic.semantic.api.model.request.PageMetricReq; -import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; -import com.tencent.supersonic.semantic.api.model.response.ModelResp; -import com.tencent.supersonic.semantic.api.model.response.MetricResp; -import com.tencent.supersonic.semantic.api.model.response.DomainResp; import com.tencent.supersonic.semantic.api.model.response.DimensionResp; +import com.tencent.supersonic.semantic.api.model.response.DomainResp; +import com.tencent.supersonic.semantic.api.model.response.ExplainResp; +import com.tencent.supersonic.semantic.api.model.response.MetricResp; +import com.tencent.supersonic.semantic.api.model.response.ModelResp; import com.tencent.supersonic.semantic.api.model.response.ModelSchemaResp; +import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; +import com.tencent.supersonic.semantic.api.query.request.ExplainSqlReq; import com.tencent.supersonic.semantic.api.query.request.QueryDimValueReq; import com.tencent.supersonic.semantic.api.query.request.QueryDslReq; import com.tencent.supersonic.semantic.api.query.request.QueryMultiStructReq; import com.tencent.supersonic.semantic.api.query.request.QueryStructReq; -import com.tencent.supersonic.common.pojo.exception.CommonException; -import com.tencent.supersonic.common.pojo.ResultData; -import com.tencent.supersonic.common.pojo.ReturnCode; - import java.net.URI; +import java.net.URL; +import java.util.LinkedHashMap; import java.util.List; import java.util.Objects; -import java.util.LinkedHashMap; - import lombok.extern.slf4j.Slf4j; import org.apache.logging.log4j.util.Strings; import org.springframework.beans.BeanUtils; @@ -45,11 +51,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; -import static com.tencent.supersonic.common.pojo.Constants.TRUE_LOWER; -import static com.tencent.supersonic.common.pojo.Constants.LIST_LOWER; -import static com.tencent.supersonic.common.pojo.Constants.TOTAL_LOWER; -import static com.tencent.supersonic.common.pojo.Constants.PAGESIZE_LOWER; - @Slf4j public class RemoteSemanticLayer extends BaseSemanticLayer { @@ -61,6 +62,10 @@ public class RemoteSemanticLayer extends BaseSemanticLayer { new ParameterizedTypeReference>() { }; + private ParameterizedTypeReference> explainTypeRef = + new ParameterizedTypeReference>() { + }; + @Override public QueryResultWithSchemaResp queryByStruct(QueryStructReq queryStructReq, User user) { DefaultSemanticConfig defaultSemanticConfig = ContextUtils.getBean(DefaultSemanticConfig.class); @@ -130,9 +135,10 @@ public class RemoteSemanticLayer extends BaseSemanticLayer { fillToken(headers); DefaultSemanticConfig defaultSemanticConfig = ContextUtils.getBean(DefaultSemanticConfig.class); - URI requestUrl = UriComponentsBuilder.fromHttpUrl( - defaultSemanticConfig.getSemanticUrl() + defaultSemanticConfig.getFetchModelSchemaPath()).build() - .encode().toUri(); + String semanticUrl = defaultSemanticConfig.getSemanticUrl(); + String fetchModelSchemaPath = defaultSemanticConfig.getFetchModelSchemaPath(); + URI requestUrl = UriComponentsBuilder.fromHttpUrl(semanticUrl + fetchModelSchemaPath) + .build().encode().toUri(); ModelSchemaFilterReq filter = new ModelSchemaFilterReq(); filter.setModelIds(ids); ParameterizedTypeReference>> responseTypeRef = @@ -179,6 +185,39 @@ public class RemoteSemanticLayer extends BaseSemanticLayer { return JsonUtil.toList(JsonUtil.toString(domainDescListObject), ModelResp.class); } + @Override + public ExplainResp explain(ExplainSqlReq explainResp, User user) throws Exception { + DefaultSemanticConfig defaultSemanticConfig = ContextUtils.getBean(DefaultSemanticConfig.class); + String semanticUrl = defaultSemanticConfig.getSemanticUrl(); + String explainPath = defaultSemanticConfig.getExplainPath(); + URL url = new URL(new URL(semanticUrl), explainPath); + return explain(url.toString(), JsonUtil.toString(explainResp)); + } + + public ExplainResp explain(String url, String jsonReq) { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + fillToken(headers); + URI requestUrl = UriComponentsBuilder.fromHttpUrl(url).build().encode().toUri(); + HttpEntity entity = new HttpEntity<>(jsonReq, headers); + log.info("url:{},explain:{}", url, entity.getBody()); + ResultData responseBody; + try { + RestTemplate restTemplate = ContextUtils.getBean(RestTemplate.class); + + ResponseEntity> responseEntity = restTemplate.exchange( + requestUrl, HttpMethod.POST, entity, explainTypeRef); + log.info("ApiResponse responseBody:{}", responseEntity); + responseBody = responseEntity.getBody(); + if (Objects.nonNull(responseBody.getData())) { + return responseBody.getData(); + } + return null; + } catch (Exception e) { + throw new RuntimeException("explain interface error,url:" + url, e); + } + } + public Object fetchHttpResult(String url, String bodyJson, HttpMethod httpMethod) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); diff --git a/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java b/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java index 65d870252..e17430eda 100644 --- a/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java +++ b/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java @@ -75,6 +75,13 @@ class SqlParserSelectHelperTest { + "user_id like '%alice%' AND publish_date > 10000 ORDER BY pv DESC LIMIT 1"); System.out.println(filterExpression); + + filterExpression = SqlParserSelectHelper.getFilterExpression( + "SELECT department, pv FROM s2 WHERE " + + "user_id like '%alice%' AND publish_date > 10000 " + + "group by department having sum(pv) > 2000 ORDER BY pv DESC LIMIT 1"); + + System.out.println(filterExpression); } diff --git a/launchers/chat/src/main/resources/db/chat-schema-h2.sql b/launchers/chat/src/main/resources/db/chat-schema-h2.sql index 8bcad7b6d..8e28d349e 100644 --- a/launchers/chat/src/main/resources/db/chat-schema-h2.sql +++ b/launchers/chat/src/main/resources/db/chat-schema-h2.sql @@ -1,3 +1,4 @@ +-- chat tables CREATE TABLE IF NOT EXISTS `s2_chat_context` ( `chat_id` BIGINT NOT NULL , -- context chat id @@ -7,7 +8,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_context` `semantic_parse` LONGVARCHAR DEFAULT NULL , -- parse data `ext_data` LONGVARCHAR DEFAULT NULL , -- extend data PRIMARY KEY (`chat_id`) -); + ); CREATE TABLE IF NOT EXISTS `s2_chat` ( @@ -21,7 +22,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat` `is_delete` INT DEFAULT '0' COMMENT 'is deleted', `is_top` INT DEFAULT '0' COMMENT 'is top', PRIMARY KEY (`chat_id`) -) ; + ) ; CREATE TABLE `s2_chat_query` @@ -64,72 +65,21 @@ CREATE TABLE `s2_chat_statistics` ); CREATE TABLE IF NOT EXISTS `s2_chat_config` ( - `id` INT NOT NULL AUTO_INCREMENT, - `model_id` INT DEFAULT NULL , - `chat_detail_config` varchar(655) , + `id` INT NOT NULL AUTO_INCREMENT, + `model_id` INT DEFAULT NULL , + `chat_detail_config` varchar(655) , `chat_agg_config` varchar(655) , - `recommended_questions` varchar(1500) , + `recommended_questions` varchar(1500) , `created_at` TIMESTAMP NOT NULL , `updated_at` TIMESTAMP NOT NULL , `created_by` varchar(100) NOT NULL , `updated_by` varchar(100) NOT NULL , `status` INT NOT NULL DEFAULT '0' , -- domain extension information status : 0 is normal, 1 is off the shelf, 2 is deleted PRIMARY KEY (`id`) -) ; - - --- CREATE TABLE IF NOT EXISTS `s2_chat_config` ( --- `id` INT NOT NULL AUTO_INCREMENT, --- `domain_id` INT DEFAULT NULL , --- `default_metrics` varchar(655) DEFAULT NULL, --- `visibility` varchar(655) , -- invisible dimension metric information --- `entity_info` varchar(655) , --- `dictionary_info` varchar(655) , -- dictionary-related dimension setting information --- `created_at` TIMESTAMP NOT NULL , --- `updated_at` TIMESTAMP NOT NULL , --- `created_by` varchar(100) NOT NULL , --- `updated_by` varchar(100) NOT NULL , --- `status` INT NOT NULL DEFAULT '0' , -- domain extension information status : 0 is normal, 1 is off the shelf, 2 is deleted --- PRIMARY KEY (`id`) --- ) ; + ) ; COMMENT ON TABLE s2_chat_config IS 'chat config information table '; - - -CREATE TABLE IF NOT EXISTS `s2_dictionary` ( - `id` INT NOT NULL AUTO_INCREMENT, - `domain_id` INT NOT NULL , - `dim_value_infos` LONGVARCHAR , -- dimension value setting information - `created_at` TIMESTAMP NOT NULL , - `updated_at` TIMESTAMP NOT NULL , - `created_by` varchar(100) NOT NULL , - `updated_by` varchar(100) DEFAULT NULL , - `status` INT NOT NULL DEFAULT '0' , -- domain extension information status : 0 is normal, 1 is off the shelf, 2 is deleted - PRIMARY KEY (`id`), - UNIQUE (domain_id) - ); -COMMENT ON TABLE s2_dictionary IS 'dictionary configuration information table'; - - -CREATE TABLE IF NOT EXISTS `s2_dictionary_task` ( - `id` INT NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL , -- task name - `description` varchar(255) , - `command`LONGVARCHAR NOT NULL , -- task Request Parameters - `command_md5` varchar(255) NOT NULL , -- task Request Parameters md5 - `dimension_ids` varchar(500) , - `status` INT NOT NULL , -- the final status of the task - `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , - `created_by` varchar(100) NOT NULL , - `progress` DOUBLE default 0.00 , -- task real-time progress - `elapsed_ms` bigINT DEFAULT NULL , -- the task takes time in milliseconds - `message` LONGVARCHAR , -- remark related information - PRIMARY KEY (`id`) -); -COMMENT ON TABLE s2_dictionary_task IS 'dictionary task information table'; - - create table s2_user ( id INT AUTO_INCREMENT, @@ -141,6 +91,28 @@ create table s2_user ); COMMENT ON TABLE s2_user IS 'user information table'; + +CREATE TABLE IF NOT EXISTS `s2_semantic_pasre_info` ( + `id` INT NOT NULL AUTO_INCREMENT, + `trace_id` varchar(200) NOT NULL , + `model_id` INT NOT NULL , + `dimensions`LONGVARCHAR , + `metrics`LONGVARCHAR , + `orders`LONGVARCHAR , + `filters`LONGVARCHAR , + `date_info`LONGVARCHAR , + `limit` INT NOT NULL , + `native_query` TINYINT NOT NULL DEFAULT '0' , + `sql`LONGVARCHAR , + `created_at` TIMESTAMP NOT NULL , + `created_by` varchar(100) NOT NULL , + `status` INT NOT NULL , + `elapsed_ms` bigINT DEFAULT NULL , + PRIMARY KEY (`id`) + ); +COMMENT ON TABLE s2_semantic_pasre_info IS 'semantic layer sql parsing information table'; + + CREATE TABLE IF NOT EXISTS `s2_plugin` ( `id` INT AUTO_INCREMENT, @@ -157,5 +129,50 @@ CREATE TABLE IF NOT EXISTS `s2_plugin` `config` LONGVARCHAR NULL, `comment` LONGVARCHAR NULL, PRIMARY KEY (`id`) -); COMMENT ON TABLE s2_plugin IS 'plugin information table'; + ); COMMENT ON TABLE s2_plugin IS 'plugin information table'; + +CREATE TABLE IF NOT EXISTS s2_agent +( + id int AUTO_INCREMENT, + name varchar(100) null, + description varchar(500) null, + status int null, + examples varchar(500) null, + config varchar(2000) null, + created_by varchar(100) null, + created_at TIMESTAMP null, + updated_by varchar(100) null, + updated_at TIMESTAMP null, + enable_search int null, + PRIMARY KEY (`id`) + ); COMMENT ON TABLE s2_agent IS 'agent information table'; + + +-------demo for semantic and chat +CREATE TABLE IF NOT EXISTS `s2_user_department` ( + `user_name` varchar(200) NOT NULL, + `department` varchar(200) NOT NULL -- department of user + ); +COMMENT ON TABLE s2_user_department IS 'user_department_info'; + + +CREATE TABLE IF NOT EXISTS `s2_dictionary_task` ( + `id` INT NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL , -- task name + `description` varchar(255) , + `command`LONGVARCHAR NOT NULL , -- task Request Parameters + `command_md5` varchar(255) NOT NULL , -- task Request Parameters md5 + `status` INT NOT NULL , -- the final status of the task + `dimension_ids` varchar(500) NULL , + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP , + `created_by` varchar(100) NOT NULL , + `progress` DOUBLE default 0.00 , -- task real-time progress + `elapsed_ms` bigINT DEFAULT NULL , -- the task takes time in milliseconds + `message` LONGVARCHAR , -- remark related information + PRIMARY KEY (`id`) + ); +COMMENT ON TABLE s2_dictionary_task IS 'dictionary task information table'; + + + diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ExplainResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ExplainResp.java new file mode 100644 index 000000000..96f5fa8e6 --- /dev/null +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/ExplainResp.java @@ -0,0 +1,19 @@ +package com.tencent.supersonic.semantic.api.model.response; + +import java.io.Serializable; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Data +@ToString +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ExplainResp implements Serializable { + + private String sql; + +} diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/ExplainSqlReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/ExplainSqlReq.java new file mode 100644 index 000000000..eabf702fa --- /dev/null +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/ExplainSqlReq.java @@ -0,0 +1,20 @@ +package com.tencent.supersonic.semantic.api.query.request; + +import com.tencent.supersonic.semantic.api.model.enums.QueryTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Data +@ToString +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ExplainSqlReq { + + private QueryTypeEnum queryTypeEnum; + + private T queryReq; +} diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/rest/QueryController.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/rest/QueryController.java index ef77abbe5..eafe6c0d8 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/rest/QueryController.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/rest/QueryController.java @@ -2,18 +2,22 @@ package com.tencent.supersonic.semantic.query.rest; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.utils.UserHolder; +import com.tencent.supersonic.common.util.JsonUtil; +import com.tencent.supersonic.semantic.api.model.enums.QueryTypeEnum; +import com.tencent.supersonic.semantic.api.model.response.ExplainResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; import com.tencent.supersonic.semantic.api.model.response.SqlParserResp; +import com.tencent.supersonic.semantic.api.query.request.ExplainSqlReq; +import com.tencent.supersonic.semantic.api.query.request.ItemUseReq; +import com.tencent.supersonic.semantic.api.query.request.ParseSqlReq; import com.tencent.supersonic.semantic.api.query.request.QueryDimValueReq; import com.tencent.supersonic.semantic.api.query.request.QueryDslReq; -import com.tencent.supersonic.semantic.api.query.request.ParseSqlReq; -import com.tencent.supersonic.semantic.api.query.request.QueryStructReq; import com.tencent.supersonic.semantic.api.query.request.QueryMultiStructReq; -import com.tencent.supersonic.semantic.api.query.request.ItemUseReq; +import com.tencent.supersonic.semantic.api.query.request.QueryStructReq; import com.tencent.supersonic.semantic.api.query.response.ItemUseResp; -import com.tencent.supersonic.semantic.query.service.SemanticQueryEngine; -import com.tencent.supersonic.semantic.query.service.QueryService; import com.tencent.supersonic.semantic.query.persistence.pojo.QueryStatement; +import com.tencent.supersonic.semantic.query.service.QueryService; +import com.tencent.supersonic.semantic.query.service.SemanticQueryEngine; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -89,10 +93,36 @@ public class QueryController { @PostMapping("/queryDimValue") public QueryResultWithSchemaResp queryDimValue(@RequestBody QueryDimValueReq queryDimValueReq, - HttpServletRequest request, - HttpServletResponse response) { + HttpServletRequest request, + HttpServletResponse response) { User user = UserHolder.findUser(request, response); return queryService.queryDimValue(queryDimValueReq, user); } + @PostMapping("/explain") + public ExplainResp explain(@RequestBody ExplainSqlReq explainSqlReq, + HttpServletRequest request, + HttpServletResponse response) throws Exception { + + User user = UserHolder.findUser(request, response); + String queryReqJson = JsonUtil.toString(explainSqlReq.getQueryReq()); + QueryTypeEnum queryTypeEnum = explainSqlReq.getQueryTypeEnum(); + + if (QueryTypeEnum.SQL.equals(queryTypeEnum)) { + QueryDslReq queryDslReq = JsonUtil.toObject(queryReqJson, QueryDslReq.class); + ExplainSqlReq explainSqlReqNew = ExplainSqlReq.builder() + .queryReq(queryDslReq) + .queryTypeEnum(queryTypeEnum).build(); + return queryService.explain(explainSqlReqNew, user); + } + if (QueryTypeEnum.STRUCT.equals(queryTypeEnum)) { + QueryStructReq queryStructReq = JsonUtil.toObject(queryReqJson, QueryStructReq.class); + ExplainSqlReq explainSqlReqNew = ExplainSqlReq.builder() + .queryReq(queryStructReq) + .queryTypeEnum(queryTypeEnum).build(); + return queryService.explain(explainSqlReqNew, user); + } + return null; + } + } diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryService.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryService.java index 28b04ed95..8e8a6e4c8 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryService.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryService.java @@ -1,11 +1,13 @@ package com.tencent.supersonic.semantic.query.service; import com.tencent.supersonic.auth.api.authentication.pojo.User; +import com.tencent.supersonic.semantic.api.model.response.ExplainResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; +import com.tencent.supersonic.semantic.api.query.request.ExplainSqlReq; import com.tencent.supersonic.semantic.api.query.request.ItemUseReq; import com.tencent.supersonic.semantic.api.query.request.QueryDimValueReq; -import com.tencent.supersonic.semantic.api.query.request.QueryMultiStructReq; import com.tencent.supersonic.semantic.api.query.request.QueryDslReq; +import com.tencent.supersonic.semantic.api.query.request.QueryMultiStructReq; import com.tencent.supersonic.semantic.api.query.request.QueryStructReq; import com.tencent.supersonic.semantic.api.query.response.ItemUseResp; import java.util.List; @@ -25,4 +27,5 @@ public interface QueryService { List getStatInfo(ItemUseReq itemUseCommend); + ExplainResp explain(ExplainSqlReq explainSqlReq, User user) throws Exception; } diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryServiceImpl.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryServiceImpl.java index 1b94f9651..3c0c0fc11 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryServiceImpl.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryServiceImpl.java @@ -6,12 +6,15 @@ import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum; import com.tencent.supersonic.common.util.cache.CacheUtils; import com.tencent.supersonic.common.util.ContextUtils; +import com.tencent.supersonic.semantic.api.model.enums.QueryTypeEnum; import com.tencent.supersonic.semantic.api.model.request.ModelSchemaFilterReq; +import com.tencent.supersonic.semantic.api.model.response.ExplainResp; import com.tencent.supersonic.semantic.api.model.response.ModelSchemaResp; import com.tencent.supersonic.semantic.api.model.response.QueryResultWithSchemaResp; import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; import com.tencent.supersonic.semantic.api.query.pojo.Cache; import com.tencent.supersonic.semantic.api.query.pojo.Filter; +import com.tencent.supersonic.semantic.api.query.request.ExplainSqlReq; import com.tencent.supersonic.semantic.api.query.request.ItemUseReq; import com.tencent.supersonic.semantic.api.query.request.QueryDimValueReq; import com.tencent.supersonic.semantic.api.query.request.QueryDslReq; @@ -64,6 +67,11 @@ public class QueryServiceImpl implements QueryService { @Override public Object queryBySql(QueryDslReq querySqlCmd, User user) throws Exception { + QueryStatement queryStatement = convertToQueryStatement(querySqlCmd, user); + return semanticQueryEngine.execute(queryStatement); + } + + private QueryStatement convertToQueryStatement(QueryDslReq querySqlCmd, User user) throws Exception { ModelSchemaFilterReq filter = new ModelSchemaFilterReq(); List modelIds = new ArrayList<>(); modelIds.add(querySqlCmd.getModelId()); @@ -74,7 +82,7 @@ public class QueryServiceImpl implements QueryService { QueryStatement queryStatement = queryReqConverter.convert(querySqlCmd, domainSchemas); queryStatement.setModelId(querySqlCmd.getModelId()); - return semanticQueryEngine.execute(queryStatement); + return queryStatement; } @Override @@ -183,6 +191,32 @@ public class QueryServiceImpl implements QueryService { return statInfos; } + @Override + public ExplainResp explain(ExplainSqlReq explainSqlReq, User user) throws Exception { + QueryTypeEnum queryTypeEnum = explainSqlReq.getQueryTypeEnum(); + T queryReq = explainSqlReq.getQueryReq(); + + if (QueryTypeEnum.SQL.equals(queryTypeEnum) && queryReq instanceof QueryDslReq) { + QueryStatement queryStatement = convertToQueryStatement((QueryDslReq) queryReq, user); + return getExplainResp(queryStatement); + } + if (QueryTypeEnum.STRUCT.equals(queryTypeEnum) && queryReq instanceof QueryStructReq) { + QueryStatement queryStatement = semanticQueryEngine.plan((QueryStructReq) queryReq); + return getExplainResp(queryStatement); + } + + throw new IllegalArgumentException("Parameters are invalid, explainSqlReq: " + explainSqlReq); + } + + private ExplainResp getExplainResp(QueryStatement queryStatement) { + String sql = ""; + if (Objects.nonNull(queryStatement)) { + sql = queryStatement.getSql(); + } + return ExplainResp.builder().sql(sql).build(); + } + + private boolean isCache(QueryStructReq queryStructCmd) { if (!cacheEnable) { return false; From 6a5a95e543edbdc1c7c4dffa6582b06c8d7bdbd3 Mon Sep 17 00:00:00 2001 From: williamhliu <137068196+williamhliu@users.noreply.github.com> Date: Tue, 19 Sep 2023 19:23:00 +0800 Subject: [PATCH 02/11] [fix](webapp) fix front end package version issues (#104) --- webapp/.gitignore | 1 - webapp/packages/chat-sdk/.gitignore | 2 - webapp/packages/supersonic-fe/.gitignore | 1 - webapp/packages/supersonic-fe/package.json | 2 +- webapp/pnpm-lock.yaml | 26034 +++++++++++++++++++ 5 files changed, 26035 insertions(+), 5 deletions(-) create mode 100644 webapp/pnpm-lock.yaml diff --git a/webapp/.gitignore b/webapp/.gitignore index 0102f4656..679cdeb79 100644 --- a/webapp/.gitignore +++ b/webapp/.gitignore @@ -19,7 +19,6 @@ supersonic-webapp.tar.gz package-lock.json yarn.lock -pnpm-lock.yaml # misc .DS_Store diff --git a/webapp/packages/chat-sdk/.gitignore b/webapp/packages/chat-sdk/.gitignore index 149d63661..bea504c15 100644 --- a/webapp/packages/chat-sdk/.gitignore +++ b/webapp/packages/chat-sdk/.gitignore @@ -13,8 +13,6 @@ /dist -pnpm-lock.yaml - # misc .DS_Store .env.local diff --git a/webapp/packages/supersonic-fe/.gitignore b/webapp/packages/supersonic-fe/.gitignore index a121849a0..8e11232af 100644 --- a/webapp/packages/supersonic-fe/.gitignore +++ b/webapp/packages/supersonic-fe/.gitignore @@ -20,7 +20,6 @@ yarn-error.log .idea yarn.lock package-lock.json -pnpm-lock.yaml *bak .vscode diff --git a/webapp/packages/supersonic-fe/package.json b/webapp/packages/supersonic-fe/package.json index f63f686bb..3054f6432 100644 --- a/webapp/packages/supersonic-fe/package.json +++ b/webapp/packages/supersonic-fe/package.json @@ -76,7 +76,7 @@ "antd": "^4.24.8", "classnames": "^2.2.6", "copy-to-clipboard": "^3.3.1", - "cross-env": "^7.0.0", + "cross-env": "^7.0.3", "crypto-js": "^4.0.0", "echarts": "^5.0.2", "echarts-for-react": "^3.0.1", diff --git a/webapp/pnpm-lock.yaml b/webapp/pnpm-lock.yaml new file mode 100644 index 000000000..4cc108d68 --- /dev/null +++ b/webapp/pnpm-lock.yaml @@ -0,0 +1,26034 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + packages/chat-sdk: + dependencies: + '@ant-design/icons': + specifier: ^4.7.0 + version: 4.8.1(react-dom@18.2.0)(react@18.2.0) + '@uiw/react-watermark': + specifier: ^0.0.5 + version: 0.0.5(react-dom@18.2.0)(react@18.2.0) + antd: + specifier: ^5.5.2 + version: 5.9.0(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + axios: + specifier: ^1.4.0 + version: 1.4.0 + classnames: + specifier: ^2.3.2 + version: 2.3.2 + echarts: + specifier: ^5.4.2 + version: 5.4.3 + lodash: + specifier: ^4.17.11 + version: 4.17.21 + moment: + specifier: ^2.29.4 + version: 2.29.4 + react-spinners: + specifier: ^0.13.8 + version: 0.13.8(react-dom@18.2.0)(react@18.2.0) + tslib: + specifier: ^2.5.2 + version: 2.6.2 + devDependencies: + '@babel/core': + specifier: ^7.16.0 + version: 7.22.17 + '@pmmmwh/react-refresh-webpack-plugin': + specifier: ^0.5.3 + version: 0.5.11(react-refresh@0.11.0)(webpack-dev-server@4.15.1)(webpack@5.88.2) + '@rollup/plugin-commonjs': + specifier: ^25.0.0 + version: 25.0.4(rollup@3.29.1) + '@rollup/plugin-json': + specifier: ^6.0.0 + version: 6.0.0(rollup@3.29.1) + '@rollup/plugin-node-resolve': + specifier: ^15.0.2 + version: 15.2.1(rollup@3.29.1) + '@rollup/plugin-replace': + specifier: ^5.0.2 + version: 5.0.2(rollup@3.29.1) + '@rollup/plugin-terser': + specifier: ^0.4.3 + version: 0.4.3(rollup@3.29.1) + '@svgr/webpack': + specifier: ^5.5.0 + version: 5.5.0 + '@testing-library/jest-dom': + specifier: ^5.16.5 + version: 5.17.0 + '@testing-library/react': + specifier: ^13.4.0 + version: 13.4.0(react-dom@18.2.0)(react@18.2.0) + '@testing-library/user-event': + specifier: ^13.5.0 + version: 13.5.0(@testing-library/dom@9.3.1) + '@types/jest': + specifier: ^27.5.2 + version: 27.5.2 + '@types/node': + specifier: ^16.18.31 + version: 16.18.50 + '@types/react': + specifier: ^18.2.6 + version: 18.2.21 + '@types/react-dom': + specifier: ^18.2.4 + version: 18.2.7 + autoprefixer: + specifier: ^10.4.14 + version: 10.4.15(postcss@8.4.29) + babel-jest: + specifier: ^27.4.2 + version: 27.5.1(@babel/core@7.22.17) + babel-loader: + specifier: ^8.2.3 + version: 8.3.0(@babel/core@7.22.17)(webpack@5.88.2) + babel-plugin-named-asset-import: + specifier: ^0.3.8 + version: 0.3.8(@babel/core@7.22.17) + babel-preset-react-app: + specifier: ^10.0.1 + version: 10.0.1 + bfj: + specifier: ^7.0.2 + version: 7.1.0 + browserslist: + specifier: ^4.18.1 + version: 4.21.10 + camelcase: + specifier: ^6.2.1 + version: 6.3.0 + case-sensitive-paths-webpack-plugin: + specifier: ^2.4.0 + version: 2.4.0 + css-loader: + specifier: ^6.5.1 + version: 6.8.1(webpack@5.88.2) + css-minimizer-webpack-plugin: + specifier: ^3.2.0 + version: 3.4.1(webpack@5.88.2) + cssnano: + specifier: ^6.0.1 + version: 6.0.1(postcss@8.4.29) + dotenv: + specifier: ^10.0.0 + version: 10.0.0 + dotenv-expand: + specifier: ^5.1.0 + version: 5.1.0 + eslint: + specifier: ^8.3.0 + version: 8.49.0 + eslint-config-react-app: + specifier: ^7.0.1 + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0)(jest@27.5.1)(typescript@4.9.5) + eslint-webpack-plugin: + specifier: ^3.1.1 + version: 3.2.0(eslint@8.49.0)(webpack@5.88.2) + file-loader: + specifier: ^6.2.0 + version: 6.2.0(webpack@5.88.2) + fs-extra: + specifier: ^10.0.0 + version: 10.1.0 + html-webpack-plugin: + specifier: ^5.5.0 + version: 5.5.3(webpack@5.88.2) + http-proxy-middleware: + specifier: ^2.0.6 + version: 2.0.6(@types/express@4.17.17) + identity-obj-proxy: + specifier: ^3.0.0 + version: 3.0.0 + jest: + specifier: ^27.4.3 + version: 27.5.1 + jest-resolve: + specifier: ^27.4.2 + version: 27.5.1 + jest-watch-typeahead: + specifier: ^1.0.0 + version: 1.1.0(jest@27.5.1) + less: + specifier: ^4.1.3 + version: 4.2.0 + less-loader: + specifier: ^11.1.0 + version: 11.1.3(less@4.2.0)(webpack@5.88.2) + mini-css-extract-plugin: + specifier: ^2.4.5 + version: 2.7.6(webpack@5.88.2) + postcss: + specifier: ^8.4.4 + version: 8.4.29 + postcss-flexbugs-fixes: + specifier: ^5.0.2 + version: 5.0.2(postcss@8.4.29) + postcss-loader: + specifier: ^6.2.1 + version: 6.2.1(postcss@8.4.29)(webpack@5.88.2) + postcss-modules: + specifier: ^6.0.0 + version: 6.0.0(postcss@8.4.29) + postcss-normalize: + specifier: ^10.0.1 + version: 10.0.1(browserslist@4.21.10)(postcss@8.4.29) + postcss-preset-env: + specifier: ^7.0.1 + version: 7.8.3(postcss@8.4.29) + prompts: + specifier: ^2.4.2 + version: 2.4.2 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-app-polyfill: + specifier: ^3.0.0 + version: 3.0.0 + react-dev-utils: + specifier: ^12.0.1 + version: 12.0.1(eslint@8.49.0)(typescript@4.9.5)(webpack@5.88.2) + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-refresh: + specifier: ^0.11.0 + version: 0.11.0 + resolve: + specifier: ^1.20.0 + version: 1.22.4 + resolve-url-loader: + specifier: ^4.0.0 + version: 4.0.0 + rimraf: + specifier: ^5.0.1 + version: 5.0.1 + rollup: + specifier: ^3.22.1 + version: 3.29.1 + rollup-plugin-exclude-dependencies-from-bundle: + specifier: ^1.1.23 + version: 1.1.23(rollup@3.29.1) + rollup-plugin-less: + specifier: ^1.1.3 + version: 1.1.3 + rollup-plugin-postcss: + specifier: ^4.0.2 + version: 4.0.2(postcss@8.4.29) + rollup-plugin-typescript2: + specifier: ^0.34.1 + version: 0.34.1(rollup@3.29.1)(typescript@4.9.5) + sass-loader: + specifier: ^12.3.0 + version: 12.6.0(webpack@5.88.2) + semver: + specifier: ^7.3.5 + version: 7.5.4 + source-map-loader: + specifier: ^3.0.0 + version: 3.0.2(webpack@5.88.2) + style-loader: + specifier: ^3.3.1 + version: 3.3.3(webpack@5.88.2) + tailwindcss: + specifier: ^3.0.2 + version: 3.3.3 + terser-webpack-plugin: + specifier: ^5.2.5 + version: 5.3.9(webpack@5.88.2) + typescript: + specifier: ^4.9.5 + version: 4.9.5 + web-vitals: + specifier: ^2.1.4 + version: 2.1.4 + webpack: + specifier: ^5.64.4 + version: 5.88.2 + webpack-dev-server: + specifier: ^4.6.0 + version: 4.15.1(webpack@5.88.2) + webpack-manifest-plugin: + specifier: ^4.0.2 + version: 4.1.1(webpack@5.88.2) + workbox-webpack-plugin: + specifier: ^6.4.1 + version: 6.6.1(webpack@5.88.2) + + packages/supersonic-fe: + dependencies: + '@ant-design/charts': + specifier: ^1.3.3 + version: 1.4.2(@ant-design/icons@4.8.1)(antd@4.24.14)(classnames@2.3.2)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2)(reflect-metadata@0.1.13) + '@ant-design/cssinjs': + specifier: ^1.10.1 + version: 1.17.0(react-dom@17.0.2)(react@17.0.2) + '@ant-design/icons': + specifier: ^4.7.0 + version: 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-card': + specifier: ^1.11.13 + version: 1.20.22(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-components': + specifier: ^2.4.4 + version: 2.6.18(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-descriptions': + specifier: ^1.0.19 + version: 1.12.7(prop-types@15.8.1)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-form': + specifier: ^1.23.0 + version: 1.74.7(prop-types@15.8.1)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-layout': + specifier: ^6.38.22 + version: 6.38.22(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-table': + specifier: ^2.80.6 + version: 2.80.8(prop-types@15.8.1)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@antv/dom-util': + specifier: ^2.0.4 + version: 2.0.4 + '@antv/g6': + specifier: ^4.8.14 + version: 4.8.22 + '@antv/g6-core': + specifier: ^0.8.21 + version: 0.8.22 + '@antv/layout': + specifier: ^0.3.20 + version: 0.3.23(dagre@0.8.5) + '@antv/xflow': + specifier: ^1.0.55 + version: 1.0.55(@ant-design/icons@4.8.1)(antd@4.24.14)(classnames@2.3.2)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2)(reflect-metadata@0.1.13) + '@babel/runtime': + specifier: ^7.22.5 + version: 7.22.15 + '@types/numeral': + specifier: ^2.0.2 + version: 2.0.2 + '@types/react-draft-wysiwyg': + specifier: ^1.13.2 + version: 1.13.4 + '@types/react-syntax-highlighter': + specifier: ^13.5.0 + version: 13.5.2 + '@umijs/route-utils': + specifier: ^1.0.33 + version: 1.0.37 + ace-builds: + specifier: ^1.4.12 + version: 1.24.2 + ahooks: + specifier: ^3.7.7 + version: 3.7.8(react@17.0.2) + antd: + specifier: ^4.24.8 + version: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: + specifier: ^2.2.6 + version: 2.3.2 + copy-to-clipboard: + specifier: ^3.3.1 + version: 3.3.3 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + crypto-js: + specifier: ^4.0.0 + version: 4.1.1 + echarts: + specifier: ^5.0.2 + version: 5.4.3 + echarts-for-react: + specifier: ^3.0.1 + version: 3.0.2(echarts@5.4.3)(react@17.0.2) + eslint-config-tencent: + specifier: ^1.0.4 + version: 1.0.4(@babel/core@7.22.17)(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint-plugin-prettier@4.2.1)(eslint@7.32.0)(prettier@2.8.8) + jsencrypt: + specifier: ^3.0.1 + version: 3.3.2 + lodash: + specifier: ^4.17.11 + version: 4.17.21 + moment: + specifier: ^2.29.1 + version: 2.29.4 + numeral: + specifier: ^2.0.6 + version: 2.0.6 + omit.js: + specifier: ^2.0.2 + version: 2.0.2 + path-to-regexp: + specifier: ^2.4.0 + version: 2.4.0 + qs: + specifier: ^6.9.0 + version: 6.11.2 + react: + specifier: ^17.0.0 + version: 17.0.2 + react-ace: + specifier: ^9.4.1 + version: 9.5.0(react-dom@17.0.2)(react@17.0.2) + react-dev-inspector: + specifier: ^1.8.4 + version: 1.9.0(eslint@7.32.0)(react@17.0.2)(typescript@4.9.5)(webpack@5.88.2) + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + react-fast-marquee: + specifier: ^1.6.0 + version: 1.6.0(react-dom@17.0.2)(react@17.0.2) + react-helmet-async: + specifier: ^1.0.4 + version: 1.3.0(react-dom@17.0.2)(react@17.0.2) + react-spinners: + specifier: ^0.10.6 + version: 0.10.6(react-dom@17.0.2)(react@17.0.2) + react-split-pane: + specifier: ^2.0.3 + version: 2.0.3 + react-syntax-highlighter: + specifier: ^15.4.3 + version: 15.5.0(react@17.0.2) + sql-formatter: + specifier: ^2.3.3 + version: 2.3.4 + supersonic-chat-sdk: + specifier: 0.0.0 + version: link:../chat-sdk + umi: + specifier: '3.5' + version: 3.5.41(react-router@5.3.4) + umi-request: + specifier: ^1.0.8 + version: 1.4.0 + devDependencies: + '@ant-design/pro-cli': + specifier: ^2.0.2 + version: 2.1.5 + '@types/classnames': + specifier: ^2.2.7 + version: 2.3.1 + '@types/crypto-js': + specifier: ^4.0.1 + version: 4.1.2 + '@types/draftjs-to-html': + specifier: ^0.8.0 + version: 0.8.1 + '@types/echarts': + specifier: ^4.9.4 + version: 4.9.18 + '@types/express': + specifier: ^4.17.0 + version: 4.17.17 + '@types/history': + specifier: ^4.7.2 + version: 4.7.11 + '@types/jest': + specifier: ^26.0.0 + version: 26.0.24 + '@types/lodash': + specifier: ^4.14.144 + version: 4.14.198 + '@types/pinyin': + specifier: ^2.8.3 + version: 2.10.0 + '@types/qs': + specifier: ^6.5.3 + version: 6.9.8 + '@types/react': + specifier: ^17.0.0 + version: 17.0.65 + '@types/react-dom': + specifier: ^17.0.0 + version: 17.0.20 + '@types/react-helmet': + specifier: ^6.1.0 + version: 6.1.6 + '@umijs/fabric': + specifier: ^2.4.0 + version: 2.14.1 + '@umijs/plugin-blocks': + specifier: ^2.0.5 + version: 2.2.2(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2)(umi@3.5.41) + '@umijs/plugin-esbuild': + specifier: ^1.0.1 + version: 1.4.2(umi@3.5.41)(webpack@5.88.2) + '@umijs/preset-ant-design-pro': + specifier: ^1.2.0 + version: 1.3.3(react-dom@17.0.2)(react@17.0.2)(umi@3.5.41) + '@umijs/preset-dumi': + specifier: ^1.1.0-rc.6 + version: 1.1.53(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2)(typescript@4.9.5)(umi@3.5.41) + '@umijs/preset-react': + specifier: ^1.7.4 + version: 1.8.32(@ant-design/icons@4.8.1)(@ant-design/pro-layout@6.38.22)(dva-core@1.6.0-beta.7)(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2)(redbox-react@1.6.0)(umi@3.5.41) + '@umijs/yorkie': + specifier: ^2.0.3 + version: 2.0.5 + carlo: + specifier: ^0.9.46 + version: 0.9.46 + cross-port-killer: + specifier: ^1.1.1 + version: 1.4.0 + detect-installer: + specifier: ^1.0.1 + version: 1.0.2 + eslint: + specifier: ^7.1.0 + version: 7.32.0 + eslint-plugin-chalk: + specifier: ^1.0.0 + version: 1.0.0(eslint@7.32.0) + eslint-plugin-import: + specifier: ^2.27.5 + version: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@7.32.0) + express: + specifier: ^4.17.1 + version: 4.18.2 + gh-pages: + specifier: ^3.0.0 + version: 3.2.3 + jsdom-global: + specifier: ^3.0.2 + version: 3.0.2(jsdom@22.1.0) + lint-staged: + specifier: ^10.0.0 + version: 10.5.4 + prettier: + specifier: ^2.3.1 + version: 2.8.8 + pro-download: + specifier: 1.0.1 + version: 1.0.1 + puppeteer-core: + specifier: ^5.0.0 + version: 5.5.0 + stylelint: + specifier: ^13.0.0 + version: 13.13.1 + typescript: + specifier: ^4.0.3 + version: 4.9.5 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + /@adobe/css-tools@4.3.1: + resolution: {integrity: sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==} + dev: true + + /@ahooksjs/use-request@2.8.15(react@17.0.2): + resolution: {integrity: sha512-xhVaM4fyIiAMdVFuuU5i3CFUdFa/IblF+fvITVMFaUEO3w/V5tVCAF6WIA3T03n1/RPuzRkA7Ao1PFtSGtGelw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + dependencies: + lodash.debounce: 4.0.8 + lodash.throttle: 4.1.1 + react: 17.0.2 + dev: true + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: true + + /@amap/amap-jsapi-loader@1.0.1: + resolution: {integrity: sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==} + dev: false + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + /@ant-design/charts@1.4.2(@ant-design/icons@4.8.1)(antd@4.24.14)(classnames@2.3.2)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2)(reflect-metadata@0.1.13): + resolution: {integrity: sha512-BcVx6AAnwxSdzAVUZReSuvUVtnT5AkJivq3wmcYj17scll26HHficg35yimGskAj3Gu1upYjBQBz6Tk7GEMJsQ==} + peerDependencies: + '@ant-design/icons': ^4.6.0 + antd: ^4.6.3 + lodash: ^4.17.20 + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@ant-design/flowchart': 1.2.2(@ant-design/icons@4.8.1)(antd@4.24.14)(classnames@2.3.2)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2)(reflect-metadata@0.1.13) + '@ant-design/graphs': 1.4.0(react-dom@17.0.2)(react@17.0.2) + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@ant-design/maps': 1.0.7(react-dom@17.0.2)(react@17.0.2) + '@ant-design/plots': 1.2.5(react-dom@17.0.2)(react@17.0.2) + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + transitivePeerDependencies: + - bufferutil + - classnames + - reflect-metadata + - utf-8-validate + dev: false + + /@ant-design/colors@4.0.5: + resolution: {integrity: sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q==} + dependencies: + tinycolor2: 1.6.0 + dev: false + + /@ant-design/colors@6.0.0: + resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==} + dependencies: + '@ctrl/tinycolor': 3.6.1 + + /@ant-design/colors@7.0.0: + resolution: {integrity: sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==} + dependencies: + '@ctrl/tinycolor': 3.6.1 + dev: false + + /@ant-design/cssinjs@1.17.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-MgGCZ6sfD3yQB0XW0hN4jgixMxApTlDYyct+pc7fRZNO4CaqWWm/9iXkkljNR27lyWLZmm+XiDfcIOo1bnrnMA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.15 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.3.2 + csstype: 3.1.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + stylis: 4.3.0 + dev: false + + /@ant-design/cssinjs@1.17.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-MgGCZ6sfD3yQB0XW0hN4jgixMxApTlDYyct+pc7fRZNO4CaqWWm/9iXkkljNR27lyWLZmm+XiDfcIOo1bnrnMA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.15 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.3.2 + csstype: 3.1.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + stylis: 4.3.0 + dev: false + + /@ant-design/flowchart@1.2.2(@ant-design/icons@4.8.1)(antd@4.24.14)(classnames@2.3.2)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2)(reflect-metadata@0.1.13): + resolution: {integrity: sha512-bzHZ81qqHjWIrXcCMInDB6eMTzbswaVCOAdUTCQJ+B45aybkVsU9LMCKquyOwRM7U7PWNfPC9S/lAlx2i2BvBQ==} + peerDependencies: + '@ant-design/icons': ^4.6.0 + antd: ^4.6.3 + lodash: ^4.17.20 + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@antv/layout': 0.1.31 + '@antv/x6': 1.34.14 + '@antv/x6-react-components': 1.1.20(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@antv/x6-react-shape': 1.6.4(@antv/x6@1.34.14)(react-dom@17.0.2)(react@17.0.2) + '@antv/xflow': 1.0.55(@ant-design/icons@4.8.1)(antd@4.24.14)(classnames@2.3.2)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2)(reflect-metadata@0.1.13) + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + lodash: 4.17.21 + react: 17.0.2 + react-color: 2.17.3(react@17.0.2) + react-dom: 17.0.2(react@17.0.2) + react-use: 17.3.1(react-dom@17.0.2)(react@17.0.2) + transitivePeerDependencies: + - classnames + - reflect-metadata + dev: false + + /@ant-design/graphs@1.4.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-S7tbxSxrIqOSJL23S2M1GPyNnBgoaVB1xKytZeczx4YxMvuapEav+pLJy9X/TbraK0ArTNev97FQN9tD9ei6jQ==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@antv/dom-util': 2.0.4 + '@antv/g6': 4.8.22 + '@antv/layout': 0.1.31 + '@antv/util': 2.0.17 + insert-css: 2.0.0 + react: 17.0.2 + react-content-loader: 5.1.4(react@17.0.2) + react-dom: 17.0.2(react@17.0.2) + dev: false + + /@ant-design/icons-svg@4.3.1: + resolution: {integrity: sha512-4QBZg8ccyC6LPIRii7A0bZUk3+lEDCLnhB+FVsflGdcWPPmV+j3fire4AwwoqHV/BibgvBmR9ZIo4s867smv+g==} + + /@ant-design/icons@4.8.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-JRAuiqllnMsiZIO8OvBOeFconprC3cnMpJ9MvXrHh+H5co9rlg8/aSHQfLf5jKKe18lUgRaIwC2pz8YxH9VuCA==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/icons-svg': 4.3.1 + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + lodash: 4.17.21 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /@ant-design/icons@4.8.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JRAuiqllnMsiZIO8OvBOeFconprC3cnMpJ9MvXrHh+H5co9rlg8/aSHQfLf5jKKe18lUgRaIwC2pz8YxH9VuCA==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/icons-svg': 4.3.1 + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + lodash: 4.17.21 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@ant-design/icons@5.2.6(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-4wn0WShF43TrggskBJPRqCD0fcHbzTYjnaoskdiJrVHg86yxoZ8ZUqsXvyn4WUqehRiFKnaclOhqk9w4Ui2KVw==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@ant-design/colors': 7.0.0 + '@ant-design/icons-svg': 4.3.1 + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /@ant-design/icons@5.2.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-4wn0WShF43TrggskBJPRqCD0fcHbzTYjnaoskdiJrVHg86yxoZ8ZUqsXvyn4WUqehRiFKnaclOhqk9w4Ui2KVw==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@ant-design/colors': 7.0.0 + '@ant-design/icons-svg': 4.3.1 + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@ant-design/maps@1.0.7(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-mGi5vODWsXuYz2HstsG+faql/nAJ7v4V1sUfJjgD0mo2kNEPpEfcw0vbkQyNpyn/DZrR5Ue40Twv0N5IoCmxaA==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@antv/l7': 2.18.0 + '@antv/l7plot': 0.5.5(@antv/l7@2.18.0) + '@antv/util': 2.0.17 + react: 17.0.2 + react-content-loader: 5.1.4(react@17.0.2) + react-dom: 17.0.2(react@17.0.2) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@ant-design/plots@1.2.5(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-8Jvu2xC5y5/B38/9Qr6CBiXCZopsGEA3IR4pjLFlkLoT4OHIKr4y8oIvhahM9mh9ZATyjkrZLWJBI8yETrReGg==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@antv/g2plot': 2.4.31 + '@antv/util': 2.0.17 + react: 17.0.2 + react-content-loader: 5.1.4(react@17.0.2) + react-dom: 17.0.2(react@17.0.2) + dev: false + + /@ant-design/pro-card@1.20.22(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-du4yMSLflfI+SOx7n87FtiPaEmGtWDN4yFC2vfQZQ6rhO0SVAOI2vRPKoXKOZn8Pr9fXVQGo+uPsVXJMZ3WwPg==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 1.45.3(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + omit.js: 2.0.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + transitivePeerDependencies: + - prop-types + - react-dom + dev: false + + /@ant-design/pro-card@2.5.15(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-LJhyPDVbRRJaBw14kTHab3lduWWKmM2T/Ga253Yqp2n1YT3638g6brtk4lVdw10XqEY113DFjN/kZri0efgNhg==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.2.6(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 2.12.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 2.14.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + omit.js: 2.0.2 + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + transitivePeerDependencies: + - react-dom + dev: false + + /@ant-design/pro-cli@2.1.5: + resolution: {integrity: sha512-nFdVRlKRFh6UcjKmkEnpImCz3mOCMz1u6lo9IIVo2lwlbNInc5EZxXfJJm4tAXUSrOfsiIl/Iwc2bsQ5xJBLeA==} + hasBin: true + dependencies: + '@babel/core': 7.22.17 + '@babel/generator': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 + '@umijs/fabric': 2.14.1 + babel-types: 6.26.0 + blink-diff: 1.0.13 + carlo: 0.9.46 + chalk: 4.1.2 + cross-port-killer: 1.4.0 + eslint: 7.32.0 + execa: 5.1.1 + getnpmregistry: 1.0.1 + glob: 7.2.3 + import-fresh: 3.3.0 + intl-messageformat: 9.13.0 + lodash.groupby: 4.6.0 + node-fetch: 2.7.0 + node-import-ts: 1.0.6 + ora: 5.4.1 + pngjs-image: 0.11.7 + prettier: 2.8.8 + rimraf: 3.0.2 + semver: 7.5.4 + typescript: 4.9.5 + umi-utils: 1.7.3 + yargs-parser: 20.2.9 + transitivePeerDependencies: + - bufferutil + - encoding + - postcss-jsx + - postcss-markdown + - supports-color + - utf-8-validate + dev: true + + /@ant-design/pro-components@2.6.18(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-qXJHeMhUZyCKLASYxD3BD8h38F0q2+8DLig6GR0vytsdUSMJbPXcj4KIJ9bdR0sXzu3vLosoxNeNV2Fkx1QcGQ==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/pro-card': 2.5.15(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-descriptions': 2.5.4(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-field': 2.12.4(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-form': 2.18.6(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-layout': 7.16.13(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-list': 2.5.18(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 2.12.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-skeleton': 2.1.7(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-table': 3.12.3(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 2.14.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + dev: false + + /@ant-design/pro-descriptions@1.12.7(prop-types@15.8.1)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-D1aiVszsJNs5lEe6wHjuyhdrR3IPZQW//LpB3R+X9C7xk6TLC9FIbJRdgp0NSHMdf+yXEXUzr2EsRWEBhH+Lfg==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@ant-design/pro-field': 1.36.7(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-form': 1.74.7(prop-types@15.8.1)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-skeleton': 1.0.13(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 1.45.3(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + use-json-comparison: 1.0.6(react@17.0.2) + transitivePeerDependencies: + - prop-types + - rc-field-form + - react-dom + dev: false + + /@ant-design/pro-descriptions@2.5.4(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-KzDjzNHFZetb9GKr0bbxDlrvHFdaHvIyGqaPau65Dwj+BWaoJq4QD/4Lh6d9j4f2UJ0NE1a6tXdDuYMkV6FzfA==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + dependencies: + '@ant-design/pro-field': 2.12.4(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-form': 2.18.6(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-skeleton': 2.1.7(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 2.14.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + rc-resize-observer: 0.2.6(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + - react-dom + dev: false + + /@ant-design/pro-field@1.36.7(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-N5DGitBT2o5UC5lR8M6CQOhKsTMqhzggR6Q0xC2Uj50eUmy5A2uFDnsCjlaSgprocpIK0/zvTU02V9yE62SHSw==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 1.10.0(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 1.45.3(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + '@chenshuai2144/sketch-color': 1.0.9(react@17.0.2) + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + lodash.omit: 4.5.0 + lodash.tonumber: 4.0.3 + moment: 2.29.4 + omit.js: 2.0.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + swr: 1.3.0(react@17.0.2) + transitivePeerDependencies: + - prop-types + - react-dom + dev: false + + /@ant-design/pro-field@2.12.4(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-kN+isiCzE1SBUF5XHIQS3vfynY87x5Y8XMX4ZZVHKUqvSHNe9veU5L2FZuy9mgJA3X7crvGCaiQWLGHo2bh1kA==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.2.6(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 2.12.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 2.14.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + '@chenshuai2144/sketch-color': 1.0.9(react@17.0.2) + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + dayjs: 1.11.9 + lodash.tonumber: 4.0.3 + omit.js: 2.0.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + swr: 2.2.2(react@17.0.2) + transitivePeerDependencies: + - react-dom + dev: false + + /@ant-design/pro-form@1.74.7(prop-types@15.8.1)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-3r6DdAkvsjN0lpVnbpAbtj5n+Od+IeLE6Z6DKPChobtwYJX5XyR8fWWOnyR43W8qbGTpXMxDwO9IP3VRY7VdMQ==} + peerDependencies: + rc-field-form: ^1.22.0 + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-field': 1.36.7(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 1.10.0(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 1.45.3(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + '@umijs/use-params': 1.0.9(react@17.0.2) + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + rc-field-form: 1.38.0(react-dom@17.0.2)(react@17.0.2) + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + use-json-comparison: 1.0.6(react@17.0.2) + use-media-antd-query: 1.1.0(react@17.0.2) + transitivePeerDependencies: + - prop-types + dev: false + + /@ant-design/pro-form@2.18.6(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-o8d9PdLIvuCWatCFuMeoUEGNGS5lLrrHZ3H5Q/RYrF8ZD9tApIU27NBjAL3vh0s+XGIS+mBsvU49OiAg2WloBw==} + peerDependencies: + '@types/lodash.merge': ^4.6.7 + antd: '>=4.23.0 || >=5.0.0' + rc-field-form: ^1.22.0 + react: '>=17.0.0' + react-dom: '>=17.0.0' + peerDependenciesMeta: + '@types/lodash.merge': + optional: true + dependencies: + '@ant-design/icons': 5.2.6(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-field': 2.12.4(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 2.12.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 2.14.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + '@chenshuai2144/sketch-color': 1.0.9(react@17.0.2) + '@umijs/use-params': 1.0.9(react@17.0.2) + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + rc-field-form: 1.38.0(react-dom@17.0.2)(react@17.0.2) + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /@ant-design/pro-layout@6.38.22(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-rsxY2E0BTyRE7IO67VACWVPSfdtDnTaWtECuMnc4ctL+xmnzbnnr0zEHVQ+S58BxLnCqO3IyOsSc0nFl2hHsnQ==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 1.10.0(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 1.45.3(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + '@umijs/route-utils': 2.2.2 + '@umijs/ssr-darkreader': 4.9.45 + '@umijs/use-params': 1.0.9(react@17.0.2) + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + path-to-regexp: 2.4.0 + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + swr: 1.3.0(react@17.0.2) + unstated-next: 1.1.0 + use-json-comparison: 1.0.6(react@17.0.2) + use-media-antd-query: 1.1.0(react@17.0.2) + warning: 4.0.3 + transitivePeerDependencies: + - prop-types + - react-dom + + /@ant-design/pro-layout@7.16.13(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-uq+yT7EbqRqLEn+g2LCIll3sbbfjG+UN/yiONhitX/cYZ1tW7Pm62TPkfSdMXOmHNvrTw/khAFg+XrW7apJyag==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.2.6(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 2.12.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 2.14.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + '@umijs/route-utils': 4.0.1 + '@umijs/use-params': 1.0.9(react@17.0.2) + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + path-to-regexp: 2.4.0 + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + swr: 2.2.2(react@17.0.2) + warning: 4.0.3 + dev: false + + /@ant-design/pro-list@2.5.18(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-LpOFmUtj7aGD/7fyq8IPlH7JhHKTvikNgo70D0MgFtrgOISKmrM0YP5xxZish6agNnXAnfUilXw8JNl2EVf0xw==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.2.6(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-card': 2.5.15(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-field': 2.12.4(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-table': 3.12.3(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 2.14.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + dayjs: 1.11.9 + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 4.21.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + dev: false + + /@ant-design/pro-provider@1.10.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-gbQtq+Qlnob6aEghiWX/kXEzNhe4eOFlv5Ue2/xsal+22qvot/kFoOB652TD76fMI7vlkoema1pTKsvD5Uji6A==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + swr: 1.3.0(react@17.0.2) + transitivePeerDependencies: + - react-dom + + /@ant-design/pro-provider@2.12.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-DlrZ1HYApd1CSh2kyqWZLcvnt1VWYQ5X0Y1xDNnBEYGD7Y0+1K6NsZ7C+CRz51OBhf3ht79nqL9ng6qQdR97aw==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/cssinjs': 1.17.0(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + '@ctrl/tinycolor': 3.6.1 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + swr: 2.2.2(react@17.0.2) + dev: false + + /@ant-design/pro-skeleton@1.0.13(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-EWkW7ZqnT7NsyJTmxd0btrRpJFNLBkE2ceaKgp2Cz7GOC0l8yWX/TaNs6yb10j0DH6AB9YBXZNd2mxZ2MyQgGA==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + use-media-antd-query: 1.1.0(react@17.0.2) + transitivePeerDependencies: + - react-dom + dev: false + + /@ant-design/pro-skeleton@2.1.7(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-5DLD319GTEfxe/GW/Pgja+QjWp89J1DJlKrKvjfQu9z5SCekKPxqG9KmB1F55/eHow1Oe+YjkaqSF55i0xK79Q==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /@ant-design/pro-table@2.80.8(prop-types@15.8.1)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-QPrGJJpXk8va/sUMlBYXIxNenc0OMHK+LKKLKOmh1hoA+a6/a75Tk+VaoncLGZZ99qXDQwMLlRZXMGDhrtCGgA==} + peerDependencies: + rc-field-form: ^1.22.0 + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-card': 1.20.22(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-field': 1.36.7(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-form': 1.74.7(prop-types@15.8.1)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 1.10.0(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 1.45.3(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + moment: 2.29.4 + omit.js: 2.0.2 + rc-field-form: 1.38.0(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-sortable-hoc: 2.0.0(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + unstated-next: 1.1.0 + use-json-comparison: 1.0.6(react@17.0.2) + use-media-antd-query: 1.1.0(react@17.0.2) + transitivePeerDependencies: + - prop-types + dev: false + + /@ant-design/pro-table@3.12.3(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-tPcpvw+A/nC+ZM5sMX7IkS6bwHu1tyMWULz6mHAkpTf58BDh+86HQAArwKfcc24hnRkqL8tKiSNyegIGAXeJGw==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + rc-field-form: ^1.22.0 + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.2.6(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-card': 2.5.15(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-field': 2.12.4(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-form': 2.18.6(antd@4.24.14)(rc-field-form@1.38.0)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 2.12.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-utils': 2.14.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + '@dnd-kit/core': 6.0.8(react-dom@17.0.2)(react@17.0.2) + '@dnd-kit/modifiers': 6.0.1(@dnd-kit/core@6.0.8)(react@17.0.2) + '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.0.8)(react@17.0.2) + '@dnd-kit/utilities': 3.2.1(react@17.0.2) + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + dayjs: 1.11.9 + omit.js: 2.0.2 + rc-field-form: 1.38.0(react-dom@17.0.2)(react@17.0.2) + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + transitivePeerDependencies: + - '@types/lodash.merge' + dev: false + + /@ant-design/pro-utils@1.45.3(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-W2qtyckdkHTWGVXfFfqb9s/ahq3o4GlIZC3+WDiGUgqJTsUkwY69yV67E2ZfAro1XRXblUzbvxIv96M7bEAfFg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 1.10.0(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + moment: 2.29.4 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-sortable-hoc: 2.0.0(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + swr: 1.3.0(react@17.0.2) + transitivePeerDependencies: + - prop-types + + /@ant-design/pro-utils@2.14.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-bbIgvkXTPXblyZelY/aJlZlL+GfFkM5LOS+rnZVhgqoB04isRFBx4BtjE6jcp++mxgA+EV0NZ95wWpeys6C8Jg==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.2.6(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-provider': 2.12.3(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@babel/runtime': 7.22.15 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + dayjs: 1.11.9 + lodash.merge: 4.6.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + safe-stable-stringify: 2.4.3 + swr: 2.2.2(react@17.0.2) + dev: false + + /@ant-design/react-slick@1.0.2(react@17.0.2): + resolution: {integrity: sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + json2mq: 0.2.0 + react: 17.0.2 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 5.0.0 + + /@ant-design/react-slick@1.0.2(react@18.2.0): + resolution: {integrity: sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + json2mq: 0.2.0 + react: 18.2.0 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 5.0.0 + dev: false + + /@antv/adjust@0.2.5: + resolution: {integrity: sha512-MfWZOkD9CqXRES6MBGRNe27Q577a72EIwyMnE29wIlPliFvJfWwsrONddpGU7lilMpVKecS3WAzOoip3RfPTRQ==} + dependencies: + '@antv/util': 2.0.17 + tslib: 1.14.1 + dev: false + + /@antv/algorithm@0.1.26: + resolution: {integrity: sha512-DVhcFSQ8YQnMNW34Mk8BSsfc61iC1sAnmcfYoXTAshYHuU50p/6b7x3QYaGctDNKWGvi1ub7mPcSY0bK+aN0qg==} + dependencies: + '@antv/util': 2.0.17 + tslib: 2.6.2 + dev: false + + /@antv/async-hook@2.2.9: + resolution: {integrity: sha512-4BUp2ZUaTi2fYL67Ltkf6eV912rYJeSBokGhd5fhhnpUkMA1LEI1mg97Pqmx3yC50VEQ+LKXZxj9ePZs80ECfw==} + dependencies: + async: 3.2.4 + dev: false + + /@antv/attr@0.3.5: + resolution: {integrity: sha512-wuj2gUo6C8Q2ASSMrVBuTcb5LcV+Tc0Egiy6bC42D0vxcQ+ta13CLxgMmHz8mjD0FxTPJDXSciyszRSC5TdLsg==} + dependencies: + '@antv/color-util': 2.0.6 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + tslib: 2.6.2 + dev: false + + /@antv/color-util@2.0.6: + resolution: {integrity: sha512-KnPEaAH+XNJMjax9U35W67nzPI+QQ2x27pYlzmSIWrbj4/k8PGrARXfzDTjwoozHJY8qG62Z+Ww6Alhu2FctXQ==} + dependencies: + '@antv/util': 2.0.17 + tslib: 2.6.2 + dev: false + + /@antv/component@0.8.35: + resolution: {integrity: sha512-VnRa5X77nBPI952o2xePEEMSNZ6g2mcUDrQY8mVL2kino/8TFhqDq5fTRmDXZyWyIYd4ulJTz5zgeSwAnX/INQ==} + dependencies: + '@antv/color-util': 2.0.6 + '@antv/dom-util': 2.0.4 + '@antv/g-base': 0.5.15 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + fecha: 4.2.3 + tslib: 2.6.2 + dev: false + + /@antv/coord@0.3.1: + resolution: {integrity: sha512-rFE94C8Xzbx4xmZnHh2AnlB3Qm1n5x0VT3OROy257IH6Rm4cuzv1+tZaUBATviwZd99S+rOY9telw/+6C9GbRw==} + dependencies: + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/util': 2.0.17 + tslib: 2.6.2 + dev: false + + /@antv/dom-util@2.0.4: + resolution: {integrity: sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ==} + dependencies: + tslib: 2.6.2 + dev: false + + /@antv/event-emitter@0.1.3: + resolution: {integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==} + dev: false + + /@antv/g-base@0.5.15: + resolution: {integrity: sha512-QOtq50QpnKez9J75/Z8j2yZ7QDQdk8R8mVQJiHtaEO5eI7DM4ZbrsWff/Ew26JYmPWdq7nbRuARMAD4PX9uuLA==} + dependencies: + '@antv/event-emitter': 0.1.3 + '@antv/g-math': 0.1.9 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + '@types/d3-timer': 2.0.1 + d3-ease: 1.0.7 + d3-interpolate: 3.0.1 + d3-timer: 1.0.10 + detect-browser: 5.3.0 + tslib: 2.6.2 + dev: false + + /@antv/g-canvas@0.5.14: + resolution: {integrity: sha512-IUGLEMIMAUYgaBMT8h3FTmYQYz7sjQkKWwh6Psqx+UPK86fySa+G8fMRrh1EqAL07jVB+GRnn6Ym+3FoFUgeFg==} + dependencies: + '@antv/g-base': 0.5.15 + '@antv/g-math': 0.1.9 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/g-math@0.1.9: + resolution: {integrity: sha512-KHMSfPfZ5XHM1PZnG42Q2gxXfOitYveNTA7L61lR6mhZ8Y/aExsYmHqaKBsSarU0z+6WLrl9C07PQJZaw0uljQ==} + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + dev: false + + /@antv/g-svg@0.5.7: + resolution: {integrity: sha512-jUbWoPgr4YNsOat2Y/rGAouNQYGpw4R0cvlN0YafwOyacFFYy2zC8RslNd6KkPhhR3XHNSqJOuCYZj/YmLUwYw==} + dependencies: + '@antv/g-base': 0.5.15 + '@antv/g-math': 0.1.9 + '@antv/util': 2.0.17 + detect-browser: 5.3.0 + tslib: 2.6.2 + dev: false + + /@antv/g-webgpu-core@0.5.6: + resolution: {integrity: sha512-DPiH3GkAUiT0Q+LAKeImpI+IOQ/gP2w6HstYKivpFIpBPIvZ/9equM3icVrn1iDfDkZANVXQ1PppcO3xBv1ZTw==} + dependencies: + eventemitter3: 4.0.7 + gl-matrix: 3.4.3 + inversify: 5.1.1 + inversify-inject-decorators: 3.1.0 + probe.gl: 3.6.0 + reflect-metadata: 0.1.13 + dev: false + + /@antv/g-webgpu-core@0.7.2: + resolution: {integrity: sha512-xUMmop7f3Rs34zFYKXLqHhDR1CQTeDl/7vI7Sn3X/73BqJc3X3HIIRvm83Fg2CjVACaOzw4WeLRXNaOCp9fz9w==} + dependencies: + eventemitter3: 4.0.7 + gl-matrix: 3.4.3 + lodash: 4.17.21 + probe.gl: 3.6.0 + dev: false + + /@antv/g-webgpu-engine@0.5.6: + resolution: {integrity: sha512-D311qYUefdEFwLayutIHqucrAY3cAGH3BdnXS37nq+0nsglrHcNP0Ab1YTinn9RihLoY3yXFTLzrYkJHJbZXDg==} + dependencies: + '@antv/g-webgpu-core': 0.5.6 + '@webgpu/glslang': 0.0.15 + '@webgpu/types': 0.0.31 + gl-matrix: 3.4.3 + hammerjs: 2.0.8 + inversify: 5.1.1 + inversify-inject-decorators: 3.1.0 + probe.gl: 3.6.0 + reflect-metadata: 0.1.13 + regl: 1.7.0 + dev: false + + /@antv/g-webgpu-engine@0.7.2: + resolution: {integrity: sha512-lx8Y93IW2cnJvdoDRKyMmTdYqSC1pOmF0nyG3PGGyA0NI9vBYVgO0KTF6hkyWjdTWVq7XDZyf/h8CJridLh3lg==} + dependencies: + '@antv/g-webgpu-core': 0.7.2 + gl-matrix: 3.4.3 + lodash: 4.17.21 + regl: 1.7.0 + dev: false + + /@antv/g-webgpu@0.5.5: + resolution: {integrity: sha512-TxtBniINFq1jFGEPo46xjJfrbJbUqkFd5wmsRs3tcg/7J7xoldOP1kEadpI3AJG9knMYdE92VpILw1VPd6DgzQ==} + dependencies: + '@antv/g-webgpu-core': 0.5.6 + '@antv/g-webgpu-engine': 0.5.6 + '@webgpu/types': 0.0.31 + gl-matrix: 3.4.3 + gl-vec2: 1.3.0 + hammerjs: 2.0.8 + inversify: 5.1.1 + inversify-inject-decorators: 3.1.0 + polyline-miter-util: 1.0.1 + polyline-normals: 2.0.2 + probe.gl: 3.6.0 + reflect-metadata: 0.1.13 + dev: false + + /@antv/g-webgpu@0.7.2: + resolution: {integrity: sha512-kw+oYGsdvj5qeUfy5DPb/jztZBV+2fmqBd3Vv8NlKatfBmv8AirYX/CCW74AUSdWm99rEiLyxFB1VdRZ6b/wnQ==} + dependencies: + '@antv/g-webgpu-core': 0.7.2 + '@antv/g-webgpu-engine': 0.7.2 + gl-matrix: 3.4.3 + gl-vec2: 1.3.0 + lodash: 4.17.21 + dev: false + + /@antv/g2@4.2.10: + resolution: {integrity: sha512-/ZlJ/DFJBCvtEQgE6roxdd6sBml0fZ8ZVfzG+HdjGpA7/ceURb8XkxUcqa0E8NV+e4sFijnaAhBCdUm2whiuyA==} + dependencies: + '@antv/adjust': 0.2.5 + '@antv/attr': 0.3.5 + '@antv/color-util': 2.0.6 + '@antv/component': 0.8.35 + '@antv/coord': 0.3.1 + '@antv/dom-util': 2.0.4 + '@antv/event-emitter': 0.1.3 + '@antv/g-base': 0.5.15 + '@antv/g-canvas': 0.5.14 + '@antv/g-svg': 0.5.7 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + tslib: 2.6.2 + dev: false + + /@antv/g2plot@2.4.31: + resolution: {integrity: sha512-SlWHYVsJgRN7E1Oe5Qk6yWBrSWmctmloknFmklaqe9vEeK+YB9ZLUffZvtAHT10mA2NZ+VjGUhlnMNgR9M1PQg==} + dependencies: + '@antv/color-util': 2.0.6 + '@antv/event-emitter': 0.1.3 + '@antv/g-base': 0.5.15 + '@antv/g2': 4.2.10 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 3.0.1 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + d3-hierarchy: 2.0.0 + d3-regression: 1.3.10 + fmin: 0.0.2 + pdfast: 0.2.0 + size-sensor: 1.0.2 + tslib: 2.6.2 + dev: false + + /@antv/g6-core@0.8.22: + resolution: {integrity: sha512-tH7fO/xCZQnkMqc3N3mkMMpYbOTrcnZChDoSCdDM8ttQ1imK0anObnhdnVkjess7zJ230ySsX8UaE+lzoKFSbg==} + dependencies: + '@antv/algorithm': 0.1.26 + '@antv/dom-util': 2.0.4 + '@antv/event-emitter': 0.1.3 + '@antv/g-base': 0.5.15 + '@antv/g-math': 0.1.9 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + ml-matrix: 6.10.4 + tslib: 2.6.2 + dev: false + + /@antv/g6-element@0.8.22: + resolution: {integrity: sha512-rTJgaFDeaiHEF5d+hdJEGbh+Z272bi+Zzu5aTDWCtFFgxtosdeOQGWdyhIEeLCstRvlP3RaaztBIsSZm5BWFsA==} + dependencies: + '@antv/g-base': 0.5.15 + '@antv/g6-core': 0.8.22 + '@antv/util': 2.0.17 + dev: false + + /@antv/g6-pc@0.8.22: + resolution: {integrity: sha512-sG17yhA4lXyiLddL/IlCqysbxw3pRspukwaxJ6W5tfDAdM2o04Odf60ppvPekQh/EF6nIZ95qcDl03v3z6NXZw==} + dependencies: + '@ant-design/colors': 4.0.5 + '@antv/algorithm': 0.1.26 + '@antv/dom-util': 2.0.4 + '@antv/event-emitter': 0.1.3 + '@antv/g-base': 0.5.15 + '@antv/g-canvas': 0.5.14 + '@antv/g-math': 0.1.9 + '@antv/g-svg': 0.5.7 + '@antv/g6-core': 0.8.22 + '@antv/g6-element': 0.8.22 + '@antv/g6-plugin': 0.8.22 + '@antv/hierarchy': 0.6.11 + '@antv/layout': 0.3.23(dagre@0.8.5) + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + color: 3.2.1 + d3-force: 2.1.1 + dagre: 0.8.5 + insert-css: 2.0.0 + ml-matrix: 6.10.4 + dev: false + + /@antv/g6-plugin@0.8.22: + resolution: {integrity: sha512-3Z9hnNYwkJ7BAMLRoymWgrgTRXG7EDC2OlDAoRBSUvv/0sLVu7/kvobN3cY3rJF5rNwYmyTYb43ZfbK2UV4GVQ==} + dependencies: + '@antv/dom-util': 2.0.4 + '@antv/g-base': 0.5.15 + '@antv/g-canvas': 0.5.14 + '@antv/g-svg': 0.5.7 + '@antv/g6-core': 0.8.22 + '@antv/g6-element': 0.8.22 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + insert-css: 2.0.0 + dev: false + + /@antv/g6@4.8.22: + resolution: {integrity: sha512-ZbfmaK5H5vULGJUWZLIBJSorF3kSSeSZvvxbOJzzfB72zJ+Pjjtviq2BeiVV+HAZ3Ux7ogvIH6zcwRb1JrIO8g==} + dependencies: + '@antv/g6-pc': 0.8.22 + dev: false + + /@antv/graphlib@1.2.0: + resolution: {integrity: sha512-hhJOMThec51nU4Fe5p/viLlNIL71uDEgYFzKPajWjr2715SFG1HAgiP6AVylIeqBcAZ04u3Lw7usjl/TuI5RuQ==} + dev: false + + /@antv/hierarchy@0.6.11: + resolution: {integrity: sha512-RJVhEMCuu4vj+Dt25lXIiNdd7jaqm/fqWGYikiELha4S5tnzdJoTUaUvvpfWlxLx4B0RsS9XRwBs1bOKN71TKg==} + dependencies: + '@antv/util': 2.0.17 + dev: false + + /@antv/l7-component@2.18.0: + resolution: {integrity: sha512-ocSr0hkFgaJpD884X5TYidzh/ZYR4kUfGROAUU8DCUvmguLs8NLC4fKke0pNEMn1xY6RUaE0yN842uqFBBHt0g==} + dependencies: + '@antv/l7-core': 2.18.0 + '@antv/l7-utils': 2.18.0 + '@babel/runtime': 7.22.15 + eventemitter3: 4.0.7 + inversify: 5.1.1 + reflect-metadata: 0.1.13 + supercluster: 7.1.5 + dev: false + + /@antv/l7-core@2.18.0: + resolution: {integrity: sha512-/tG0inDiWAklzXSYu5aegxwDMzJcV1WY3A7KBhliBPhYqNnj2RI9byQl7+7zQRd0VJ66ejImuEy0ZzxW85yDVQ==} + dependencies: + '@antv/async-hook': 2.2.9 + '@antv/l7-utils': 2.18.0 + '@babel/runtime': 7.22.15 + '@mapbox/tiny-sdf': 1.2.5 + '@turf/helpers': 6.5.0 + ajv: 6.12.6 + element-resize-event: 3.0.6 + eventemitter3: 4.0.7 + gl-matrix: 3.4.3 + hammerjs: 2.0.8 + inversify: 5.1.1 + inversify-inject-decorators: 3.1.0 + reflect-metadata: 0.1.13 + viewport-mercator-project: 6.2.3 + dev: false + + /@antv/l7-layers@2.18.0: + resolution: {integrity: sha512-BAiBVJrHr/dfRLMpUrbJGmjGezRTyvaJDrk8iIoMqtXnhNEoC0oX9d2ImwqnBQJeonjrbnIxU8dKSHUxrupHBA==} + dependencies: + '@antv/async-hook': 2.2.9 + '@antv/l7-core': 2.18.0 + '@antv/l7-maps': 2.18.0 + '@antv/l7-source': 2.18.0 + '@antv/l7-utils': 2.18.0 + '@babel/runtime': 7.22.15 + '@mapbox/martini': 0.2.0 + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/polygon-to-line': 6.5.0 + '@turf/union': 6.5.0 + d3-array: 1.2.4 + d3-color: 1.4.1 + d3-interpolate: 1.4.0 + d3-scale: 2.2.2 + earcut: 2.2.4 + eventemitter3: 4.0.7 + extrude-polyline: 1.0.6 + gl-matrix: 3.4.3 + gl-vec2: 1.3.0 + inversify: 5.1.1 + polyline-miter-util: 1.0.1 + reflect-metadata: 0.1.13 + dev: false + + /@antv/l7-map@2.18.0: + resolution: {integrity: sha512-qM1SvWtsbOLbBDpdvHucR7yWFKzQq67ViruAriAGwXNitaj50KpwhOLHvQljRbVJoYnW2cXjkJYad700PjIoww==} + dependencies: + '@antv/l7-utils': 2.18.0 + '@babel/runtime': 7.22.15 + '@mapbox/point-geometry': 0.1.0 + '@mapbox/unitbezier': 0.0.0 + eventemitter3: 4.0.7 + gl-matrix: 3.4.3 + lodash-es: 4.17.21 + dev: false + + /@antv/l7-maps@2.18.0: + resolution: {integrity: sha512-ha7pW1y28smOOj2HvgHjZ5CNNTYiRVo+cFodwtYRvrZuwiO5oaWJ/0KpScQLei31dYmPdeGC81jwIVGO3PpA7w==} + dependencies: + '@amap/amap-jsapi-loader': 1.0.1 + '@antv/l7-core': 2.18.0 + '@antv/l7-map': 2.18.0 + '@antv/l7-utils': 2.18.0 + '@babel/runtime': 7.22.15 + '@types/amap-js-api': 1.4.12 + '@types/mapbox-gl': 1.13.6 + gl-matrix: 3.4.3 + inversify: 5.1.1 + mapbox-gl: 1.13.3 + reflect-metadata: 0.1.13 + viewport-mercator-project: 6.2.3 + dev: false + + /@antv/l7-renderer@2.18.0: + resolution: {integrity: sha512-F4dl2d0f9MmwxiOgrmtTMAhCeuaDJ65ZetcsCI8gTj4ZqQr6W98BckE7YYNZeMm3ACFKG/h3ZUxXZLDaMGR0HQ==} + dependencies: + '@antv/l7-core': 2.18.0 + '@antv/l7-utils': 2.18.0 + '@babel/runtime': 7.22.15 + inversify: 5.1.1 + reflect-metadata: 0.1.13 + regl: 1.7.0 + dev: false + + /@antv/l7-scene@2.18.0: + resolution: {integrity: sha512-0WMMv2L53qHoomiIFO4E2SNAdeUjx4ybXgo+t1831k1p419OpKinC9BLWpxim3Q9DonCE8ZnzmKbjLp3RSChvw==} + dependencies: + '@antv/l7-component': 2.18.0 + '@antv/l7-core': 2.18.0 + '@antv/l7-layers': 2.18.0 + '@antv/l7-maps': 2.18.0 + '@antv/l7-renderer': 2.18.0 + '@antv/l7-utils': 2.18.0 + '@babel/runtime': 7.22.15 + eventemitter3: 4.0.7 + inversify: 5.1.1 + mapbox-gl: 1.13.3 + reflect-metadata: 0.1.13 + dev: false + + /@antv/l7-source@2.18.0: + resolution: {integrity: sha512-FZX+YkduBQPQ3/ctQGJ1vgPWE1Q+eSw1UQFoPzjp4B/wxn/oEWUN0DhIs/VyOdRuh8fk+1TUxH/mKtfhzSjaJg==} + dependencies: + '@antv/async-hook': 2.2.9 + '@antv/l7-core': 2.18.0 + '@antv/l7-utils': 2.18.0 + '@babel/runtime': 7.22.15 + '@mapbox/geojson-rewind': 0.5.2 + '@mapbox/vector-tile': 1.3.1 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + d3-dsv: 1.2.0 + d3-hexbin: 0.2.2 + eventemitter3: 4.0.7 + geojson-vt: 3.2.1 + inversify: 5.1.1 + pbf: 3.2.1 + reflect-metadata: 0.1.13 + supercluster: 7.1.5 + dev: false + + /@antv/l7-utils@2.18.0: + resolution: {integrity: sha512-m7uJT3HY9pchrBw3b9zs9T8xvmjUoGaLDDmCF/vT45K/hdOnNAePJumS9mhwIG3nfcmv4Z0A7NMs/ePAYagK2g==} + dependencies: + '@babel/runtime': 7.22.15 + '@turf/bbox': 6.5.0 + '@turf/bbox-polygon': 6.5.0 + '@turf/helpers': 6.5.0 + d3-color: 1.4.1 + earcut: 2.2.4 + eventemitter3: 4.0.7 + gl-matrix: 3.4.3 + lodash: 4.17.21 + web-worker-helper: 0.0.3 + dev: false + + /@antv/l7@2.18.0: + resolution: {integrity: sha512-SSL1GLk+37JDHS17e+rqVVZDVCtinnHj3hAjRRvgmon9GKkCVVi3ngsV+/uBATWdEZwkKM7mxd3L7m6rgS6hlw==} + dependencies: + '@antv/l7-component': 2.18.0 + '@antv/l7-core': 2.18.0 + '@antv/l7-layers': 2.18.0 + '@antv/l7-maps': 2.18.0 + '@antv/l7-scene': 2.18.0 + '@antv/l7-source': 2.18.0 + '@antv/l7-utils': 2.18.0 + '@babel/runtime': 7.22.15 + webpack-bundle-analyzer: 4.9.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@antv/l7plot-component@0.0.10: + resolution: {integrity: sha512-jnlg2Qm4tcUUuei+7fVk/HwRqhgxWnfdawOdB3C2u7YJqhkpk2mb7FPY+KGeZd+pqEQcAJTFi/1NeKpnZcP8kg==} + dependencies: + '@antv/dom-util': 2.0.4 + '@antv/util': 2.0.17 + dev: false + + /@antv/l7plot@0.5.5(@antv/l7@2.18.0): + resolution: {integrity: sha512-x6gJx3vE/rkq/2SSJWGEv8c+2KuP89aldvDARPoOc8n1WUynjCNnie9vGzSCb6gja8EbOd0Knwhj7b3Hdk1bCg==} + peerDependencies: + '@antv/l7': ^2.11.5 + dependencies: + '@antv/event-emitter': 0.1.3 + '@antv/l7': 2.18.0 + '@antv/l7plot-component': 0.0.10 + '@antv/util': 2.0.17 + lodash-es: 4.17.21 + topojson-client: 3.1.0 + dev: false + + /@antv/layout@0.1.31: + resolution: {integrity: sha512-iz9i19dOJGiZr5xBWI5sfG+2K3QVMNAGOBrbjWKH2RGLvGpf2TSFySidhz0siDrcQA46cDsjLmGstezQdgeGzA==} + dependencies: + '@antv/g-webgpu': 0.5.5 + '@dagrejs/graphlib': 2.1.4 + d3-force: 2.1.1 + ml-matrix: 6.10.4 + dev: false + + /@antv/layout@0.3.23(dagre@0.8.5): + resolution: {integrity: sha512-F/CyfQuc1WSgCVemX0jA3pE3XuDRbDJmMueY1cL8WgL6nhdzm3/jg5UPamwbBVnhLk+rzNUDYdEIyX+RJbpcMA==} + dependencies: + '@antv/g-webgpu': 0.7.2 + '@antv/graphlib': 1.2.0 + '@antv/util': 3.3.4 + d3-force: 2.1.1 + d3-quadtree: 2.0.0 + dagre-compound: 0.0.11(dagre@0.8.5) + ml-matrix: 6.10.4 + transitivePeerDependencies: + - dagre + dev: false + + /@antv/matrix-util@3.0.4: + resolution: {integrity: sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==} + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/matrix-util@3.1.0-beta.3: + resolution: {integrity: sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==} + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/path-util@2.0.15: + resolution: {integrity: sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw==} + dependencies: + '@antv/matrix-util': 3.0.4 + '@antv/util': 2.0.17 + tslib: 2.6.2 + dev: false + + /@antv/path-util@3.0.1: + resolution: {integrity: sha512-tpvAzMpF9Qm6ik2YSMqICNU5tco5POOW7S4XoxZAI/B0L26adU+Md/SmO0BBo2SpuywKvzPH3hPT3xmoyhr04Q==} + dependencies: + gl-matrix: 3.4.3 + lodash-es: 4.17.21 + tslib: 2.6.2 + dev: false + + /@antv/scale@0.3.18: + resolution: {integrity: sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w==} + dependencies: + '@antv/util': 2.0.17 + fecha: 4.2.3 + tslib: 2.6.2 + dev: false + + /@antv/util@2.0.17: + resolution: {integrity: sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==} + dependencies: + csstype: 3.1.2 + tslib: 2.6.2 + dev: false + + /@antv/util@3.3.4: + resolution: {integrity: sha512-NGRjPCPje8GIC14Ye7sjebamFIjxoZ+mCIqfXz6wD/M6fA9SgJivzmLB3Ry01Wq8PI36oOVv9BwrAGV1JD8vjA==} + dependencies: + fast-deep-equal: 3.1.3 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/x6-react-components@1.1.20(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-HpQqjPCUo+jfcbfW2sr9oxuXMCxWnXxWvE8jXKJzvrlMNZ3kgfxNqMCRxwGi2QTCxLB3g/KYi5/n8kze8ui1/Q==} + peerDependencies: + antd: '>=4.4.2 || >=5.0.0-beta.0' + react: '>=16.8.6 || >=17.0.0' + react-dom: '>=16.8.6 || >=17.0.0' + dependencies: + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + clamp: 1.0.1 + classnames: 2.3.2 + rc-dropdown: 3.6.2(react-dom@17.0.2)(react@17.0.2) + rc-util: 4.21.1 + react: 17.0.2 + react-color: 2.17.1(react@17.0.2) + react-dom: 17.0.2(react@17.0.2) + react-resize-detector: 7.1.2(react-dom@17.0.2)(react@17.0.2) + ua-parser-js: 0.7.36 + dev: false + + /@antv/x6-react-shape@1.6.4(@antv/x6@1.34.14)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-xjvEV0FuH/AC+MXfgliEroPzMzdPmx3hqiWbIaXq36BasghXUNutlyCKiDmT6DX0bL1IxJsKJGESV0QQBcMlow==} + peerDependencies: + '@antv/x6': ^1.x + react: '>=16.8.6 || >=17.0.0' + react-dom: '>=16.8.6 || >=17.0.0' + dependencies: + '@antv/x6': 1.34.14 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /@antv/x6@1.34.14: + resolution: {integrity: sha512-S3FPEVOHczmfneMSTWD3J+hvu6R2XxuEhAfD+Hhs3h1xkWFOmSAoDOIuPF0gzkQcPr0WQNEGnQ5hgfATCxiPpQ==} + dependencies: + csstype: 3.1.2 + jquery: 3.7.1 + jquery-mousewheel: 3.1.13 + lodash-es: 4.17.21 + mousetrap: 1.6.5 + utility-types: 3.10.0 + dev: false + + /@antv/xflow-core@1.0.55(@ant-design/icons@4.8.1)(@antv/x6-react-components@1.1.20)(@antv/x6-react-shape@1.6.4)(@antv/x6@1.34.14)(antd@4.24.14)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-FhjTstp/ZdO6mj8ERARJ6M9PWgikXvOpWwMTLCjc+i8vS4O3t4XL/fIu16MqJNuNdqfETcjJluHd06c32MTB/w==} + peerDependencies: + '@ant-design/icons': ^4.6.0 + '@antv/x6': ^1.30.1 + '@antv/x6-react-components': ^1.1.15 + '@antv/x6-react-shape': ^1.2.5 + antd: ^4.6.3 + lodash: ^4.17.20 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@antv/x6': 1.34.14 + '@antv/x6-react-components': 1.1.20(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@antv/x6-react-shape': 1.6.4(@antv/x6@1.34.14)(react-dom@17.0.2)(react@17.0.2) + '@antv/xflow-hook': 1.0.55 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + immer: 9.0.21 + lodash: 4.17.21 + mana-common: 0.3.2 + mana-syringe: 0.2.2 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + reflect-metadata: 0.1.13 + rxjs: 6.6.7 + dev: false + + /@antv/xflow-extension@1.0.55(@ant-design/icons@4.8.1)(@antv/x6-react-components@1.1.20)(@antv/x6-react-shape@1.6.4)(@antv/x6@1.34.14)(antd@4.24.14)(classnames@2.3.2)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2)(reflect-metadata@0.1.13): + resolution: {integrity: sha512-iHRfO/ae4/9xvC5xVFmA9eIFg813DQa06hTgTdxLlt0Aojnfa5VnsGrIrPQoDDQovCXG8SavMDlnLZUpa491GQ==} + peerDependencies: + '@ant-design/icons': ^4.6.0 + '@antv/x6': ^1.30.1 + '@antv/x6-react-components': ^1.1.15 + '@antv/x6-react-shape': ^1.2.5 + antd: ^4.6.3 + classnames: ^2.2.6 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + reflect-metadata: ^0.1.13 + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@antv/x6': 1.34.14 + '@antv/x6-react-components': 1.1.20(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@antv/x6-react-shape': 1.6.4(@antv/x6@1.34.14)(react-dom@17.0.2)(react@17.0.2) + '@antv/xflow-core': 1.0.55(@ant-design/icons@4.8.1)(@antv/x6-react-components@1.1.20)(@antv/x6-react-shape@1.6.4)(@antv/x6@1.34.14)(antd@4.24.14)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2) + '@antv/xflow-hook': 1.0.55 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + mana-syringe: 0.2.2 + moment: 2.29.4 + rc-field-form: 1.38.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-color: 2.17.1(react@17.0.2) + react-dom: 17.0.2(react@17.0.2) + reflect-metadata: 0.1.13 + transitivePeerDependencies: + - lodash + dev: false + + /@antv/xflow-hook@1.0.55: + resolution: {integrity: sha512-NVBrezDue4wd32seaIx1OT5WONpZUhwEp+p86QRhPzO3mmb1qhVxbEqznXhtisxZeHitHFS33J7NqeH1sDFUtQ==} + dependencies: + toposort: 2.0.2 + dev: false + + /@antv/xflow@1.0.55(@ant-design/icons@4.8.1)(antd@4.24.14)(classnames@2.3.2)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2)(reflect-metadata@0.1.13): + resolution: {integrity: sha512-1LRFZsDZDVuRwEYD0xFt7SGCbHducgXQ4GgPOzmaCMA5FMbQfZVpXhsOG4o/a9X+gKfYdpOELCLqpz7iykyArQ==} + peerDependencies: + '@ant-design/icons': ^4.6.0 + antd: ^4.6.3 + lodash: ^4.17.20 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@antv/layout': 0.1.31 + '@antv/x6': 1.34.14 + '@antv/x6-react-components': 1.1.20(antd@4.24.14)(react-dom@17.0.2)(react@17.0.2) + '@antv/x6-react-shape': 1.6.4(@antv/x6@1.34.14)(react-dom@17.0.2)(react@17.0.2) + '@antv/xflow-core': 1.0.55(@ant-design/icons@4.8.1)(@antv/x6-react-components@1.1.20)(@antv/x6-react-shape@1.6.4)(@antv/x6@1.34.14)(antd@4.24.14)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2) + '@antv/xflow-extension': 1.0.55(@ant-design/icons@4.8.1)(@antv/x6-react-components@1.1.20)(@antv/x6-react-shape@1.6.4)(@antv/x6@1.34.14)(antd@4.24.14)(classnames@2.3.2)(lodash@4.17.21)(react-dom@17.0.2)(react@17.0.2)(reflect-metadata@0.1.13) + '@antv/xflow-hook': 1.0.55 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + transitivePeerDependencies: + - classnames + - reflect-metadata + dev: false + + /@apideck/better-ajv-errors@0.3.6(ajv@8.12.0): + resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} + engines: {node: '>=10'} + peerDependencies: + ajv: '>=8' + dependencies: + ajv: 8.12.0 + json-schema: 0.4.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + dev: true + + /@babel/code-frame@7.12.11: + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} + dependencies: + '@babel/highlight': 7.22.13 + + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.13 + chalk: 2.4.2 + + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.18.6: + resolution: {integrity: sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.18.6 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.18.6) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.6 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core@7.22.17: + resolution: {integrity: sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@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/core@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.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/eslint-parser@7.22.15(@babel/core@7.22.17)(eslint@7.32.0): + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.22.17 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + + /@babel/eslint-parser@7.22.15(@babel/core@7.22.17)(eslint@8.49.0): + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.22.17 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.49.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + dev: true + + /@babel/generator@7.18.6: + resolution: {integrity: sha512-AIwwoOS8axIC5MZbhNHRLKi3D+DMpvDf9XUcu3pIVAfOHFT45f4AoDAltRbHIQomCipkCZxrNkfpOEHhJz/VKw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.6 + '@jridgewell/gen-mapping': 0.3.3 + jsesc: 2.5.2 + dev: true + + /@babel/generator@7.22.15: + resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + + /@babel/generator@7.4.4: + resolution: {integrity: sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==} + dependencies: + '@babel/types': 7.4.4 + jsesc: 2.5.2 + lodash: 4.17.21 + source-map: 0.5.7 + trim-right: 1.0.1 + dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + dev: true + + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 + lru-cache: 5.1.1 + semver: 6.3.1 + + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@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/core@7.22.17) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: true + + /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.17): + resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + engines: {node: '>=6.9.0'} + + /@babel/helper-function-name@7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.22.17 + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + + /@babel/helper-member-expression-to-functions@7.22.15: + resolution: {integrity: sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + + /@babel/helper-module-transforms@7.22.17(@babel/core@7.18.6): + resolution: {integrity: sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@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 + dev: true + + /@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17): + resolution: {integrity: sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@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@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator@7.22.17(@babel/core@7.22.17): + resolution: {integrity: sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-wrap-function': 7.22.17 + dev: true + + /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.17): + resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.15 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.17 + + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.15: + resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function@7.22.17: + resolution: {integrity: sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.22.5 + '@babel/template': 7.22.15 + '@babel/types': 7.22.17 + dev: true + + /@babel/helpers@7.22.15: + resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 + transitivePeerDependencies: + - supports-color + + /@babel/highlight@7.22.13: + resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.15 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser@7.22.16: + resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.17 + + /@babel/parser@7.4.5: + resolution: {integrity: sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.17 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.22.17 + '@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/core@7.22.17) + dev: true + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.17): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-proposal-decorators@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-kc0VvbbUyKelvzcKOSyQUSVVXS5pT3UhRB0e3c9An86MvLqs+gx0dN4asllrDluqSa3m9YyooXKGOFVomnyFkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.17) + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/plugin-syntax-decorators': 7.22.10(@babel/core@7.22.17) + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.17): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) + dev: true + + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.17): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) + dev: true + + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.17): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@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/core@7.22.17) + dev: true + + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.17): + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.17): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.22.17): + resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.17) + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.18.6): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.17): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.18.6): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.17): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.18.6): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.17): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.17): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-decorators@7.22.10(@babel/core@7.22.17): + resolution: {integrity: sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.17): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.17): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.18.6): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.17): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.18.6): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.17): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.18.6): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.17): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.18.6): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.17): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.18.6): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.17): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.18.6): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.17): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.18.6): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.17): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.18.6): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.17): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.17): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.18.6): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.17): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.17): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-async-generator-functions@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.17(@babel/core@7.22.17) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.17(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-block-scoping@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-classes@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@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/core@7.22.17) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 + dev: true + + /@babel/plugin-transform-destructuring@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.18.6(@babel/core@7.18.6): + resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.18.6) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + babel-plugin-dynamic-import-node: 2.3.3 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 + dev: true + + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.17 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-optional-chaining@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@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/core@7.22.17) + dev: true + + /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-constant-elements@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.17) + '@babel/types': 7.22.17 + dev: true + + /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.17): + resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + dev: true + + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-runtime@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.17) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.17) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.17) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.17): + resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/preset-env@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.17 + '@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/core@7.22.17) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.17) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.17) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.17) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.17) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.17) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.17) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-async-generator-functions': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.22.17) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.22.17) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.17) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.22.17) + '@babel/types': 7.22.17 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.17) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.17) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.17) + core-js-compat: 3.32.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.22.17): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.22.17 + esutils: 2.0.3 + dev: true + + /@babel/preset-react@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.22.17) + dev: true + + /@babel/preset-typescript@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.17) + dev: true + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + + /@babel/runtime@7.18.6: + resolution: {integrity: sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + + /@babel/runtime@7.4.5: + resolution: {integrity: sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==} + dependencies: + regenerator-runtime: 0.13.11 + dev: true + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 + + /@babel/traverse@7.18.6: + resolution: {integrity: sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.18.6 + '@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.18.6 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/traverse@7.22.17: + resolution: {integrity: sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==} + engines: {node: '>=6.9.0'} + 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.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/traverse@7.4.5: + resolution: {integrity: sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.4.4 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.4.5 + '@babel/types': 7.4.4 + debug: 4.3.4 + globals: 11.12.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.18.6: + resolution: {integrity: sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.15 + to-fast-properties: 2.0.0 + dev: true + + /@babel/types@7.22.17: + resolution: {integrity: sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 + to-fast-properties: 2.0.0 + + /@babel/types@7.4.4: + resolution: {integrity: sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==} + dependencies: + esutils: 2.0.3 + lodash: 4.17.21 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@bloomberg/record-tuple-polyfill@0.0.3: + resolution: {integrity: sha512-sBnCqW0nqofE47mxFnw+lvx6kzsQstwaQMVkh66qm/A6IlsnH7WsyGuVXTou8RF2wL4W7ybOoHPvP2WgIo6rhQ==} + + /@chenshuai2144/sketch-color@1.0.9(react@17.0.2): + resolution: {integrity: sha512-obzSy26cb7Pm7OprWyVpgMpIlrZpZ0B7vbrU0RMbvRg0YAI890S5Xy02Aj1Nhl4+KTbi1lVYHt6HQP8Hm9s+1w==} + peerDependencies: + react: '>=16.12.0' + dependencies: + react: 17.0.2 + reactcss: 1.2.3(react@17.0.2) + tinycolor2: 1.6.0 + dev: false + + /@cnakazawa/watch@1.0.4: + resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} + engines: {node: '>=0.1.95'} + hasBin: true + dependencies: + exec-sh: 0.3.6 + minimist: 1.2.8 + dev: true + + /@csstools/convert-colors@1.4.0: + resolution: {integrity: sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==} + engines: {node: '>=4.0.0'} + + /@csstools/normalize.css@12.0.0: + resolution: {integrity: sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==} + dev: true + + /@csstools/postcss-cascade-layers@1.1.1(postcss@8.4.29): + resolution: {integrity: sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /@csstools/postcss-color-function@1.1.1(postcss@8.4.29): + resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-font-format-keywords@1.0.1(postcss@8.4.29): + resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-hwb-function@1.0.2(postcss@8.4.29): + resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-ic-unit@1.0.1(postcss@8.4.29): + resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-is-pseudo-class@2.0.7(postcss@8.4.29): + resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /@csstools/postcss-nested-calc@1.0.0(postcss@8.4.29): + resolution: {integrity: sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-normalize-display-values@1.0.1(postcss@8.4.29): + resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-oklab-function@1.1.1(postcss@8.4.29): + resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-progressive-custom-properties@1.3.0(postcss@8.4.29): + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-stepped-value-functions@1.0.1(postcss@8.4.29): + resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-text-decoration-shorthand@1.0.0(postcss@8.4.29): + resolution: {integrity: sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-trigonometric-functions@1.0.2(postcss@8.4.29): + resolution: {integrity: sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==} + engines: {node: ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-unset-value@1.0.2(postcss@8.4.29): + resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + dev: true + + /@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.0.13): + resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.10 + dependencies: + postcss-selector-parser: 6.0.13 + dev: true + + /@ctrl/tinycolor@3.6.1: + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + + /@dagrejs/graphlib@2.1.4: + resolution: {integrity: sha512-QCg9sL4uhjn468FDEsb/S9hS2xUZSrv/+dApb1Ze5VKO96pTXKNJZ6MGhIpgWkc1TVhbVGH9/7rq/Mf8/jWicw==} + dependencies: + lodash: 4.17.21 + dev: false + + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: false + + /@dnd-kit/accessibility@3.0.1(react@17.0.2): + resolution: {integrity: sha512-HXRrwS9YUYQO9lFRc/49uO/VICbM+O+ZRpFDe9Pd1rwVv2PCNkRiTZRdxrDgng/UkvdC3Re9r2vwPpXXrWeFzg==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 17.0.2 + tslib: 2.6.2 + dev: false + + /@dnd-kit/core@6.0.8(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@dnd-kit/accessibility': 3.0.1(react@17.0.2) + '@dnd-kit/utilities': 3.2.1(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.6.2 + dev: false + + /@dnd-kit/modifiers@6.0.1(@dnd-kit/core@6.0.8)(react@17.0.2): + resolution: {integrity: sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==} + peerDependencies: + '@dnd-kit/core': ^6.0.6 + react: '>=16.8.0' + dependencies: + '@dnd-kit/core': 6.0.8(react-dom@17.0.2)(react@17.0.2) + '@dnd-kit/utilities': 3.2.1(react@17.0.2) + react: 17.0.2 + tslib: 2.6.2 + dev: false + + /@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.0.8)(react@17.0.2): + resolution: {integrity: sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==} + peerDependencies: + '@dnd-kit/core': ^6.0.7 + react: '>=16.8.0' + dependencies: + '@dnd-kit/core': 6.0.8(react-dom@17.0.2)(react@17.0.2) + '@dnd-kit/utilities': 3.2.1(react@17.0.2) + react: 17.0.2 + tslib: 2.6.2 + dev: false + + /@dnd-kit/utilities@3.2.1(react@17.0.2): + resolution: {integrity: sha512-OOXqISfvBw/1REtkSK2N3Fi2EQiLMlWUlqnOK/UpOISqBZPWpE6TqL+jcPtMOkE8TqYGiURvRdPSI9hltNUjEA==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 17.0.2 + tslib: 2.6.2 + dev: false + + /@emotion/cache@10.0.29: + resolution: {integrity: sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==} + dependencies: + '@emotion/sheet': 0.9.4 + '@emotion/stylis': 0.8.5 + '@emotion/utils': 0.11.3 + '@emotion/weak-memoize': 0.2.5 + dev: false + + /@emotion/core@10.3.1(react@17.0.2): + resolution: {integrity: sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==} + peerDependencies: + react: '>=16.3.0' + dependencies: + '@babel/runtime': 7.22.15 + '@emotion/cache': 10.0.29 + '@emotion/css': 10.0.27 + '@emotion/serialize': 0.11.16 + '@emotion/sheet': 0.9.4 + '@emotion/utils': 0.11.3 + react: 17.0.2 + dev: false + + /@emotion/css@10.0.27: + resolution: {integrity: sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==} + dependencies: + '@emotion/serialize': 0.11.16 + '@emotion/utils': 0.11.3 + babel-plugin-emotion: 10.2.2 + dev: false + + /@emotion/hash@0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + dev: false + + /@emotion/memoize@0.7.4: + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + dev: false + + /@emotion/serialize@0.11.16: + resolution: {integrity: sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==} + dependencies: + '@emotion/hash': 0.8.0 + '@emotion/memoize': 0.7.4 + '@emotion/unitless': 0.7.5 + '@emotion/utils': 0.11.3 + csstype: 2.6.21 + dev: false + + /@emotion/sheet@0.9.4: + resolution: {integrity: sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==} + dev: false + + /@emotion/stylis@0.8.5: + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + dev: false + + /@emotion/unitless@0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + dev: false + + /@emotion/utils@0.11.3: + resolution: {integrity: sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==} + dev: false + + /@emotion/weak-memoize@0.2.5: + resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==} + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint@7.32.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 3.4.3 + + /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.49.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.8.1: + resolution: {integrity: sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + /@eslint/eslintrc@0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 7.3.1 + globals: 13.21.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.21.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.49.0: + resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@formatjs/ecma402-abstract@1.11.4: + resolution: {integrity: sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==} + dependencies: + '@formatjs/intl-localematcher': 0.2.25 + tslib: 2.6.2 + dev: true + + /@formatjs/fast-memoize@1.2.1: + resolution: {integrity: sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==} + dependencies: + tslib: 2.6.2 + dev: true + + /@formatjs/icu-messageformat-parser@2.1.0: + resolution: {integrity: sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==} + dependencies: + '@formatjs/ecma402-abstract': 1.11.4 + '@formatjs/icu-skeleton-parser': 1.3.6 + tslib: 2.6.2 + dev: true + + /@formatjs/icu-skeleton-parser@1.3.6: + resolution: {integrity: sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==} + dependencies: + '@formatjs/ecma402-abstract': 1.11.4 + tslib: 2.6.2 + dev: true + + /@formatjs/intl-displaynames@1.2.10: + resolution: {integrity: sha512-GROA2RP6+7Ouu0WnHFF78O5XIU7pBfI19WM1qm93l6MFWibUk67nCfVCK3VAYJkLy8L8ZxjkYT11VIAfvSz8wg==} + dependencies: + '@formatjs/intl-utils': 2.3.0 + dev: true + + /@formatjs/intl-listformat@1.4.8: + resolution: {integrity: sha512-WNMQlEg0e50VZrGIkgD5n7+DAMGt3boKi1GJALfhFMymslJb5i+5WzWxyj/3a929Z6MAFsmzRIJjKuv+BxKAOQ==} + dependencies: + '@formatjs/intl-utils': 2.3.0 + dev: true + + /@formatjs/intl-localematcher@0.2.25: + resolution: {integrity: sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==} + dependencies: + tslib: 2.6.2 + dev: true + + /@formatjs/intl-pluralrules@1.5.9: + resolution: {integrity: sha512-37E1ZG+Oqo3qrpUfumzNcFTV+V+NCExmTkkQ9Zw4FSlvJ4WhbbeYdieVapUVz9M0cLy8XrhCkfuM/Kn03iKReg==} + dependencies: + '@formatjs/intl-utils': 2.3.0 + dev: true + + /@formatjs/intl-relativetimeformat@4.5.16: + resolution: {integrity: sha512-IQ0haY97oHAH5OYUdykNiepdyEWj3SAT+Fp9ZpR85ov2JNiFx+12WWlxlVS8ehdyncC2ZMt/SwFIy2huK2+6/A==} + dependencies: + '@formatjs/intl-utils': 2.3.0 + dev: true + + /@formatjs/intl-unified-numberformat@3.3.7: + resolution: {integrity: sha512-KnWgLRHzCAgT9eyt3OS34RHoyD7dPDYhRcuKn+/6Kv2knDF8Im43J6vlSW6Hm1w63fNq3ZIT1cFk7RuVO3Psag==} + deprecated: We have renamed the package to @formatjs/intl-numberformat + dependencies: + '@formatjs/intl-utils': 2.3.0 + dev: true + + /@formatjs/intl-utils@2.3.0: + resolution: {integrity: sha512-KWk80UPIzPmUg+P0rKh6TqspRw0G6eux1PuJr+zz47ftMaZ9QDwbGzHZbtzWkl5hgayM/qrKRutllRC7D/vVXQ==} + deprecated: the package is rather renamed to @formatjs/ecma-abstract with some changes in functionality (primarily selectUnit is removed and we don't plan to make any further changes to this package + dev: true + + /@hapi/address@2.1.4: + resolution: {integrity: sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==} + deprecated: Moved to 'npm install @sideway/address' + dev: true + + /@hapi/formula@1.2.0: + resolution: {integrity: sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA==} + deprecated: Moved to 'npm install @sideway/formula' + dev: true + + /@hapi/hoek@8.5.1: + resolution: {integrity: sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==} + deprecated: This version has been deprecated and is no longer supported or maintained + dev: true + + /@hapi/joi@16.1.8: + resolution: {integrity: sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg==} + deprecated: Switch to 'npm install joi' + dependencies: + '@hapi/address': 2.1.4 + '@hapi/formula': 1.2.0 + '@hapi/hoek': 8.5.1 + '@hapi/pinpoint': 1.0.2 + '@hapi/topo': 3.1.6 + dev: true + + /@hapi/pinpoint@1.0.2: + resolution: {integrity: sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ==} + deprecated: Moved to 'npm install @sideway/pinpoint' + dev: true + + /@hapi/topo@3.1.6: + resolution: {integrity: sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==} + deprecated: This version has been deprecated and is no longer supported or maintained + dependencies: + '@hapi/hoek': 8.5.1 + dev: true + + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array@0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + + /@icons/material@0.2.4(react@17.0.2): + resolution: {integrity: sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==} + peerDependencies: + react: '*' + dependencies: + react: 17.0.2 + dev: false + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@26.6.2: + resolution: {integrity: sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@types/node': 16.18.50 + chalk: 4.1.2 + jest-message-util: 26.6.2 + jest-util: 26.6.2 + slash: 3.0.0 + dev: true + + /@jest/console@27.5.1: + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + dev: true + + /@jest/console@28.1.3: + resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/node': 16.18.50 + chalk: 4.1.2 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + slash: 3.0.0 + dev: true + + /@jest/core@26.6.3: + resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/console': 26.6.2 + '@jest/reporters': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 16.18.50 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 26.6.2 + jest-config: 26.6.3 + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-resolve-dependencies: 26.6.3 + jest-runner: 26.6.3 + jest-runtime: 26.6.3 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + jest-watcher: 26.6.2 + micromatch: 4.0.5 + p-each-series: 2.2.0 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@jest/core@27.5.1: + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 27.5.1 + jest-config: 27.5.1 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.5 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@jest/environment@26.6.2: + resolution: {integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 16.18.50 + jest-mock: 26.6.2 + dev: true + + /@jest/environment@27.5.1: + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + jest-mock: 27.5.1 + dev: true + + /@jest/fake-timers@26.6.2: + resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@sinonjs/fake-timers': 6.0.1 + '@types/node': 16.18.50 + jest-message-util: 26.6.2 + jest-mock: 26.6.2 + jest-util: 26.6.2 + dev: true + + /@jest/fake-timers@27.5.1: + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 16.18.50 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 + dev: true + + /@jest/globals@26.6.2: + resolution: {integrity: sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/environment': 26.6.2 + '@jest/types': 26.6.2 + expect: 26.6.2 + dev: true + + /@jest/globals@27.5.1: + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 + dev: true + + /@jest/reporters@26.6.2: + resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 4.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-haste-map: 26.6.2 + jest-resolve: 26.6.2 + jest-util: 26.6.2 + jest-worker: 26.6.2 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 7.1.2 + optionalDependencies: + node-notifier: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@27.5.1: + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@28.1.3: + resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@sinclair/typebox': 0.24.51 + dev: true + + /@jest/source-map@26.6.2: + resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==} + engines: {node: '>= 10.14.2'} + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + dev: true + + /@jest/source-map@27.5.1: + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + dev: true + + /@jest/test-result@26.6.2: + resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/console': 26.6.2 + '@jest/types': 26.6.2 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-result@27.5.1: + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-result@28.1.3: + resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/console': 28.1.3 + '@jest/types': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@26.6.3: + resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/test-result': 26.6.2 + graceful-fs: 4.2.11 + jest-haste-map: 26.6.2 + jest-runner: 26.6.3 + jest-runtime: 26.6.3 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@jest/test-sequencer@27.5.1: + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/test-result': 27.5.1 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/transform@26.6.2: + resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/core': 7.18.6 + '@jest/types': 26.6.2 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 26.6.2 + jest-regex-util: 26.0.0 + jest-util: 26.6.2 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/transform@27.5.1: + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/core': 7.22.17 + '@jest/types': 27.5.1 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 16.18.50 + '@types/yargs': 15.0.15 + chalk: 4.1.2 + dev: true + + /@jest/types@27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 16.18.50 + '@types/yargs': 16.0.5 + chalk: 4.1.2 + dev: true + + /@jest/types@28.1.3: + resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 16.18.50 + '@types/yargs': 17.0.24 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@leichtgewicht/ip-codec@2.0.4: + resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + dev: true + + /@mapbox/geojson-rewind@0.5.2: + resolution: {integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==} + hasBin: true + dependencies: + get-stream: 6.0.1 + minimist: 1.2.8 + dev: false + + /@mapbox/geojson-types@1.0.2: + resolution: {integrity: sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==} + dev: false + + /@mapbox/hast-util-to-jsx@1.0.0: + resolution: {integrity: sha512-HJRp3qkr0uGIBFASzA8rVATLo6y/UoOMoD8eXsG8HVofk5Dokc9PV+dh266zYLZniYgtpJbc2+AKf1fNpsVqAA==} + engines: {node: '>=10'} + dependencies: + kebab-case: 1.0.2 + postcss: 7.0.39 + postcss-js: 2.0.3 + property-information: 5.6.0 + react-attr-converter: 0.3.1 + stringify-entities: 3.1.0 + stringify-object: 3.3.0 + dev: true + + /@mapbox/jsonlint-lines-primitives@2.0.2: + resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==} + engines: {node: '>= 0.6'} + dev: false + + /@mapbox/mapbox-gl-supported@1.5.0(mapbox-gl@1.13.3): + resolution: {integrity: sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==} + peerDependencies: + mapbox-gl: '>=0.32.1 <2.0.0' + dependencies: + mapbox-gl: 1.13.3 + dev: false + + /@mapbox/martini@0.2.0: + resolution: {integrity: sha512-7hFhtkb0KTLEls+TRw/rWayq5EeHtTaErgm/NskVoXmtgAQu/9D299aeyj6mzAR/6XUnYRp2lU+4IcrYRFjVsQ==} + dev: false + + /@mapbox/point-geometry@0.1.0: + resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==} + dev: false + + /@mapbox/tiny-sdf@1.2.5: + resolution: {integrity: sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==} + dev: false + + /@mapbox/unitbezier@0.0.0: + resolution: {integrity: sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==} + dev: false + + /@mapbox/vector-tile@1.3.1: + resolution: {integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + dev: false + + /@mapbox/whoots-js@3.1.0: + resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} + engines: {node: '>=6.0.0'} + dev: false + + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.11.0)(webpack-dev-server@4.15.1)(webpack@5.88.2): + resolution: {integrity: sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.32.2 + error-stack-parser: 2.1.4 + find-up: 5.0.0 + html-entities: 2.4.0 + loader-utils: 2.0.4 + react-refresh: 0.11.0 + schema-utils: 3.3.0 + source-map: 0.7.4 + webpack: 5.88.2 + webpack-dev-server: 4.15.1(webpack@5.88.2) + dev: true + + /@polka/url@1.0.0-next.23: + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} + dev: false + + /@probe.gl/env@3.6.0: + resolution: {integrity: sha512-4tTZYUg/8BICC3Yyb9rOeoKeijKbZHRXBEKObrfPmX4sQmYB15ZOUpoVBhAyJkOYVAM8EkPci6Uw5dLCwx2BEQ==} + dependencies: + '@babel/runtime': 7.22.15 + dev: false + + /@probe.gl/log@3.6.0: + resolution: {integrity: sha512-hjpyenpEvOdowgZ1qMeCJxfRD4JkKdlXz0RC14m42Un62NtOT+GpWyKA4LssT0+xyLULCByRAtG2fzZorpIAcA==} + dependencies: + '@babel/runtime': 7.22.15 + '@probe.gl/env': 3.6.0 + dev: false + + /@probe.gl/stats@3.6.0: + resolution: {integrity: sha512-JdALQXB44OP4kUBN/UrQgzbJe4qokbVF4Y8lkIA8iVCFnjVowWIgkD/z/0QO65yELT54tTrtepw1jScjKB+rhQ==} + dependencies: + '@babel/runtime': 7.22.15 + dev: false + + /@qixian.cs/path-to-regexp@6.1.0: + resolution: {integrity: sha512-2jIiLiVZB1jnY7IIRQKtoV8Gnr7XIhk4mC88ONGunZE3hYt5IHUG4BE/6+JiTBjjEWQLBeWnZB8hGpppkufiVw==} + + /@rc-component/color-picker@1.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-vh5EWqnsayZa/JwUznqDaPJz39jznx/YDbyBuVJntv735tKXKwEUZZb2jYEldOg+NKWZwtALjGMrNeGBmqFoEw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@ctrl/tinycolor': 3.6.1 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rc-component/context@1.4.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rc-component/mini-decimal@1.1.0: + resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} + engines: {node: '>=8.x'} + dependencies: + '@babel/runtime': 7.22.15 + dev: false + + /@rc-component/mutate-observer@1.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rc-component/portal@1.1.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /@rc-component/portal@1.1.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rc-component/tour@1.10.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-voV0BKaTJbewB9LLgAHQ7tAGG7rgDkKQkZo82xw2gIk542hY+o7zwoqdN16oHhIKk7eG/xi+mdXrONT62Dt57A==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rc-component/trigger@1.15.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Tl19KaGsShf4yzqxumsXVT4c7j0l20Dxe5hgP5S0HmxyhCg3oKen28ntGavRCIPW7cl7wgsGotntqcIokgDHzg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-align: 4.0.15(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rollup/plugin-babel@5.3.1(@babel/core@7.22.17)(rollup@2.79.1): + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-module-imports': 7.22.15 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + rollup: 2.79.1 + dev: true + + /@rollup/plugin-commonjs@25.0.4(rollup@3.29.1): + resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.27.0 + rollup: 3.29.1 + dev: true + + /@rollup/plugin-json@6.0.0(rollup@3.29.1): + resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + rollup: 3.29.1 + dev: true + + /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1): + resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@types/resolve': 1.17.1 + builtin-modules: 3.3.0 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.4 + rollup: 2.79.1 + dev: true + + /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.1): + resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.4 + rollup: 3.29.1 + dev: true + + /@rollup/plugin-replace@2.4.2(rollup@2.79.1): + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + magic-string: 0.25.9 + rollup: 2.79.1 + dev: true + + /@rollup/plugin-replace@5.0.2(rollup@3.29.1): + resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + magic-string: 0.27.0 + rollup: 3.29.1 + dev: true + + /@rollup/plugin-terser@0.4.3(rollup@3.29.1): + resolution: {integrity: sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.x || ^3.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 3.29.1 + serialize-javascript: 6.0.1 + smob: 1.4.0 + terser: 5.19.4 + dev: true + + /@rollup/pluginutils@3.1.0(rollup@2.79.1): + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.1 + dev: true + + /@rollup/pluginutils@4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rollup/pluginutils@5.0.4(rollup@3.29.1): + resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 3.29.1 + dev: true + + /@rushstack/eslint-patch@1.3.3: + resolution: {integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==} + dev: true + + /@sinclair/typebox@0.24.51: + resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + dev: true + + /@sinonjs/commons@1.8.6: + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@6.0.1: + resolution: {integrity: sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==} + dependencies: + '@sinonjs/commons': 1.8.6 + dev: true + + /@sinonjs/fake-timers@8.1.0: + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + dependencies: + '@sinonjs/commons': 1.8.6 + dev: true + + /@stylelint/postcss-css-in-js@0.37.3(postcss-syntax@0.36.2)(postcss@7.0.39): + resolution: {integrity: sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + peerDependencies: + postcss: '>=7.0.0' + postcss-syntax: '>=0.36.2' + dependencies: + '@babel/core': 7.22.17 + postcss: 7.0.39 + postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39) + transitivePeerDependencies: + - supports-color + dev: true + + /@stylelint/postcss-markdown@0.36.2(postcss-syntax@0.36.2)(postcss@7.0.39): + resolution: {integrity: sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==} + deprecated: 'Use the original unforked package instead: postcss-markdown' + peerDependencies: + postcss: '>=7.0.0' + postcss-syntax: '>=0.36.2' + dependencies: + postcss: 7.0.39 + postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39) + remark: 13.0.0 + unist-util-find-all-after: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@surma/rollup-plugin-off-main-thread@2.2.3: + resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + dependencies: + ejs: 3.1.9 + json5: 2.2.3 + magic-string: 0.25.9 + string.prototype.matchall: 4.0.10 + dev: true + + /@svgr/babel-plugin-add-jsx-attribute@5.4.0: + resolution: {integrity: sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-remove-jsx-attribute@5.4.0: + resolution: {integrity: sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-remove-jsx-empty-expression@5.0.1: + resolution: {integrity: sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-replace-jsx-attribute-value@5.0.1: + resolution: {integrity: sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-svg-dynamic-title@5.4.0: + resolution: {integrity: sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-svg-em-dimensions@5.4.0: + resolution: {integrity: sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-transform-react-native-svg@5.4.0: + resolution: {integrity: sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-transform-svg-component@5.5.0: + resolution: {integrity: sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-preset@5.5.0: + resolution: {integrity: sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==} + engines: {node: '>=10'} + dependencies: + '@svgr/babel-plugin-add-jsx-attribute': 5.4.0 + '@svgr/babel-plugin-remove-jsx-attribute': 5.4.0 + '@svgr/babel-plugin-remove-jsx-empty-expression': 5.0.1 + '@svgr/babel-plugin-replace-jsx-attribute-value': 5.0.1 + '@svgr/babel-plugin-svg-dynamic-title': 5.4.0 + '@svgr/babel-plugin-svg-em-dimensions': 5.4.0 + '@svgr/babel-plugin-transform-react-native-svg': 5.4.0 + '@svgr/babel-plugin-transform-svg-component': 5.5.0 + dev: true + + /@svgr/core@5.5.0: + resolution: {integrity: sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==} + engines: {node: '>=10'} + dependencies: + '@svgr/plugin-jsx': 5.5.0 + camelcase: 6.3.0 + cosmiconfig: 7.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@svgr/hast-util-to-babel-ast@5.5.0: + resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==} + engines: {node: '>=10'} + dependencies: + '@babel/types': 7.22.17 + dev: true + + /@svgr/plugin-jsx@5.5.0: + resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.22.17 + '@svgr/babel-preset': 5.5.0 + '@svgr/hast-util-to-babel-ast': 5.5.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@svgr/plugin-svgo@5.5.0: + resolution: {integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==} + engines: {node: '>=10'} + dependencies: + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + svgo: 1.3.2 + dev: true + + /@svgr/webpack@5.5.0: + resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.22.17 + '@babel/plugin-transform-react-constant-elements': 7.22.5(@babel/core@7.22.17) + '@babel/preset-env': 7.22.15(@babel/core@7.22.17) + '@babel/preset-react': 7.22.15(@babel/core@7.22.17) + '@svgr/core': 5.5.0 + '@svgr/plugin-jsx': 5.5.0 + '@svgr/plugin-svgo': 5.5.0 + loader-utils: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@testing-library/dom@8.20.1: + resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} + engines: {node: '>=12'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/runtime': 7.22.15 + '@types/aria-query': 5.0.1 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/dom@9.3.1: + resolution: {integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==} + engines: {node: '>=14'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/runtime': 7.22.15 + '@types/aria-query': 5.0.1 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/jest-dom@5.17.0: + resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==} + engines: {node: '>=8', npm: '>=6', yarn: '>=1'} + dependencies: + '@adobe/css-tools': 4.3.1 + '@babel/runtime': 7.22.15 + '@types/testing-library__jest-dom': 5.14.9 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.5.16 + lodash: 4.17.21 + redent: 3.0.0 + dev: true + + /@testing-library/react@13.4.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==} + engines: {node: '>=12'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.22.15 + '@testing-library/dom': 8.20.1 + '@types/react-dom': 18.2.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@testing-library/user-event@13.5.0(@testing-library/dom@9.3.1): + resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + dependencies: + '@babel/runtime': 7.22.15 + '@testing-library/dom': 9.3.1 + dev: true + + /@tootallnate/once@1.1.2: + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + dev: true + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@trysound/sax@0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true + + /@turf/bbox-polygon@6.5.0: + resolution: {integrity: sha512-+/r0NyL1lOG3zKZmmf6L8ommU07HliP4dgYToMoTxqzsWzyLjaj/OzgQ8rBmv703WJX+aS6yCmLuIhYqyufyuw==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/bbox@6.5.0: + resolution: {integrity: sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/clone@6.5.0: + resolution: {integrity: sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/helpers@6.5.0: + resolution: {integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==} + dev: false + + /@turf/invariant@6.5.0: + resolution: {integrity: sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/meta@6.5.0: + resolution: {integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/polygon-to-line@6.5.0: + resolution: {integrity: sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/union@6.5.0: + resolution: {integrity: sha512-igYWCwP/f0RFHIlC2c0SKDuM/ObBaqSljI3IdV/x71805QbIvY/BYGcJdyNcgEA6cylIGl/0VSlIbpJHZ9ldhw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + polygon-clipping: 0.15.3 + dev: false + + /@types/amap-js-api@1.4.12: + resolution: {integrity: sha512-q/qvE40hkg9gcfFBR5JwlWepK+eh2RB93dwUEHtNID+nx+UPsBBK2ilzYtP8QOutw89eR2F0PQ0RfypFSSdz2w==} + dev: false + + /@types/aria-query@5.0.1: + resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} + dev: true + + /@types/babel__core@7.20.1: + resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} + dependencies: + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.20.1 + dev: true + + /@types/babel__generator@7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.22.17 + dev: true + + /@types/babel__template@7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 + dev: true + + /@types/babel__traverse@7.20.1: + resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + dependencies: + '@babel/types': 7.22.17 + dev: true + + /@types/body-parser@1.19.2: + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + dependencies: + '@types/connect': 3.4.36 + '@types/node': 16.18.50 + dev: true + + /@types/bonjour@3.5.10: + resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} + dependencies: + '@types/node': 16.18.50 + dev: true + + /@types/classnames@2.3.1: + resolution: {integrity: sha512-zeOWb0JGBoVmlQoznvqXbE0tEC/HONsnoUNH19Hc96NFsTAwTXbTqb8FMYkru1F/iqp7a18Ws3nWJvtA1sHD1A==} + deprecated: This is a stub types definition. classnames provides its own type definitions, so you do not need this installed. + dependencies: + classnames: 2.3.2 + dev: true + + /@types/connect-history-api-fallback@1.5.1: + resolution: {integrity: sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==} + dependencies: + '@types/express-serve-static-core': 4.17.36 + '@types/node': 16.18.50 + dev: true + + /@types/connect@3.4.36: + resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} + dependencies: + '@types/node': 16.18.50 + dev: true + + /@types/crypto-js@4.1.2: + resolution: {integrity: sha512-t33RNmTu5ufG/sorROIafiCVJMx3jz95bXUMoPAZcUD14fxMXnuTzqzXZoxpR0tNx2xpw11Dlmem9vGCsrSOfA==} + dev: true + + /@types/d3-timer@2.0.1: + resolution: {integrity: sha512-TF8aoF5cHcLO7W7403blM7L1T+6NF3XMyN3fxyUolq2uOcFeicG/khQg/dGxiCJWoAcmYulYN7LYSRKO54IXaA==} + dev: false + + /@types/draft-js@0.11.12: + resolution: {integrity: sha512-J/e4QYz8wCXvPpiCaiKcJrtLo65px4nnfFVZ/0EKHoKnQ4nWdzXwGHOQLIePAJM+Ho4V9/mb4Nhw4v/08y98jQ==} + dependencies: + '@types/react': 17.0.65 + immutable: 3.7.6 + + /@types/draftjs-to-html@0.8.1: + resolution: {integrity: sha512-NBkphQs+qZ/sAz/j1pCUaxkPAOx00LTsE88aMSSfcvK+UfCpjHJDqIMCkm6wKotuJvY5w0BtdRazQ0sAaXzPdg==} + dependencies: + '@types/draft-js': 0.11.12 + dev: true + + /@types/echarts@4.9.18: + resolution: {integrity: sha512-Qav4M1i1qmPemMywMnDGIbvIBB/9pdrDKLI1dyMho4Yz/ldCB3ry2zGeH0UhAhgmaoPgwYrCDo8xd1UeByz+rw==} + dependencies: + '@types/zrender': 4.0.4 + dev: true + + /@types/eslint-scope@3.7.4: + resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} + dependencies: + '@types/eslint': 8.44.2 + '@types/estree': 1.0.1 + + /@types/eslint@7.29.0: + resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} + dependencies: + '@types/estree': 1.0.1 + '@types/json-schema': 7.0.12 + dev: true + + /@types/eslint@8.44.2: + resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} + dependencies: + '@types/estree': 1.0.1 + '@types/json-schema': 7.0.12 + + /@types/estree@0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: true + + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + + /@types/express-serve-static-core@4.17.36: + resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} + dependencies: + '@types/node': 16.18.50 + '@types/qs': 6.9.8 + '@types/range-parser': 1.2.4 + '@types/send': 0.17.1 + dev: true + + /@types/express@4.17.17: + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} + dependencies: + '@types/body-parser': 1.19.2 + '@types/express-serve-static-core': 4.17.36 + '@types/qs': 6.9.8 + '@types/serve-static': 1.15.2 + dev: true + + /@types/geojson@7946.0.10: + resolution: {integrity: sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==} + dev: false + + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 16.18.50 + dev: true + + /@types/graceful-fs@4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + dependencies: + '@types/node': 16.18.50 + dev: true + + /@types/hast@2.3.5: + resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} + dependencies: + '@types/unist': 2.0.8 + + /@types/history@4.7.11: + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + + /@types/hoist-non-react-statics@3.3.1: + resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} + dependencies: + '@types/react': 17.0.65 + hoist-non-react-statics: 3.3.2 + dev: true + + /@types/html-minifier-terser@6.1.0: + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + dev: true + + /@types/http-errors@2.0.1: + resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} + dev: true + + /@types/http-proxy@1.17.11: + resolution: {integrity: sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==} + dependencies: + '@types/node': 16.18.50 + dev: true + + /@types/invariant@2.2.35: + resolution: {integrity: sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==} + dev: true + + /@types/isomorphic-fetch@0.0.35: + resolution: {integrity: sha512-DaZNUvLDCAnCTjgwxgiL1eQdxIKEpNLOlTNtAgnZc50bG2copGhRrFN9/PxPBuJe+tZVLCbQ7ls0xveXVRPkvw==} + dev: true + + /@types/istanbul-lib-coverage@2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports@3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/jest@26.0.24: + resolution: {integrity: sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==} + dependencies: + jest-diff: 26.6.2 + pretty-format: 26.6.2 + dev: true + + /@types/jest@27.5.2: + resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} + dependencies: + jest-matcher-utils: 27.5.1 + pretty-format: 27.5.1 + dev: true + + /@types/js-cookie@2.2.7: + resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} + dev: false + + /@types/jsdom@21.1.2: + resolution: {integrity: sha512-bGj+7TaCkOwkJfx7HtS9p22Ij0A2aKMuz8a1+owpkxa1wU/HUBy/WAXhdv90uDdVI9rSjGvUrXmLSeA9VP3JeA==} + dependencies: + '@types/node': 16.18.50 + '@types/tough-cookie': 4.0.3 + parse5: 7.1.2 + dev: false + + /@types/json-schema@7.0.12: + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 16.18.50 + dev: true + + /@types/lodash@4.14.198: + resolution: {integrity: sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==} + dev: true + + /@types/mapbox-gl@1.13.6: + resolution: {integrity: sha512-CONmQCVgzLOseiDa0s8EXwgc3z9FQcc8U/KsIBiaNBY1sIxPen14k9z3eMeYgpx1vo7k0cq9xxxk3/xSZkW0TQ==} + dependencies: + '@types/geojson': 7946.0.10 + dev: false + + /@types/mathjax@0.0.36: + resolution: {integrity: sha512-TqDJc2GWuTqd/m+G/FbNkN+/TF2OCCHvcawmhIrUaZkdVquMdNZmNiNUkupNg9qctorXXkVLVSogZv1DhmgLmg==} + dev: true + + /@types/mdast@3.0.12: + resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} + dependencies: + '@types/unist': 2.0.8 + dev: true + + /@types/mime@1.3.2: + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + dev: true + + /@types/mime@3.0.1: + resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} + dev: true + + /@types/minimatch@3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: true + + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: true + + /@types/minimist@1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + dev: true + + /@types/node@12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + dev: true + + /@types/node@14.18.59: + resolution: {integrity: sha512-NWJMpBL2Xs3MY93yrD6YrrTKep8eIA6iMnfG4oIc6LrTRlBZgiSCGiY3V/Owlp6umIBLyKb4F8Q7hxWatjYH5A==} + dev: true + + /@types/node@16.18.50: + resolution: {integrity: sha512-OiDU5xRgYTJ203v4cprTs0RwOCd5c5Zjv+K5P8KSqfiCsB1W3LcamTUMcnQarpq5kOYbhHfSOgIEJvdPyb5xyw==} + + /@types/normalize-package-data@2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true + + /@types/numeral@2.0.2: + resolution: {integrity: sha512-A8F30k2gYJ/6e07spSCPpkuZu79LCnkPTvqmIWQzNGcrzwFKpVOydG41lNt5wZXjSI149qjyzC2L1+F2PD/NUA==} + dev: false + + /@types/parse-json@4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + + /@types/parse5@5.0.3: + resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} + dev: true + + /@types/pinyin@2.10.0: + resolution: {integrity: sha512-YLty6FPYiBgxNbQNaTRJquvflRdG026jjOpjNXR7HdGEJPGtmPBp1x9LkWePCNA/ClaTT0hYem080TbRCMLbew==} + dev: true + + /@types/prettier@1.19.1: + resolution: {integrity: sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==} + dev: true + + /@types/prettier@2.7.3: + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + dev: true + + /@types/prop-types@15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + + /@types/q@1.5.6: + resolution: {integrity: sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==} + dev: true + + /@types/qs@6.9.8: + resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} + dev: true + + /@types/range-parser@1.2.4: + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + dev: true + + /@types/react-dom@16.9.19: + resolution: {integrity: sha512-xC8D280Bf6p0zguJ8g62jcEOKZiUbx9sIe6O3tT/lKfR87A7A6g65q13z6D5QUMIa/6yFPkNhqjF5z/VVZEYqQ==} + dependencies: + '@types/react': 16.14.46 + + /@types/react-dom@17.0.20: + resolution: {integrity: sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA==} + dependencies: + '@types/react': 17.0.65 + dev: true + + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + dependencies: + '@types/react': 18.2.21 + dev: true + + /@types/react-draft-wysiwyg@1.13.4: + resolution: {integrity: sha512-wasD1t78JDmQvdPDRPf/mf5FSHMlncunW0F6KMOKB3awzi3Wi21yHMGsRAUOkfTr3R8F+yceG8fSLz0kYWu/QA==} + dependencies: + '@types/draft-js': 0.11.12 + '@types/react': 17.0.65 + dev: false + + /@types/react-helmet@6.1.6: + resolution: {integrity: sha512-ZKcoOdW/Tg+kiUbkFCBtvDw0k3nD4HJ/h/B9yWxN4uDO8OkRksWTO+EL+z/Qu3aHTeTll3Ro0Cc/8UhwBCMG5A==} + dependencies: + '@types/react': 17.0.65 + dev: true + + /@types/react-redux@7.1.26: + resolution: {integrity: sha512-UKPo7Cm7rswYU6PH6CmTNCRv5NYF3HrgKuHEYTK8g/3czYLrUux50gQ2pkxc9c7ZpQZi+PNhgmI8oNIRoiVIxg==} + dependencies: + '@types/hoist-non-react-statics': 3.3.1 + '@types/react': 17.0.65 + hoist-non-react-statics: 3.3.2 + redux: 4.2.1 + dev: true + + /@types/react-router-config@5.0.2: + resolution: {integrity: sha512-WOSetDV3YPxbkVJAdv/bqExJjmcdCi/vpCJh3NfQOy1X15vHMSiMioXIcGekXDJJYhqGUMDo9e337mh508foAA==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 17.0.65 + '@types/react-router': 5.1.20 + + /@types/react-router-config@5.0.7: + resolution: {integrity: sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 17.0.65 + '@types/react-router': 5.1.20 + + /@types/react-router-dom@5.1.7: + resolution: {integrity: sha512-D5mHD6TbdV/DNHYsnwBTv+y73ei+mMjrkGrla86HthE4/PVvL1J94Bu3qABU+COXzpL23T1EZapVVpwHuBXiUg==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 17.0.65 + '@types/react-router': 5.1.12 + + /@types/react-router-dom@5.3.3: + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 17.0.65 + '@types/react-router': 5.1.20 + dev: true + + /@types/react-router@5.1.12: + resolution: {integrity: sha512-0bhXQwHYfMeJlCh7mGhc0VJTRm0Gk+Z8T00aiP4702mDUuLs9SMhnd2DitpjWFjdOecx2UXtICK14H9iMnziGA==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 17.0.65 + + /@types/react-router@5.1.20: + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 17.0.65 + + /@types/react-syntax-highlighter@13.5.2: + resolution: {integrity: sha512-sRZoKZBGKaE7CzMvTTgz+0x/aVR58ZYUTfB7HN76vC+yQnvo1FWtzNARBt0fGqcLGEVakEzMu/CtPzssmanu8Q==} + dependencies: + '@types/react': 17.0.65 + dev: false + + /@types/react@16.14.46: + resolution: {integrity: sha512-Am4pyXMrr6cWWw/TN3oqHtEZl0j+G6Up/O8m65+xF/3ZaUgkv1GAtTPWw4yNRmH0HJXmur6xKCKoMo3rBGynuw==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + + /@types/react@17.0.65: + resolution: {integrity: sha512-oxur785xZYHvnI7TRS61dXbkIhDPnGfsXKv0cNXR/0ml4SipRIFpSMzA7HMEfOywFwJ5AOnPrXYTEiTRUQeGlQ==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + + /@types/react@18.2.21: + resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + dev: true + + /@types/resolve@1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 16.18.50 + dev: true + + /@types/resolve@1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: true + + /@types/responselike@1.0.0: + resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + dependencies: + '@types/node': 16.18.50 + dev: true + + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: true + + /@types/sax@1.2.4: + resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==} + dependencies: + '@types/node': 16.18.50 + dev: true + + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + + /@types/semver@7.5.1: + resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} + + /@types/send@0.17.1: + resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + dependencies: + '@types/mime': 1.3.2 + '@types/node': 16.18.50 + dev: true + + /@types/serve-index@1.9.1: + resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} + dependencies: + '@types/express': 4.17.17 + dev: true + + /@types/serve-static@1.15.2: + resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} + dependencies: + '@types/http-errors': 2.0.1 + '@types/mime': 3.0.1 + '@types/node': 16.18.50 + dev: true + + /@types/sockjs@0.3.33: + resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} + dependencies: + '@types/node': 16.18.50 + dev: true + + /@types/stack-utils@2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true + + /@types/testing-library__jest-dom@5.14.9: + resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} + dependencies: + '@types/jest': 27.5.2 + dev: true + + /@types/tough-cookie@4.0.3: + resolution: {integrity: sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==} + dev: false + + /@types/trusted-types@2.0.4: + resolution: {integrity: sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==} + dev: true + + /@types/unist@2.0.8: + resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} + + /@types/ws@8.5.5: + resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} + dependencies: + '@types/node': 16.18.50 + dev: true + + /@types/yargs-parser@21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + + /@types/yargs@15.0.15: + resolution: {integrity: sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@types/yargs@16.0.5: + resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@types/yargs@17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@types/yauzl@2.10.0: + resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} + requiresBuild: true + dependencies: + '@types/node': 16.18.50 + dev: true + optional: true + + /@types/zrender@4.0.4: + resolution: {integrity: sha512-oLm5ULgmBZh2Fw3G0BbhKaES0nUkmxwC+j932+0hBX+/MrNCAkUy3vOfZ7Mhub1IuBe3ApCy6MzgTw0Atu2RwA==} + dev: true + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.8.1 + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 7.32.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.8.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.49.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.12 + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.9.5) + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@7.32.0) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/experimental-utils@5.62.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + eslint: 8.49.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser@5.62.0(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + debug: 4.3.4 + eslint: 7.32.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/parser@5.62.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.49.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@4.33.0: + resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + + /@typescript-eslint/type-utils@5.62.0(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 7.32.0 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/type-utils@5.62.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.49.0 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@4.33.0: + resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /@typescript-eslint/typescript-estree@4.33.0(typescript@4.9.5): + resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/utils@5.62.0(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@7.32.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.1 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + eslint: 7.32.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + + /@typescript-eslint/utils@5.62.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.1 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + eslint: 8.49.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@4.33.0: + resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + + /@uiw/react-watermark@0.0.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-F1JSV0kHbs0zLVRcGxhpO357dWkM4RVZaIHuyz5V+1BV8VAr23+e/7CvNyIRi9uz4RLkHeAopf6Ko3iLawOExw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@uiw/watermark.js': 0.0.5 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@uiw/watermark.js@0.0.5: + resolution: {integrity: sha512-M0U5Dut8NZxWMXwc6npxt2IpYgnwj7EO9yo0cji+AfSS3XuovH9mPzL+fHj+QPjCfJFNexCHTOoCsOBdcyLQDg==} + dev: false + + /@umijs/ast@3.5.41: + resolution: {integrity: sha512-jwwpcQZd54gVKCYovhRepUaMbaakxUbj6+J7ClCa0rRQFfM86iCh/F4qZi7Lypwe/F3eukAIujho7HiHhVXMBQ==} + dependencies: + '@umijs/utils': 3.5.41 + + /@umijs/babel-plugin-auto-css-modules@3.5.41: + resolution: {integrity: sha512-8iUcSFyLwRcRBsTW6hHuzDWX9Np+0AXqsFN08fnPI1P7zD4CSZWBLkjLz+zl4X8vakaPbqZy346KHoukbvEcew==} + dependencies: + '@umijs/utils': 3.5.41 + + /@umijs/babel-plugin-import-to-await-require@3.5.41: + resolution: {integrity: sha512-xn9JhFc/vz/itTaLKC4NX4qcGfsBQQN03Kp8Bt5irXtp3CeBfeYFHjwcZ4TE4SJDTjka2wOR4RhmV3CJ2NZrQQ==} + dependencies: + '@umijs/utils': 3.5.41 + + /@umijs/babel-plugin-lock-core-js-3@3.5.41: + resolution: {integrity: sha512-+h47NI5u4YLA46iDv5TMPXtZWactlPgFYeMotrsxyW3R6QiUyX8oMF2UroT4lhbhcrf7GHe4n7jQH3TllgFL6Q==} + dependencies: + '@umijs/utils': 3.5.41 + core-js: 3.6.5 + + /@umijs/babel-plugin-no-anonymous-default-export@3.5.41: + resolution: {integrity: sha512-uUoLNUsRcITEYW+ap8+OAjUYQS606Ob8YxqYCq0ZL4SktxjP5CDMabqrJ6CatWKjjpNvq2A6KPLJKA7/9/fwFA==} + dependencies: + '@umijs/utils': 3.5.41 + + /@umijs/babel-preset-umi@3.5.41: + resolution: {integrity: sha512-roKx1FWjqGtuqQazfceBVJrJNdiGRRiBgnthZtGujLWIec4iB5uliwvzmCunuw18l3MvLwkDEBhaRdMM0Ij3Dg==} + dependencies: + '@babel/runtime': 7.18.6 + '@umijs/babel-plugin-auto-css-modules': 3.5.41 + '@umijs/babel-plugin-import-to-await-require': 3.5.41 + '@umijs/babel-plugin-lock-core-js-3': 3.5.41 + '@umijs/babel-plugin-no-anonymous-default-export': 3.5.41 + '@umijs/deps': 3.5.41 + '@umijs/utils': 3.5.41 + + /@umijs/block-sdk@2.3.0(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2): + resolution: {integrity: sha512-CRfemEEEUbXuGN+7UCa8PbHdkbIe1Ua6DPoiAj0lJPk3LLx1mj24muIEo9fVmbbyU4rcNwKejbEpNDiClqKRIw==} + dependencies: + '@babel/generator': 7.4.4 + '@babel/parser': 7.4.5 + '@babel/runtime': 7.4.5 + '@babel/traverse': 7.4.5 + '@babel/types': 7.4.4 + '@hapi/joi': 16.1.8 + '@umijs/mem-fs-editor': 6.0.2 + '@umijs/types': 3.5.41(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2) + '@umijs/utils': 3.5.41 + clipboardy: 2.1.0 + crequire: 1.8.1 + dumi-assets-types: 1.0.1 + getnpmregistry: 1.0.1 + git-url-parse: 11.6.0 + mem-fs: 1.2.0 + ora: 3.4.0 + prettier: 2.3.2 + sort-package-json: 1.57.0 + sylvanas: 0.6.1 + terminal-link: 1.3.0 + uppercamelcase: 3.0.0 + transitivePeerDependencies: + - encoding + - postcss-jsx + - postcss-markdown + - react + - react-dom + - react-router + - supports-color + dev: true + + /@umijs/bundler-utils@3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0): + resolution: {integrity: sha512-irJUU/eWa2GG6JCkz172lMi+jiq7ZXatE2N7Tq/lokZUYu9R9BRaRN7dphgBlAUfOP3aBtjx51/5yZdYAeW0yQ==} + dependencies: + '@umijs/babel-preset-umi': 3.5.41 + '@umijs/types': 3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0) + '@umijs/utils': 3.5.41 + transitivePeerDependencies: + - react + - react-dom + - react-router + + /@umijs/bundler-utils@3.5.41(react-dom@16.14.0)(react-router@5.3.4)(react@16.14.0): + resolution: {integrity: sha512-irJUU/eWa2GG6JCkz172lMi+jiq7ZXatE2N7Tq/lokZUYu9R9BRaRN7dphgBlAUfOP3aBtjx51/5yZdYAeW0yQ==} + dependencies: + '@umijs/babel-preset-umi': 3.5.41 + '@umijs/types': 3.5.41(react-dom@16.14.0)(react-router@5.3.4)(react@16.14.0) + '@umijs/utils': 3.5.41 + transitivePeerDependencies: + - react + - react-dom + - react-router + + /@umijs/bundler-webpack@3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0): + resolution: {integrity: sha512-n4HIrDUE3QfN5xSTWJlRz5wzsnWggzRJhEDJZ6l23BWiwWasFW6QMGCnFWLwO93ei273LovylD5vZhI221tBtQ==} + hasBin: true + dependencies: + '@umijs/bundler-utils': 3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0) + '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 + '@umijs/deps': 3.5.41 + '@umijs/types': 3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0) + '@umijs/utils': 3.5.41 + jest-worker: 26.6.2 + node-libs-browser: 2.2.1 + normalize-url: 1.9.1 + postcss: 7.0.32 + postcss-flexbugs-fixes: 4.2.1 + postcss-loader: 3.0.0 + postcss-preset-env: 6.7.0 + postcss-safe-parser: 4.0.2 + terser: 5.14.2 + webpack-chain: 6.5.1 + transitivePeerDependencies: + - react + - react-dom + - react-router + + /@umijs/bundler-webpack@3.5.41(react-dom@16.14.0)(react-router@5.3.4)(react@16.14.0): + resolution: {integrity: sha512-n4HIrDUE3QfN5xSTWJlRz5wzsnWggzRJhEDJZ6l23BWiwWasFW6QMGCnFWLwO93ei273LovylD5vZhI221tBtQ==} + hasBin: true + dependencies: + '@umijs/bundler-utils': 3.5.41(react-dom@16.14.0)(react-router@5.3.4)(react@16.14.0) + '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 + '@umijs/deps': 3.5.41 + '@umijs/types': 3.5.41(react-dom@16.14.0)(react-router@5.3.4)(react@16.14.0) + '@umijs/utils': 3.5.41 + jest-worker: 26.6.2 + node-libs-browser: 2.2.1 + normalize-url: 1.9.1 + postcss: 7.0.32 + postcss-flexbugs-fixes: 4.2.1 + postcss-loader: 3.0.0 + postcss-preset-env: 6.7.0 + postcss-safe-parser: 4.0.2 + terser: 5.14.2 + webpack-chain: 6.5.1 + transitivePeerDependencies: + - react + - react-dom + - react-router + + /@umijs/case-sensitive-paths-webpack-plugin@1.0.1: + resolution: {integrity: sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q==} + + /@umijs/core@3.5.41: + resolution: {integrity: sha512-DA10OuvEYaLNhug/mWlg6P9FMuH9xD8TP3VRKM5XXXdQwIja+QQaIg78l8Vk8FM/6ugXM6VUK/EK5AwGEQz6xw==} + dependencies: + '@umijs/ast': 3.5.41 + '@umijs/babel-preset-umi': 3.5.41 + '@umijs/deps': 3.5.41 + '@umijs/utils': 3.5.41 + + /@umijs/deps@3.5.41: + resolution: {integrity: sha512-bMozsu97L0HJMoRtCevi81XvZ+nkJw2WMAlQuHnl5DsFYon9M+WljG88T/FX/x+lYfgdGY+fOuvcKWEazfA3SA==} + dependencies: + '@bloomberg/record-tuple-polyfill': 0.0.3 + chokidar: 3.5.1 + clipboardy: 2.3.0 + esbuild: 0.12.15 + jest-worker: 24.9.0 + prettier: 2.2.1 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.0.1 + + /@umijs/fabric@2.14.1: + resolution: {integrity: sha512-fOyXcbViOB+/jW+g2rCiK9XjSZVn4OzFuMZpSCriCdR/KxhxLTokvJWFm3CzBEmg9vXfrBFQ4c/ykmqoVacHtw==} + hasBin: true + dependencies: + '@babel/core': 7.22.17 + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.17)(eslint@7.32.0) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-decorators': 7.22.15(@babel/core@7.22.17) + '@babel/preset-env': 7.22.15(@babel/core@7.22.17) + '@babel/preset-react': 7.22.15(@babel/core@7.22.17) + '@babel/preset-typescript': 7.22.15(@babel/core@7.22.17) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + chalk: 4.1.2 + eslint: 7.32.0 + eslint-config-prettier: 8.10.0(eslint@7.32.0) + eslint-formatter-pretty: 4.1.0 + eslint-plugin-babel: 5.3.1(eslint@7.32.0) + eslint-plugin-jest: 24.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@7.32.0)(typescript@4.9.5) + eslint-plugin-promise: 6.1.1(eslint@7.32.0) + eslint-plugin-react: 7.33.2(eslint@7.32.0) + eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0) + eslint-plugin-unicorn: 20.1.0(eslint@7.32.0) + fast-glob: 3.3.1 + os-locale: 5.0.0 + prettier: 2.8.8 + prettier-plugin-packagejson: 2.3.0(prettier@2.8.8) + prettier-plugin-two-style-order: 1.0.1(prettier@2.8.8) + stylelint: 13.13.1 + stylelint-config-css-modules: 2.3.0(stylelint@13.13.1) + stylelint-config-prettier: 8.0.2(stylelint@13.13.1) + stylelint-config-standard: 20.0.0(stylelint@13.13.1) + stylelint-declaration-block-no-ignored-properties: 2.7.0(stylelint@13.13.1) + typescript: 4.9.5 + transitivePeerDependencies: + - postcss-jsx + - postcss-markdown + - supports-color + dev: true + + /@umijs/mem-fs-editor@6.0.2: + resolution: {integrity: sha512-wGKHe4yyJc1CarRKAtvYrUc6zRf0jLANBN4HU+5ZkuSIR7xLDH51oHsZMjuxXqli6STe5ommYXnojXSXZ7NBRg==} + dependencies: + commondir: 1.0.1 + deep-extend: 0.6.0 + ejs: 2.7.4 + glob: 7.2.3 + globby: 10.0.2 + isbinaryfile: 4.0.10 + mkdirp: 1.0.4 + multimatch: 4.0.0 + rimraf: 3.0.2 + slash2: 2.0.0 + through2: 3.0.2 + vinyl: 2.2.1 + dev: true + + /@umijs/plugin-access@2.4.3(@umijs/plugin-initial-state@2.4.0)(@umijs/plugin-model@2.6.2)(umi@3.5.41): + resolution: {integrity: sha512-6FON4aHzVFs/vtFK5Sdnw+FBolfoYi8wV8V9Q8x2T19NwjZtjXSPjt0gtrG4jdx4LRsSV2DKLaMGoJYbNr94aA==} + peerDependencies: + '@umijs/plugin-initial-state': 2.x + '@umijs/plugin-model': 2.x + umi: 3.x + dependencies: + '@umijs/plugin-initial-state': 2.4.0(umi@3.5.41) + '@umijs/plugin-model': 2.6.2(umi@3.5.41) + umi: 3.5.41(react-router@5.3.4) + dev: true + + /@umijs/plugin-analytics@0.2.2(umi@3.5.41): + resolution: {integrity: sha512-dVDzUfgIdEwdCC6a5IsMYpIPI+bEZjBEqIhAvw9dic6Vk77w9RxQxyRfW11dDmdXLAwWphp22NntQNt1ejZPtg==} + peerDependencies: + umi: 3.x + dependencies: + umi: 3.5.41(react-router@5.3.4) + dev: true + + /@umijs/plugin-analytics@0.2.3(umi@3.5.41): + resolution: {integrity: sha512-6Fj+EOzd2vXe1YHjK1aqhHlITWBXcnhPd6pxAEjeGu3vAxDcfp1yM3PoRr//baBXk8CYF2krWDQGYy+OlRXM4A==} + peerDependencies: + umi: 3.x + dependencies: + umi: 3.5.41(react-router@5.3.4) + dev: true + + /@umijs/plugin-antd@0.13.0(react-dom@17.0.2)(react@17.0.2)(umi@3.5.41): + resolution: {integrity: sha512-7tooYtOylVatrzMWCJtk8JFQL90i94OD0FgZYpKBbM7keThH8prYkSkDJFIDkuGfZ6pl6BJT8ESnYLxf2OiQUw==} + peerDependencies: + umi: 3.x + dependencies: + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + antd-mobile: 2.3.4(react-dom@17.0.2)(react@17.0.2) + semver: 7.5.4 + umi: 3.5.41(react-router@5.3.4) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /@umijs/plugin-block-devtool@1.3.0(umi@3.5.41): + resolution: {integrity: sha512-BPoO3nJowx1sHUixO4FBhQUtAkcepPbHA9OGFtR2cXrxEyxUmUDaDHK+cQdbxQUj8lzeylfdy/OufLhaP3MM+Q==} + peerDependencies: + umi: 3.x + dependencies: + umi: 3.5.41(react-router@5.3.4) + uppercamelcase: 3.0.0 + dev: true + + /@umijs/plugin-blocks@2.2.2(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2)(umi@3.5.41): + resolution: {integrity: sha512-56lVfx4eJzQbxt620qzXADcemzHB5XjJuYxRNKorIdqXwA8+nWXQ+PzUOdWUzJnwNkFOVJbnXsUak5n8A8xsjw==} + peerDependencies: + umi: 3.x + dependencies: + '@umijs/block-sdk': 2.3.0(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2) + umi: 3.5.41(react-router@5.3.4) + transitivePeerDependencies: + - encoding + - postcss-jsx + - postcss-markdown + - react + - react-dom + - react-router + - supports-color + dev: true + + /@umijs/plugin-crossorigin@1.2.1(umi@3.5.41): + resolution: {integrity: sha512-4oXNFBLOCH1FHTgFi7EDmlcjjYMthOQlrTT+mSbNeMzvl0P/WKldSJsYAUXUTg+I7vlbb5bNby4dpHKK37JcbQ==} + peerDependencies: + umi: 3.x + dependencies: + umi: 3.5.41(react-router@5.3.4) + dev: true + + /@umijs/plugin-dva@0.13.0(dva-core@1.6.0-beta.7)(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2)(redbox-react@1.6.0)(umi@3.5.41): + resolution: {integrity: sha512-cpGq8vzN8AmyWxexWLQ+WGqfT0WMCiryvU5EcNGbx1/Ub9aICUfPBpB46cxJrxjDCjUzuVslRNb2pdgI0xXUXg==} + peerDependencies: + umi: 3.x + dependencies: + babel-plugin-dva-hmr: 0.4.2(redbox-react@1.6.0) + dva: 2.6.0-beta.23(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2) + dva-immer: 0.5.2(dva@2.6.0-beta.23) + dva-loading: 3.0.24(dva-core@1.6.0-beta.7) + umi: 3.5.41(react-router@5.3.4) + transitivePeerDependencies: + - dva-core + - react + - react-dom + - react-native + - react-router + - redbox-react + dev: true + + /@umijs/plugin-esbuild@1.4.2(umi@3.5.41)(webpack@5.88.2): + resolution: {integrity: sha512-K/0nZ1wNFg11xF3zx5E8jQQkY4d6SDNNhB16Ngp77i5ZUexWyfiRC+StN0KpYOAIorajNTMxHRnthRFV3dZbPA==} + peerDependencies: + umi: 3.x + dependencies: + esbuild-loader: 2.9.2(webpack@5.88.2) + umi: 3.5.41(react-router@5.3.4) + transitivePeerDependencies: + - webpack + dev: true + + /@umijs/plugin-helmet@1.1.3(react@17.0.2)(umi@3.5.41): + resolution: {integrity: sha512-X4GRFlvOb8DxMDm1vExfpWOvxl6bp0oZz114DyhwnMSriJ8RcHAigTjtVJHYxJpKv7P6KayN3n13J4w/XZGWMg==} + peerDependencies: + umi: 3.x + dependencies: + '@types/react-helmet': 6.1.6 + react-helmet: 6.1.0(react@17.0.2) + umi: 3.5.41(react-router@5.3.4) + transitivePeerDependencies: + - react + dev: true + + /@umijs/plugin-initial-state@2.4.0(umi@3.5.41): + resolution: {integrity: sha512-UHH5fTL9skm4771R3xvWCrjd5xiQ7OdJ83G0P1YZLhuNbh0cAFVT8SPTU8dA9o8TTAZ66IEq7axhWl1cGxVsXw==} + peerDependencies: + umi: 3.x + dependencies: + umi: 3.5.41(react-router@5.3.4) + dev: true + + /@umijs/plugin-layout@0.18.1(@ant-design/icons@4.8.1)(@ant-design/pro-layout@6.38.22)(@umijs/plugin-initial-state@2.4.0)(@umijs/plugin-locale@0.15.2)(@umijs/plugin-model@2.6.2)(react-dom@17.0.2)(react@17.0.2)(umi@3.5.41): + resolution: {integrity: sha512-15YTcFpic0v15nFzlg6G8nvMCveBtcBL77Wr9wXYJdgR0iU7dnO7T4OqbLwgEc1uHxtGhTVibi6nSGelX56zCg==} + peerDependencies: + '@ant-design/icons': ^4.0.0 + '@ant-design/pro-layout': ^6.0.0 + '@umijs/plugin-initial-state': 2.x + '@umijs/plugin-locale': 0.x + '@umijs/plugin-model': 2.x + umi: 3.x + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@ant-design/pro-layout': 6.38.22(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) + '@umijs/plugin-initial-state': 2.4.0(umi@3.5.41) + '@umijs/plugin-locale': 0.15.2(react-dom@17.0.2)(react@17.0.2)(umi@3.5.41) + '@umijs/plugin-model': 2.6.2(umi@3.5.41) + '@umijs/route-utils': 2.2.2 + antd: 4.24.14(react-dom@17.0.2)(react@17.0.2) + lodash: 4.17.21 + path-to-regexp: 1.8.0 + umi: 3.5.41(react-router@5.3.4) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /@umijs/plugin-locale@0.15.2(react-dom@17.0.2)(react@17.0.2)(umi@3.5.41): + resolution: {integrity: sha512-/m3ik0NKbE/PHFPKPqSBEwGi5RUB6Dz2T7jepDXhU8ycV0zUPGbDbChUx1r/3t5zveZIND1s/7A49Apb+ujUmg==} + peerDependencies: + umi: 3.x + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@formatjs/intl-pluralrules': 1.5.9 + '@formatjs/intl-relativetimeformat': 4.5.16 + intl: 1.2.5 + moment: 2.29.4 + react-intl: 3.12.1(react@17.0.2) + umi: 3.5.41(react-router@5.3.4) + warning: 4.0.3 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /@umijs/plugin-model@2.6.2(umi@3.5.41): + resolution: {integrity: sha512-MKLAgYIoBkciavxTqJY6VOhvnNQv7jp+olNmXqqZ3I3WsLg7jo33NCOAA3ej103kmo9ZvD9R1aakl7e9WKsdAw==} + peerDependencies: + umi: 3.x + dependencies: + fast-deep-equal: 3.1.1 + umi: 3.5.41(react-router@5.3.4) + dev: true + + /@umijs/plugin-request@2.8.0(react@17.0.2)(umi@3.5.41): + resolution: {integrity: sha512-bwJg0rFbMZcizO+fHbSNz6X/U6suR84ciLIo9zLtRMuradx/yanMnz+ckh2dlZvTlGYrckkJwWgoSFxWlU8yyA==} + peerDependencies: + umi: 3.x + dependencies: + '@ahooksjs/use-request': 2.8.15(react@17.0.2) + umi: 3.5.41(react-router@5.3.4) + umi-request: 1.4.0 + transitivePeerDependencies: + - react + dev: true + + /@umijs/plugin-test@1.0.2(umi@3.5.41): + resolution: {integrity: sha512-EIV86Xmw/Cn8vRLXha+ct0PfY6gRRKov5lanvt1B2L5t6xAqnTd03AxmB7i1Go9vDcFxDBheuDf/nyGiT/xTFw==} + peerDependencies: + umi: 3.x + dependencies: + '@umijs/test': 3.5.41 + umi: 3.5.41(react-router@5.3.4) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@umijs/preset-ant-design-pro@1.3.3(react-dom@17.0.2)(react@17.0.2)(umi@3.5.41): + resolution: {integrity: sha512-BBQKI+lrynX7cpWHhCgo+56GFBn/fbbgnjglstfQyKN+Ol/VtEhMMWeNz57/OfLUdeBpI/KOnyq8lJMVr2Czug==} + peerDependencies: + umi: 3.x + dependencies: + '@umijs/plugin-block-devtool': 1.3.0(umi@3.5.41) + umi: 3.5.41(react-router@5.3.4) + umi-plugin-antd-icon-config: 2.0.4(react-dom@17.0.2)(react@17.0.2)(umi@3.5.41) + umi-plugin-pro-block: 2.0.3(umi@3.5.41) + transitivePeerDependencies: + - react + - react-dom + - supports-color + dev: true + + /@umijs/preset-built-in@3.5.41(react-dom@16.14.0)(react@16.14.0): + resolution: {integrity: sha512-YoUeiaoiG6Kv/9QkVYj4wUXP7dqdxOt95H9F7e8QaukH6le9CvvRyRn+NSLGk3R7Owv4jdkMBujwFzj1/85O3A==} + peerDependencies: + react: 16.x || 17.x + dependencies: + '@types/react-router-config': 5.0.2 + '@umijs/babel-preset-umi': 3.5.41 + '@umijs/bundler-webpack': 3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0) + '@umijs/core': 3.5.41 + '@umijs/deps': 3.5.41 + '@umijs/renderer-mpa': 3.5.41(react-dom@16.14.0)(react@16.14.0) + '@umijs/renderer-react': 3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0) + '@umijs/runtime': 3.5.41(react@16.14.0) + '@umijs/server': 3.5.41 + '@umijs/types': 3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0) + '@umijs/utils': 3.5.41 + ansi-html: 0.0.9 + core-js: 3.6.5 + core-js-pure: 3.32.2 + error-stack-parser: 2.1.4 + es-module-lexer: 0.7.1 + es5-imcompatible-versions: 0.1.86 + history-with-query: 4.10.4 + html-entities: 2.4.0 + mime: 1.4.1 + react: 16.14.0 + react-refresh: 0.10.0 + react-router: 5.2.0(react@16.14.0) + react-router-config: 5.1.1(react-router@5.2.0)(react@16.14.0) + react-router-dom: 5.2.0(react@16.14.0) + regenerator-runtime: 0.13.5 + schema-utils: 3.3.0 + transitivePeerDependencies: + - react-dom + + /@umijs/preset-dumi@1.1.53(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2)(typescript@4.9.5)(umi@3.5.41): + resolution: {integrity: sha512-Vdumcuc/g87pclB7JuqFsfDEeCwxao27VZAV2fBZcwrK+4PQ3imnVfSvQxZjggv0ISw5yfdYgQtDf7adpuUXbA==} + peerDependencies: + umi: ^3.0.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/generator': 7.18.6 + '@babel/plugin-transform-modules-commonjs': 7.18.6(@babel/core@7.18.6) + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.6 + '@mapbox/hast-util-to-jsx': 1.0.0 + '@umijs/babel-preset-umi': 3.5.41 + '@umijs/core': 3.5.41 + '@umijs/plugin-analytics': 0.2.3(umi@3.5.41) + '@umijs/runtime': 3.5.41(react@17.0.2) + '@umijs/types': 3.5.41(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2) + '@umijs/utils': 3.5.41 + codesandbox: 2.2.3 + copy-text-to-clipboard: 2.2.0 + deepmerge: 4.3.1 + dumi-assets-types: 1.0.1 + dumi-theme-default: 1.1.24(@umijs/preset-dumi@1.1.53)(react-dom@17.0.2)(react@17.0.2) + enhanced-resolve: 4.5.0 + github-slugger: 1.5.0 + hast-util-has-property: 1.0.4 + hast-util-is-element: 1.1.0 + hast-util-raw: 6.1.0 + hast-util-to-html: 7.1.3 + hast-util-to-string: 1.0.4 + hosted-git-info: 3.0.8 + ignore: 5.2.4 + js-yaml: 3.14.1 + lodash.throttle: 4.1.1 + lz-string: 1.5.0 + react-docgen-typescript-dumi-tmp: 1.22.1-0(typescript@4.9.5) + rehype-autolink-headings: 4.0.0 + rehype-mathjax: 3.1.0 + rehype-remove-comments: 4.0.2 + rehype-stringify: 8.0.0 + remark-frontmatter: 3.0.0 + remark-gfm: 1.0.0 + remark-math: 4.0.0 + remark-parse: 9.0.0 + remark-rehype: 8.1.0 + remark-stringify: 9.0.1 + sitemap: 6.4.0 + slash2: 2.0.0 + terser: 5.19.4 + umi: 3.5.41(react-router@5.3.4) + unified: 8.4.2 + unist-util-visit: 2.0.3 + unist-util-visit-parents: 3.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - react + - react-dom + - react-router + - supports-color + - typescript + - utf-8-validate + dev: true + + /@umijs/preset-react@1.8.32(@ant-design/icons@4.8.1)(@ant-design/pro-layout@6.38.22)(dva-core@1.6.0-beta.7)(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2)(redbox-react@1.6.0)(umi@3.5.41): + resolution: {integrity: sha512-f/jJRxIRzRrZ040GMdBuV3byvtbx35oWymDT5A/q/e+QmjCrs6c9XCRktGInKIhZycqI/GuA6eLaxXIKvu6b9A==} + peerDependencies: + umi: 3.x + dependencies: + '@umijs/plugin-access': 2.4.3(@umijs/plugin-initial-state@2.4.0)(@umijs/plugin-model@2.6.2)(umi@3.5.41) + '@umijs/plugin-analytics': 0.2.2(umi@3.5.41) + '@umijs/plugin-antd': 0.13.0(react-dom@17.0.2)(react@17.0.2)(umi@3.5.41) + '@umijs/plugin-crossorigin': 1.2.1(umi@3.5.41) + '@umijs/plugin-dva': 0.13.0(dva-core@1.6.0-beta.7)(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2)(redbox-react@1.6.0)(umi@3.5.41) + '@umijs/plugin-helmet': 1.1.3(react@17.0.2)(umi@3.5.41) + '@umijs/plugin-initial-state': 2.4.0(umi@3.5.41) + '@umijs/plugin-layout': 0.18.1(@ant-design/icons@4.8.1)(@ant-design/pro-layout@6.38.22)(@umijs/plugin-initial-state@2.4.0)(@umijs/plugin-locale@0.15.2)(@umijs/plugin-model@2.6.2)(react-dom@17.0.2)(react@17.0.2)(umi@3.5.41) + '@umijs/plugin-locale': 0.15.2(react-dom@17.0.2)(react@17.0.2)(umi@3.5.41) + '@umijs/plugin-model': 2.6.2(umi@3.5.41) + '@umijs/plugin-request': 2.8.0(react@17.0.2)(umi@3.5.41) + '@umijs/plugin-test': 1.0.2(umi@3.5.41) + umi: 3.5.41(react-router@5.3.4) + transitivePeerDependencies: + - '@ant-design/icons' + - '@ant-design/pro-layout' + - bufferutil + - canvas + - dva-core + - react + - react-dom + - react-native + - react-router + - redbox-react + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@umijs/renderer-mpa@3.5.41(react-dom@16.14.0)(react@16.14.0): + resolution: {integrity: sha512-SUAlBZwUXVJdj5lBQ0Kf2nH3/mkyqZEkgZw0laLn2sNeVfe0bpSKjTvYv3sGMZ9Jg+L61g8TNwGO4Y1j8x5rkw==} + peerDependencies: + react: 16.x || 17.x + react-dom: 16.x || 17.x + dependencies: + '@types/react': 16.14.46 + '@types/react-dom': 16.9.19 + '@umijs/runtime': 3.5.41(react@16.14.0) + react: 16.14.0 + react-dom: 16.14.0(react@16.14.0) + + /@umijs/renderer-react@3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0): + resolution: {integrity: sha512-DmExaziU84uFXv09gYXpFk/tHB+mjINUD8YmYULjbQ+QQA9so2zkxNSv9gYy5hXNepheUMd+uriV/qUB6HNBVg==} + peerDependencies: + react: 16.x || 17.x + react-dom: 16.x || 17.x + dependencies: + '@types/react': 16.14.46 + '@types/react-dom': 16.9.19 + '@types/react-router-config': 5.0.7 + '@umijs/runtime': 3.5.41(react@16.14.0) + react: 16.14.0 + react-dom: 16.14.0(react@16.14.0) + react-router-config: 5.1.1(react-router@5.2.0)(react@16.14.0) + transitivePeerDependencies: + - react-router + + /@umijs/renderer-react@3.5.41(react-dom@16.14.0)(react-router@5.3.4)(react@16.14.0): + resolution: {integrity: sha512-DmExaziU84uFXv09gYXpFk/tHB+mjINUD8YmYULjbQ+QQA9so2zkxNSv9gYy5hXNepheUMd+uriV/qUB6HNBVg==} + peerDependencies: + react: 16.x || 17.x + react-dom: 16.x || 17.x + dependencies: + '@types/react': 16.14.46 + '@types/react-dom': 16.9.19 + '@types/react-router-config': 5.0.7 + '@umijs/runtime': 3.5.41(react@16.14.0) + react: 16.14.0 + react-dom: 16.14.0(react@16.14.0) + react-router-config: 5.1.1(react-router@5.3.4)(react@16.14.0) + transitivePeerDependencies: + - react-router + + /@umijs/renderer-react@3.5.41(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2): + resolution: {integrity: sha512-DmExaziU84uFXv09gYXpFk/tHB+mjINUD8YmYULjbQ+QQA9so2zkxNSv9gYy5hXNepheUMd+uriV/qUB6HNBVg==} + peerDependencies: + react: 16.x || 17.x + react-dom: 16.x || 17.x + dependencies: + '@types/react': 16.14.46 + '@types/react-dom': 16.9.19 + '@types/react-router-config': 5.0.7 + '@umijs/runtime': 3.5.41(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-router-config: 5.1.1(react-router@5.3.4)(react@17.0.2) + transitivePeerDependencies: + - react-router + dev: true + + /@umijs/route-utils@1.0.37: + resolution: {integrity: sha512-RQYMYd0w3mKWlCvhUqYN2/dcCD8LxQWsr46DXpaLtqe2Y/8662qXA3E6moaFpyfokKJK6UHt2VxNGhkKPNJIgQ==} + dependencies: + '@qixian.cs/path-to-regexp': 6.1.0 + fast-deep-equal: 3.1.3 + lodash.isequal: 4.5.0 + memoize-one: 5.2.1 + dev: false + + /@umijs/route-utils@2.2.2: + resolution: {integrity: sha512-cMk6qizy0pfpiwpVCvNQB0BKBUJEH33pDv5q5k2tSleSDw2abkJkTu2Kd5hKzoESLuFK43oGeOfcplZqm2bRxw==} + dependencies: + '@qixian.cs/path-to-regexp': 6.1.0 + fast-deep-equal: 3.1.3 + lodash.isequal: 4.5.0 + memoize-one: 5.2.1 + + /@umijs/route-utils@4.0.1: + resolution: {integrity: sha512-+1ixf1BTOLuH+ORb4x8vYMPeIt38n9q0fJDwhv9nSxrV46mxbLF0nmELIo9CKQB2gHfuC4+hww6xejJ6VYnBHQ==} + dev: false + + /@umijs/runtime@3.5.41(react@16.14.0): + resolution: {integrity: sha512-ZZJm30Kl7JP3/uM0J7HnIvt37OGSPNuC81+MBT729e8+nXiabbs07pbHyTS2DddVZsaevi5PhDu6YcHPcLWDhA==} + peerDependencies: + react: 16.x || 17.x + dependencies: + '@types/react-router': 5.1.12 + '@types/react-router-dom': 5.1.7 + history-with-query: 4.10.4 + react: 16.14.0 + react-router: 5.2.0(react@16.14.0) + react-router-dom: 5.2.0(react@16.14.0) + use-subscription: 1.5.1(react@16.14.0) + + /@umijs/runtime@3.5.41(react@17.0.2): + resolution: {integrity: sha512-ZZJm30Kl7JP3/uM0J7HnIvt37OGSPNuC81+MBT729e8+nXiabbs07pbHyTS2DddVZsaevi5PhDu6YcHPcLWDhA==} + peerDependencies: + react: 16.x || 17.x + dependencies: + '@types/react-router': 5.1.12 + '@types/react-router-dom': 5.1.7 + history-with-query: 4.10.4 + react: 17.0.2 + react-router: 5.2.0(react@17.0.2) + react-router-dom: 5.2.0(react@17.0.2) + use-subscription: 1.5.1(react@17.0.2) + dev: true + + /@umijs/server@3.5.41: + resolution: {integrity: sha512-DL4tOGIsP/UHu6++T+vXJdaMd7BXvGo+Vjk3JW4V/gyJhhDSfCHalnv3rEGygxpaWa4nsJdzCaVzKnlRSGAzuw==} + dependencies: + '@umijs/core': 3.5.41 + '@umijs/deps': 3.5.41 + '@umijs/utils': 3.5.41 + + /@umijs/ssr-darkreader@4.9.45: + resolution: {integrity: sha512-XlcwzSYQ/SRZpHdwIyMDS4FOGX5kP4U/2g2mykyn/iPQTK4xTiQAyBu6UnnDnn7d5P8s7Atzh1C7H0ETNOypJg==} + + /@umijs/test@3.5.41: + resolution: {integrity: sha512-0Y2XuGwlFBd4Un3AbColgnt8GejYVN2dfYdzkdo6Tsn0BX2iFTtJiF1L1SwO4YqHob3oI/CMzpEcKCNkC041QQ==} + hasBin: true + dependencies: + '@babel/core': 7.18.6 + '@umijs/babel-preset-umi': 3.5.41 + '@umijs/utils': 3.5.41 + babel-jest: 26.6.3(@babel/core@7.18.6) + core-js: 3.8.2 + identity-obj-proxy: 3.0.0 + jest: 26.6.3 + jest-cli: 26.6.3 + regenerator-runtime: 0.13.11 + whatwg-fetch: 3.6.19 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@umijs/types@3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0): + resolution: {integrity: sha512-pxvLiQ99EL8Yu98F/ZMojG9ukDptC315cnxSnRYOdS34F57oiIgW0Zoi0TrKlA0pVIQxC2MXzyQwy+HfDmB23Q==} + dependencies: + '@umijs/babel-preset-umi': 3.5.41 + '@umijs/core': 3.5.41 + '@umijs/deps': 3.5.41 + '@umijs/renderer-react': 3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0) + '@umijs/server': 3.5.41 + '@umijs/utils': 3.5.41 + webpack-chain: 6.5.1 + transitivePeerDependencies: + - react + - react-dom + - react-router + + /@umijs/types@3.5.41(react-dom@16.14.0)(react-router@5.3.4)(react@16.14.0): + resolution: {integrity: sha512-pxvLiQ99EL8Yu98F/ZMojG9ukDptC315cnxSnRYOdS34F57oiIgW0Zoi0TrKlA0pVIQxC2MXzyQwy+HfDmB23Q==} + dependencies: + '@umijs/babel-preset-umi': 3.5.41 + '@umijs/core': 3.5.41 + '@umijs/deps': 3.5.41 + '@umijs/renderer-react': 3.5.41(react-dom@16.14.0)(react-router@5.3.4)(react@16.14.0) + '@umijs/server': 3.5.41 + '@umijs/utils': 3.5.41 + webpack-chain: 6.5.1 + transitivePeerDependencies: + - react + - react-dom + - react-router + + /@umijs/types@3.5.41(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2): + resolution: {integrity: sha512-pxvLiQ99EL8Yu98F/ZMojG9ukDptC315cnxSnRYOdS34F57oiIgW0Zoi0TrKlA0pVIQxC2MXzyQwy+HfDmB23Q==} + dependencies: + '@umijs/babel-preset-umi': 3.5.41 + '@umijs/core': 3.5.41 + '@umijs/deps': 3.5.41 + '@umijs/renderer-react': 3.5.41(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2) + '@umijs/server': 3.5.41 + '@umijs/utils': 3.5.41 + webpack-chain: 6.5.1 + transitivePeerDependencies: + - react + - react-dom + - react-router + dev: true + + /@umijs/use-params@1.0.9(react@17.0.2): + resolution: {integrity: sha512-QlN0RJSBVQBwLRNxbxjQ5qzqYIGn+K7USppMoIOVlf7fxXHsnQZ2bEsa6Pm74bt6DVQxpUE8HqvdStn6Y9FV1w==} + peerDependencies: + react: '*' + dependencies: + react: 17.0.2 + + /@umijs/utils@3.5.41: + resolution: {integrity: sha512-htBGGUfVUlEv5j9hUZ0tmVa9Jj1Z3vhFsUNKl2Luw7hWqTv86prWKPEcG2FWOjTTmE8iSK6r4dHmBSlSC5P6Tw==} + dependencies: + '@umijs/babel-preset-umi': 3.5.41 + '@umijs/deps': 3.5.41 + + /@umijs/yorkie@2.0.5: + resolution: {integrity: sha512-vgu4U7/pvG73vY0GGQftXht2t6YAecS8P1cUHIj9VfUHzXIKuRXiaewxxasYgr3gBNrY3GpGiVnmJsHDG6Q3+g==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + execa: 0.8.0 + is-ci: 1.2.1 + normalize-path: 1.0.0 + strip-indent: 2.0.0 + dev: true + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + 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 + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + 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 + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + 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 + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@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@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + 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 + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + + /@webgpu/glslang@0.0.15: + resolution: {integrity: sha512-niT+Prh3Aff8Uf1MVBVUsaNjFj9rJAKDXuoHIKiQbB+6IUP/3J3JIhBNyZ7lDhytvXxw6ppgnwKZdDJ08UMj4Q==} + dev: false + + /@webgpu/types@0.0.31: + resolution: {integrity: sha512-cvvCMSZBT4VsRNtt0lI6XQqvOIIWw6+NRUtnPUMDVDgsI4pCZColz3qzF5QcP9wIYOHEc3jssIBse8UWONKhlQ==} + dev: false + + /@xobotyi/scrollbar-width@1.9.5: + resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} + dev: false + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + dev: true + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: true + + /ace-builds@1.24.2: + resolution: {integrity: sha512-zjvJiEw05BADxPMq5gN/Vgc9FgyiiDHpdy676Af1nJk8DF4ipgf0cNmV3wy8JHeQ6vezypEZV6pHQu9avO+WtQ==} + dev: false + + /acorn-globals@6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + dev: true + + /acorn-import-assertions@1.9.0(acorn@8.10.0): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.10.0 + + /acorn-jsx@5.3.2(acorn@7.4.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: false + + /acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + + /add-dom-event-listener@1.1.0: + resolution: {integrity: sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==} + dependencies: + object-assign: 4.1.1 + + /address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + /adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.2.11 + dev: true + + /agent-base@4.3.0: + resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} + engines: {node: '>= 4.0.0'} + dependencies: + es6-promisify: 5.0.0 + dev: true + + /agent-base@5.1.1: + resolution: {integrity: sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==} + engines: {node: '>= 6.0.0'} + dev: true + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /agentkeepalive@3.5.2: + resolution: {integrity: sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==} + engines: {node: '>= 4.0.0'} + dependencies: + humanize-ms: 1.2.1 + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ahooks-v3-count@1.0.0: + resolution: {integrity: sha512-V7uUvAwnimu6eh/PED4mCDjE7tokeZQLKlxg9lCTMPhN+NjsSbtdacByVlR1oluXQzD3MOw55wylDmQo4+S9ZQ==} + dev: false + + /ahooks@3.7.8(react@17.0.2): + resolution: {integrity: sha512-e/NMlQWoCjaUtncNFIZk3FG1ImSkV/JhScQSkTqnftakRwdfZWSw6zzoWSG9OMYqPNs2MguDYBUFFC6THelWXA==} + engines: {node: '>=8.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.22.15 + '@types/js-cookie': 2.2.7 + ahooks-v3-count: 1.0.0 + dayjs: 1.11.9 + intersection-observer: 0.12.2 + js-cookie: 2.2.1 + lodash: 4.17.21 + react: 17.0.2 + resize-observer-polyfill: 1.5.1 + screenfull: 5.2.0 + tslib: 2.6.2 + dev: false + + /ajv-errors@1.0.1(ajv@6.12.6): + resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} + peerDependencies: + ajv: '>=5.0.0' + dependencies: + ajv: 6.12.6 + + /ajv-formats@2.1.1(ajv@8.12.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.12.0 + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + + /ajv-keywords@5.1.0(ajv@8.12.0): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.12.0 + fast-deep-equal: 3.1.3 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + /align-text@0.1.4: + resolution: {integrity: sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + longest: 1.0.1 + repeat-string: 1.6.1 + dev: false + + /amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + dev: false + + /ansi-align@2.0.0: + resolution: {integrity: sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==} + dependencies: + string-width: 2.1.1 + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + /ansi-escapes@3.2.0: + resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} + engines: {node: '>=4'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: true + + /ansi-html@0.0.9: + resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==} + engines: {'0': node >= 0.8.0} + hasBin: true + + /ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: false + + /ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + dev: true + + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: false + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /antd-mobile@2.3.4(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-Uw02Ghc+DPzaQceJQ+5p1ZnQFafvILA0chTTen7m7c89Uzbw6Ny3zsVZDE1gfteNEIsL4JpPe0I/+aI3Q/nPAA==} + dependencies: + array-tree-filter: 2.1.0 + babel-runtime: 6.26.0 + classnames: 2.3.2 + normalize.css: 7.0.0 + rc-checkbox: 2.0.3 + rc-collapse: 1.9.3(react-dom@17.0.2)(react@17.0.2) + rc-slider: 8.2.0(react-dom@17.0.2)(react@17.0.2) + rc-swipeout: 2.0.11 + rmc-calendar: 1.1.4(react-dom@17.0.2)(react@17.0.2) + rmc-cascader: 5.0.3(react-dom@17.0.2)(react@17.0.2) + rmc-date-picker: 6.0.10(react-dom@17.0.2)(react@17.0.2) + rmc-dialog: 1.1.1(react-dom@17.0.2)(react@17.0.2) + rmc-drawer: 0.4.11 + rmc-feedback: 2.0.0 + rmc-input-number: 1.0.5 + rmc-list-view: 0.11.5 + rmc-notification: 1.0.0(react-dom@17.0.2)(react@17.0.2) + rmc-nuka-carousel: 3.0.1 + rmc-picker: 5.0.10(react-dom@17.0.2)(react@17.0.2) + rmc-pull-to-refresh: 1.0.13 + rmc-steps: 1.0.1 + rmc-tabs: 1.2.29 + rmc-tooltip: 1.0.1(react-dom@17.0.2)(react@17.0.2) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /antd@4.24.14(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-hY/MPm7XI0G+9MvjhTlbDkA2sf8oHVbhtrT0XRstlm9+fXYGNXz8oEh3d5qiA3/tY5NL2Kh2tF7Guh01hwWJdg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + '@ant-design/react-slick': 1.0.2(react@17.0.2) + '@babel/runtime': 7.22.15 + '@ctrl/tinycolor': 3.6.1 + classnames: 2.3.2 + copy-to-clipboard: 3.3.3 + lodash: 4.17.21 + moment: 2.29.4 + rc-cascader: 3.7.3(react-dom@17.0.2)(react@17.0.2) + rc-checkbox: 3.0.1(react-dom@17.0.2)(react@17.0.2) + rc-collapse: 3.4.2(react-dom@17.0.2)(react@17.0.2) + rc-dialog: 9.0.2(react-dom@17.0.2)(react@17.0.2) + rc-drawer: 6.3.0(react-dom@17.0.2)(react@17.0.2) + rc-dropdown: 4.0.1(react-dom@17.0.2)(react@17.0.2) + rc-field-form: 1.34.2(react-dom@17.0.2)(react@17.0.2) + rc-image: 5.13.0(react-dom@17.0.2)(react@17.0.2) + rc-input: 0.1.4(react-dom@17.0.2)(react@17.0.2) + rc-input-number: 7.3.11(react-dom@17.0.2)(react@17.0.2) + rc-mentions: 1.13.1(react-dom@17.0.2)(react@17.0.2) + rc-menu: 9.8.4(react-dom@17.0.2)(react@17.0.2) + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-notification: 4.6.1(react-dom@17.0.2)(react@17.0.2) + rc-pagination: 3.2.0(react-dom@17.0.2)(react@17.0.2) + rc-picker: 2.7.6(react-dom@17.0.2)(react@17.0.2) + rc-progress: 3.4.2(react-dom@17.0.2)(react@17.0.2) + rc-rate: 2.9.3(react-dom@17.0.2)(react@17.0.2) + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-segmented: 2.1.2(react-dom@17.0.2)(react@17.0.2) + rc-select: 14.1.18(react-dom@17.0.2)(react@17.0.2) + rc-slider: 10.0.1(react-dom@17.0.2)(react@17.0.2) + rc-steps: 5.0.0(react-dom@17.0.2)(react@17.0.2) + rc-switch: 3.2.2(react-dom@17.0.2)(react@17.0.2) + rc-table: 7.26.0(react-dom@17.0.2)(react@17.0.2) + rc-tabs: 12.5.10(react-dom@17.0.2)(react@17.0.2) + rc-textarea: 0.4.7(react-dom@17.0.2)(react@17.0.2) + rc-tooltip: 5.2.2(react-dom@17.0.2)(react@17.0.2) + rc-tree: 5.7.10(react-dom@17.0.2)(react@17.0.2) + rc-tree-select: 5.5.5(react-dom@17.0.2)(react@17.0.2) + rc-trigger: 5.3.4(react-dom@17.0.2)(react@17.0.2) + rc-upload: 4.3.4(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + scroll-into-view-if-needed: 2.2.31 + + /antd@5.9.0(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-YgLGtz+GbzrQws+R7siXolUN89ERH2Kbcu8Bz98VY4fwwMSDKKhbCGkIjw9mnIhcrXpHT+FXwrqjAV3j9eakSA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/colors': 7.0.0 + '@ant-design/cssinjs': 1.17.0(react-dom@18.2.0)(react@18.2.0) + '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) + '@ant-design/react-slick': 1.0.2(react@18.2.0) + '@babel/runtime': 7.22.15 + '@ctrl/tinycolor': 3.6.1 + '@rc-component/color-picker': 1.4.1(react-dom@18.2.0)(react@18.2.0) + '@rc-component/mutate-observer': 1.1.0(react-dom@18.2.0)(react@18.2.0) + '@rc-component/tour': 1.10.0(react-dom@18.2.0)(react@18.2.0) + '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) + '@types/jsdom': 21.1.2 + classnames: 2.3.2 + copy-to-clipboard: 3.3.3 + dayjs: 1.11.9 + qrcode.react: 3.1.0(react@18.2.0) + rc-cascader: 3.16.0(react-dom@18.2.0)(react@18.2.0) + rc-checkbox: 3.1.0(react-dom@18.2.0)(react@18.2.0) + rc-collapse: 3.7.1(react-dom@18.2.0)(react@18.2.0) + rc-dialog: 9.2.0(react-dom@18.2.0)(react@18.2.0) + rc-drawer: 6.4.1(react-dom@18.2.0)(react@18.2.0) + rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) + rc-field-form: 1.38.0(react-dom@18.2.0)(react@18.2.0) + rc-image: 7.2.0(react-dom@18.2.0)(react@18.2.0) + rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) + rc-input-number: 8.0.4(react-dom@18.2.0)(react@18.2.0) + rc-mentions: 2.7.0(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.12.0(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-notification: 5.1.1(react-dom@18.2.0)(react@18.2.0) + rc-pagination: 3.6.1(react-dom@18.2.0)(react@18.2.0) + rc-picker: 3.13.2(dayjs@1.11.9)(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + rc-progress: 3.5.1(react-dom@18.2.0)(react@18.2.0) + rc-rate: 2.12.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-segmented: 2.2.2(react-dom@18.2.0)(react@18.2.0) + rc-select: 14.8.1(react-dom@18.2.0)(react@18.2.0) + rc-slider: 10.2.1(react-dom@18.2.0)(react@18.2.0) + rc-steps: 6.0.1(react-dom@18.2.0)(react@18.2.0) + rc-switch: 4.1.0(react-dom@18.2.0)(react@18.2.0) + rc-table: 7.33.4(react-dom@18.2.0)(react@18.2.0) + rc-tabs: 12.12.1(react-dom@18.2.0)(react@18.2.0) + rc-textarea: 1.3.4(react-dom@18.2.0)(react@18.2.0) + rc-tooltip: 6.0.1(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.10(react-dom@18.2.0)(react@18.2.0) + rc-tree-select: 5.12.1(react-dom@18.2.0)(react@18.2.0) + rc-upload: 4.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + scroll-into-view-if-needed: 3.0.10 + throttle-debounce: 5.0.0 + transitivePeerDependencies: + - date-fns + - luxon + - moment + dev: false + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /anymatch@2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /aproba@1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + dev: true + + /arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + dependencies: + deep-equal: 2.2.2 + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + + /array-differ@3.0.0: + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} + dev: true + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true + + /array-flatten@2.1.2: + resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} + dev: true + + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + is-string: 1.0.7 + + /array-tree-filter@2.1.0: + resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==} + + /array-union@1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + dependencies: + array-uniq: 1.0.3 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + /array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + + /array.prototype.reduce@1.0.6: + resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: true + + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + dev: true + + /as-number@1.0.0: + resolution: {integrity: sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg==} + dev: false + + /asap@1.0.0: + resolution: {integrity: sha512-Ej9qjcXY+8Tuy1cNqiwNMwFRXOy9UwgTeMA8LxreodygIPV48lx8PU1ecFxb5ZeU1DpMKxiq6vGLTxcitWZPbA==} + dev: true + + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + /asn1.js@5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + + /asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: true + + /assert@1.5.1: + resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} + dependencies: + object.assign: 4.1.4 + util: 0.10.4 + + /assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: true + + /ast-types-flow@0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + dev: true + + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + /async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + dev: true + + /async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + /async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + dependencies: + lodash: 4.17.21 + dev: true + + /async@3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + /atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: true + + /autoprefixer@10.4.15(postcss@8.4.29): + resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.10 + caniuse-lite: 1.0.30001534 + fraction.js: 4.3.6 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /autoprefixer@9.8.8: + resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} + hasBin: true + dependencies: + browserslist: 4.21.10 + caniuse-lite: 1.0.30001534 + normalize-range: 0.1.2 + num2fraction: 1.2.2 + picocolors: 0.2.1 + postcss: 7.0.39 + postcss-value-parser: 4.2.0 + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + /aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true + + /aws4@1.12.0: + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + dev: true + + /axe-core@4.8.1: + resolution: {integrity: sha512-9l850jDDPnKq48nbad8SiEelCv4OrUWrKab/cPj0GScVg6cb6NbCCt/Ulk26QEq5jP9NnGr04Bit1BHyV6r5CQ==} + engines: {node: '>=4'} + dev: true + + /axios@0.18.1: + resolution: {integrity: sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==} + deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410 + dependencies: + follow-redirects: 1.5.10 + is-buffer: 2.0.5 + transitivePeerDependencies: + - supports-color + dev: true + + /axios@1.4.0: + resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} + dependencies: + follow-redirects: 1.15.2 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + + /babel-jest@26.6.3(@babel/core@7.18.6): + resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} + engines: {node: '>= 10.14.2'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/babel__core': 7.20.1 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 26.6.2(@babel/core@7.18.6) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-jest@27.5.1(@babel/core@7.22.17): + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.22.17 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.1 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1(@babel/core@7.22.17) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-loader@8.3.0(@babel/core@7.22.17)(webpack@5.88.2): + resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.22.17 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.88.2 + dev: true + + /babel-plugin-dva-hmr@0.4.2(redbox-react@1.6.0): + resolution: {integrity: sha512-QP5W0IT9LDFgoqkXD0g7wn/FMn7zO562P8qys23twXri4i3E1SGOQ3z7jqcPrqzfTZHx+Ufr+cXy9oI6OLMYZg==} + peerDependencies: + redbox-react: 1.x + dependencies: + redbox-react: 1.6.0(react-dom@17.0.2)(react@17.0.2) + dev: true + + /babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + dependencies: + object.assign: 4.1.4 + dev: true + + /babel-plugin-emotion@10.2.2: + resolution: {integrity: sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==} + dependencies: + '@babel/helper-module-imports': 7.22.15 + '@emotion/hash': 0.8.0 + '@emotion/memoize': 0.7.4 + '@emotion/serialize': 0.11.16 + babel-plugin-macros: 2.8.0 + babel-plugin-syntax-jsx: 6.18.0 + convert-source-map: 1.9.0 + escape-string-regexp: 1.0.5 + find-root: 1.1.0 + source-map: 0.5.7 + dev: false + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@26.6.2: + resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.22.17 + '@types/babel__core': 7.20.1 + '@types/babel__traverse': 7.20.1 + dev: true + + /babel-plugin-jest-hoist@27.5.1: + resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.22.17 + '@types/babel__core': 7.20.1 + '@types/babel__traverse': 7.20.1 + dev: true + + /babel-plugin-macros@2.8.0: + resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} + dependencies: + '@babel/runtime': 7.22.15 + cosmiconfig: 6.0.0 + resolve: 1.22.4 + dev: false + + /babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.22.15 + cosmiconfig: 7.1.0 + resolve: 1.22.4 + dev: true + + /babel-plugin-named-asset-import@0.3.8(@babel/core@7.22.17): + resolution: {integrity: sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==} + peerDependencies: + '@babel/core': ^7.1.0 + dependencies: + '@babel/core': 7.22.17 + dev: true + + /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.17): + resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.17 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.17) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.17): + resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.17) + core-js-compat: 3.32.2 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.17): + resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.17) + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-syntax-jsx@6.18.0: + resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} + dev: false + + /babel-plugin-transform-react-remove-prop-types@0.4.24: + resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.18.6): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.18.6) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.18.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.18.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.18.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.18.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.18.6) + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.17): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.17) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.17) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.17) + dev: true + + /babel-preset-jest@26.6.2(@babel/core@7.18.6): + resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} + engines: {node: '>= 10.14.2'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + babel-plugin-jest-hoist: 26.6.2 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.18.6) + dev: true + + /babel-preset-jest@27.5.1(@babel/core@7.22.17): + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.17) + dev: true + + /babel-preset-react-app@10.0.1: + resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} + dependencies: + '@babel/core': 7.22.17 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-decorators': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.17) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.22.17) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-runtime': 7.22.15(@babel/core@7.22.17) + '@babel/preset-env': 7.22.15(@babel/core@7.22.17) + '@babel/preset-react': 7.22.15(@babel/core@7.22.17) + '@babel/preset-typescript': 7.22.15(@babel/core@7.22.17) + '@babel/runtime': 7.22.15 + babel-plugin-macros: 3.1.0 + babel-plugin-transform-react-remove-prop-types: 0.4.24 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-runtime@6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + dev: true + + /babel-types@6.26.0: + resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} + dependencies: + babel-runtime: 6.26.0 + esutils: 2.0.3 + lodash: 4.17.21 + to-fast-properties: 1.0.3 + dev: true + + /bail@1.0.5: + resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + /base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: true + + /batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: true + + /bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: true + + /bfj@7.1.0: + resolution: {integrity: sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==} + engines: {node: '>= 8.0.0'} + dependencies: + bluebird: 3.7.2 + check-types: 11.2.3 + hoopy: 0.1.4 + jsonpath: 1.1.1 + tryer: 1.0.1 + dev: true + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + /binaryextensions@2.3.0: + resolution: {integrity: sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==} + engines: {node: '>=0.8'} + dev: true + + /bl@1.2.3: + resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} + dependencies: + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + dev: true + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /blink-diff@1.0.13: + resolution: {integrity: sha512-2hIEnGq8wruXfje9GvDV41VXo+4YdjrjL5ZMlVJT3Wi5k1jjz20fCTlVejSXoERirhEVsFYz9NmgdUYgQ41Giw==} + hasBin: true + dependencies: + pngjs-image: 0.11.7 + preceptor-core: 0.10.1 + promise: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + 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 + transitivePeerDependencies: + - supports-color + dev: true + + /bonjour-service@1.1.1: + resolution: {integrity: sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==} + dependencies: + array-flatten: 2.1.2 + dns-equal: 1.0.0 + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + dev: true + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /bowser@1.9.4: + resolution: {integrity: sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==} + dev: false + + /boxen@1.3.0: + resolution: {integrity: sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==} + engines: {node: '>=4'} + dependencies: + ansi-align: 2.0.0 + camelcase: 4.1.0 + chalk: 2.4.2 + cli-boxes: 1.0.0 + string-width: 2.1.1 + term-size: 1.2.0 + widest-line: 2.0.1 + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /brcast@3.0.2: + resolution: {integrity: sha512-f5XwwFCCuvgqP2nMH/hJ74FqnGmb4X3D+NC//HphxJzzhsZvSZa+Hk/syB7j3ZHpPDLMoYU8oBgviRWfNvEfKA==} + dev: false + + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + /browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + dev: true + + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + /browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + + /browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + dependencies: + cipher-base: 1.0.4 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + /browserify-rsa@4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + + /browserify-sign@4.2.1: + resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + inherits: 2.0.4 + parse-asn1: 5.1.6 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + + /browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + + /browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001534 + electron-to-chromium: 1.4.519 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.10) + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-alloc-unsafe@1.1.0: + resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + dev: true + + /buffer-alloc@1.2.0: + resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + dependencies: + buffer-alloc-unsafe: 1.1.0 + buffer-fill: 1.0.0 + dev: true + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /buffer-fill@1.0.0: + resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + /buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + + /builtins@1.0.3: + resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} + dev: true + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: true + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /cacache@10.0.4: + resolution: {integrity: sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==} + dependencies: + bluebird: 3.7.2 + chownr: 1.1.4 + glob: 7.2.3 + graceful-fs: 4.2.11 + lru-cache: 4.1.5 + mississippi: 2.0.0 + mkdirp: 0.5.6 + move-concurrently: 1.0.1 + promise-inflight: 1.0.1(bluebird@3.7.2) + rimraf: 2.7.1 + ssri: 5.3.0 + unique-filename: 1.1.1 + y18n: 4.0.3 + dev: true + + /cacache@9.3.0: + resolution: {integrity: sha512-Vbi8J1XfC8v+FbQ6QkOtKXsHpPnB0i9uMeYFJoj40EbdOsEqWB3DPpNjfsnYBkqOPYA8UvrqH6FZPpBP0zdN7g==} + dependencies: + bluebird: 3.7.2 + chownr: 1.1.4 + glob: 7.2.3 + graceful-fs: 4.2.11 + lru-cache: 4.1.5 + mississippi: 1.3.1 + mkdirp: 0.5.6 + move-concurrently: 1.0.1 + promise-inflight: 1.0.1(bluebird@3.7.2) + rimraf: 2.7.1 + ssri: 4.1.6 + unique-filename: 1.1.1 + y18n: 3.2.2 + dev: true + + /cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: true + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + + /caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + dependencies: + callsites: 2.0.0 + + /caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + dependencies: + caller-callsite: 2.0.0 + + /callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.2 + dev: true + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + + /camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + dev: true + + /camelcase@1.2.1: + resolution: {integrity: sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==} + engines: {node: '>=0.10.0'} + dev: false + + /camelcase@4.1.0: + resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} + engines: {node: '>=4'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + dev: false + + /caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.21.10 + caniuse-lite: 1.0.30001534 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: true + + /caniuse-lite@1.0.30001534: + resolution: {integrity: sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==} + + /capture-exit@2.0.0: + resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} + engines: {node: 6.* || 8.* || >= 10.*} + dependencies: + rsvp: 4.8.5 + dev: true + + /capture-stack-trace@1.0.2: + resolution: {integrity: sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==} + engines: {node: '>=0.10.0'} + dev: true + + /carlo@0.9.46: + resolution: {integrity: sha512-FwZ/wxjqe+5RgzF2SRsPSWsVB9+McAVRWW0tRkmbh7fBjrf3HFZZbcr8vr61p1K+NBaAPv57DRjxgIyfbHmd7g==} + engines: {node: '>=7.6.0'} + dependencies: + debug: 4.3.4 + puppeteer-core: 1.12.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /case-sensitive-paths-webpack-plugin@2.4.0: + resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} + engines: {node: '>=4'} + dev: true + + /caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /ccount@1.1.0: + resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} + dev: true + + /center-align@0.1.3: + resolution: {integrity: sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==} + engines: {node: '>=0.10.0'} + dependencies: + align-text: 0.1.4 + lazy-cache: 1.0.4 + dev: false + + /chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: false + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /char-regex@2.0.1: + resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==} + engines: {node: '>=12.20'} + dev: true + + /character-entities-html4@1.1.4: + resolution: {integrity: sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==} + dev: true + + /character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + + /character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + + /character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /check-types@11.2.3: + resolution: {integrity: sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==} + dev: true + + /chokidar@3.5.1: + resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.5.0 + optionalDependencies: + fsevents: 2.3.3 + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: true + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + + /ci-info@1.6.0: + resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} + dev: true + + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: true + + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + dev: true + + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + /cjs-module-lexer@0.6.0: + resolution: {integrity: sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==} + dev: true + + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + dev: true + + /clamp@1.0.1: + resolution: {integrity: sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==} + dev: false + + /class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: true + + /classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + + /clean-css@5.3.2: + resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} + engines: {node: '>= 10.0'} + dependencies: + source-map: 0.6.1 + dev: true + + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-boxes@1.0.0: + resolution: {integrity: sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==} + engines: {node: '>=0.10.0'} + dev: true + + /cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + dependencies: + restore-cursor: 2.0.0 + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners@1.3.1: + resolution: {integrity: sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==} + engines: {node: '>=4'} + dev: true + + /cli-spinners@2.9.0: + resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + engines: {node: '>=6'} + dev: true + + /cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + + /cli-width@2.2.1: + resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} + dev: true + + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + + /clipboardy@2.1.0: + resolution: {integrity: sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ==} + engines: {node: '>=8'} + dependencies: + arch: 2.2.0 + execa: 1.0.0 + dev: true + + /clipboardy@2.3.0: + resolution: {integrity: sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==} + engines: {node: '>=8'} + dependencies: + arch: 2.2.0 + execa: 1.0.0 + is-wsl: 2.2.0 + + /cliui@2.1.0: + resolution: {integrity: sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==} + dependencies: + center-align: 0.1.3 + right-align: 0.1.3 + wordwrap: 0.0.2 + dev: false + + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-buffer@1.0.0: + resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} + engines: {node: '>= 0.10'} + dev: true + + /clone-regexp@2.2.0: + resolution: {integrity: sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==} + engines: {node: '>=6'} + dependencies: + is-regexp: 2.1.0 + dev: true + + /clone-stats@1.0.0: + resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} + dev: true + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + dev: true + + /cloneable-readable@1.1.3: + resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} + dependencies: + inherits: 2.0.4 + process-nextick-args: 2.0.1 + readable-stream: 2.3.8 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /coa@2.0.2: + resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} + engines: {node: '>= 4.0'} + dependencies: + '@types/q': 1.5.6 + chalk: 2.4.2 + q: 1.5.1 + dev: true + + /codesandbox-import-util-types@2.2.3: + resolution: {integrity: sha512-Qj00p60oNExthP2oR3vvXmUGjukij+rxJGuiaKM6tyUmSyimdZsqHI/TUvFFClAffk9s7hxGnQgWQ8KCce27qQ==} + dev: true + + /codesandbox-import-utils@2.2.3: + resolution: {integrity: sha512-ymtmcgZKU27U+nM2qUb21aO8Ut/u2S9s6KorOgG81weP+NA0UZkaHKlaRqbLJ9h4i/4FLvwmEXYAnTjNmp6ogg==} + dependencies: + codesandbox-import-util-types: 2.2.3 + istextorbinary: 2.6.0 + lz-string: 1.5.0 + dev: true + + /codesandbox@2.2.3: + resolution: {integrity: sha512-IAkWFk6UUglOhSemI7UFgNNL/jgg+1YjVEIllFULLgsaHhFnY51pCqAifMNuAd5d9Zp4Nk/xMgrEaGNV0L4Xlg==} + hasBin: true + dependencies: + axios: 0.18.1 + chalk: 2.4.2 + codesandbox-import-util-types: 2.2.3 + codesandbox-import-utils: 2.2.3 + commander: 2.20.3 + datauri: 3.0.0 + filesize: 3.6.1 + fs-extra: 3.0.1 + git-branch: 1.0.0 + git-repo-name: 0.6.0 + git-username: 0.5.1 + humps: 2.0.1 + inquirer: 6.5.2 + lodash: 4.17.21 + lz-string: 1.5.0 + ms: 2.1.3 + open: 6.4.0 + ora: 1.4.0 + pacote: 2.7.38 + shortid: 2.2.16 + update-notifier: 2.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true + + /collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + dev: false + + /colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /comma-separated-tokens@1.0.8: + resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + dev: true + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: true + + /commander@9.2.0: + resolution: {integrity: sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==} + engines: {node: ^12.20.0 || >=14} + dev: true + + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: true + + /common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: true + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /component-classes@1.2.6: + resolution: {integrity: sha512-hPFGULxdwugu1QWW3SvVOCUHLzO34+a2J6Wqy0c5ASQkfi9/8nZcBB0ZohaEbXOQlCflMAEMmEWk7u7BVs4koA==} + dependencies: + component-indexof: 0.0.3 + dev: true + + /component-emitter@1.3.0: + resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + dev: true + + /component-indexof@0.0.3: + resolution: {integrity: sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw==} + dev: true + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + + /compute-scroll-into-view@3.0.3: + resolution: {integrity: sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A==} + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: true + + /concat-with-sourcemaps@1.1.0: + resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} + dependencies: + source-map: 0.6.1 + dev: true + + /configstore@3.1.5: + resolution: {integrity: sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==} + engines: {node: '>=4'} + dependencies: + dot-prop: 4.2.1 + graceful-fs: 4.2.11 + make-dir: 1.3.0 + unique-string: 1.0.0 + write-file-atomic: 2.4.3 + xdg-basedir: 3.0.0 + dev: true + + /confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + + /connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: true + + /connected-react-router@6.5.2(history@4.10.1)(react-redux@7.2.9)(react-router@5.3.4)(react@17.0.2)(redux@4.2.1): + resolution: {integrity: sha512-qzsLPZCofSI80fwy+HgxtEgSGS4ndYUUZAWaw1dqaOGPLKX/FVwIOEb7q+hjHdnZ4v5pKZcNv5GG4urjujIoyA==} + peerDependencies: + history: ^4.7.2 + react: ^16.4.0 + react-redux: ^6.0.0 || ^7.1.0 + react-router: ^4.3.1 || ^5.0.0 + redux: ^3.6.0 || ^4.0.0 + dependencies: + history: 4.10.1 + immutable: 3.8.2 + prop-types: 15.8.1 + react: 17.0.2 + react-redux: 7.2.9(react-dom@17.0.2)(react@17.0.2) + react-router: 5.3.4(react@17.0.2) + redux: 4.2.1 + seamless-immutable: 7.1.4 + dev: true + + /console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + + /constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: true + + /contour_plot@0.0.1: + resolution: {integrity: sha512-Nil2HI76Xux6sVGORvhSS8v66m+/h5CwFkBJDO+U5vWaMdNC0yXNCsGDPbzPhvqOEU5koebhdEvD372LI+IyLw==} + dev: false + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: true + + /copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + dependencies: + is-what: 3.14.1 + dev: true + + /copy-concurrently@1.0.5: + resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} + dependencies: + aproba: 1.2.0 + fs-write-stream-atomic: 1.0.10 + iferr: 0.1.5 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: true + + /copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + dev: true + + /copy-text-to-clipboard@2.2.0: + resolution: {integrity: sha512-WRvoIdnTs1rgPMkgA2pUOa/M4Enh2uzCwdKsOMYNAJiz/4ZvEJgmbF4OmninPmlFdAWisfeh0tH+Cpf7ni3RqQ==} + engines: {node: '>=6'} + dev: true + + /copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + dependencies: + toggle-selection: 1.0.6 + + /core-js-compat@3.32.2: + resolution: {integrity: sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==} + dependencies: + browserslist: 4.21.10 + dev: true + + /core-js-pure@3.32.2: + resolution: {integrity: sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ==} + requiresBuild: true + + /core-js@1.2.7: + resolution: {integrity: sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + + /core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: true + + /core-js@3.32.2: + resolution: {integrity: sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==} + requiresBuild: true + dev: true + + /core-js@3.6.5: + resolution: {integrity: sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + + /core-js@3.8.2: + resolution: {integrity: sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: true + + /core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + /cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + + /cosmiconfig@6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.4 + + /create-error-class@3.0.2: + resolution: {integrity: sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==} + engines: {node: '>=0.10.0'} + dependencies: + capture-stack-trace: 1.0.2 + dev: true + + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + /create-react-class@15.7.0: + resolution: {integrity: sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + dev: true + + /crequire@1.8.1: + resolution: {integrity: sha512-GbElTY148ZRQbC3E3XlMAitKE9rEyO/2mIkkjwgqzIucRmHiaAMF2Ynpwsuxzp08SdAbeN4pTrEqZs0MWRN6/w==} + engines: {node: '>= 0.6.0'} + dev: true + + /cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + dev: false + + /cross-port-killer@1.4.0: + resolution: {integrity: sha512-ujqfftKsSeorFMVI6JP25xMBixHEaDWVK+NarRZAGnJjR5AhebRQU+g+k/Lj8OHwM6f+wrrs8u5kkCdI7RLtxQ==} + hasBin: true + dev: true + + /cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.1 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + + /crypto-js@4.1.1: + resolution: {integrity: sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==} + dev: false + + /crypto-random-string@1.0.0: + resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} + engines: {node: '>=4'} + dev: true + + /crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + dev: true + + /css-animation@1.6.1: + resolution: {integrity: sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==} + dependencies: + babel-runtime: 6.26.0 + component-classes: 1.2.6 + dev: true + + /css-blank-pseudo@0.1.4: + resolution: {integrity: sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + postcss: 7.0.32 + + /css-blank-pseudo@3.0.3(postcss@8.4.29): + resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + dev: false + + /css-declaration-sorter@6.4.1(postcss@8.4.29): + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.29 + dev: true + + /css-has-pseudo@0.10.0: + resolution: {integrity: sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + postcss: 7.0.32 + postcss-selector-parser: 5.0.0 + + /css-has-pseudo@3.0.4(postcss@8.4.29): + resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /css-in-js-utils@2.0.1: + resolution: {integrity: sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==} + dependencies: + hyphenate-style-name: 1.0.4 + isobject: 3.0.1 + dev: false + + /css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + dependencies: + hyphenate-style-name: 1.0.4 + dev: false + + /css-loader@6.8.1(webpack@5.88.2): + resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.29) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.29) + postcss-modules-scope: 3.0.0(postcss@8.4.29) + postcss-modules-values: 4.0.0(postcss@8.4.29) + postcss-value-parser: 4.2.0 + semver: 7.5.4 + webpack: 5.88.2 + dev: true + + /css-minimizer-webpack-plugin@3.4.1(webpack@5.88.2): + resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@parcel/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + dependencies: + cssnano: 5.1.15(postcss@8.4.29) + jest-worker: 27.5.1 + postcss: 8.4.29 + schema-utils: 4.2.0 + serialize-javascript: 6.0.1 + source-map: 0.6.1 + webpack: 5.88.2 + dev: true + + /css-prefers-color-scheme@3.1.1: + resolution: {integrity: sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + postcss: 7.0.32 + + /css-prefers-color-scheme@6.0.3(postcss@8.4.29): + resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + dev: true + + /css-select-base-adapter@0.1.1: + resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} + dev: true + + /css-select@2.1.0: + resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 1.0.2 + dev: true + + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: true + + /css-to-react-native@2.3.2: + resolution: {integrity: sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==} + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 3.3.1 + dev: false + + /css-tree@1.0.0-alpha.37: + resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + dev: true + + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + /css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.0.2 + dev: true + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: true + + /css-what@3.4.2: + resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} + engines: {node: '>= 6'} + dev: true + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true + + /csscolorparser@1.0.3: + resolution: {integrity: sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==} + dev: false + + /cssdb@4.4.0: + resolution: {integrity: sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==} + + /cssdb@7.7.2: + resolution: {integrity: sha512-pQPYP7/kch4QlkTcLuUNiNL2v/E+O+VIdotT+ug62/+2B2/jkzs5fMM6RHCzGCZ9C82pODEMSIzRRUzJOrl78g==} + dev: true + + /cssesc@2.0.0: + resolution: {integrity: sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==} + engines: {node: '>=4'} + hasBin: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + /cssnano-preset-default@5.2.14(postcss@8.4.29): + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.29) + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-calc: 8.2.4(postcss@8.4.29) + postcss-colormin: 5.3.1(postcss@8.4.29) + postcss-convert-values: 5.1.3(postcss@8.4.29) + postcss-discard-comments: 5.1.2(postcss@8.4.29) + postcss-discard-duplicates: 5.1.0(postcss@8.4.29) + postcss-discard-empty: 5.1.1(postcss@8.4.29) + postcss-discard-overridden: 5.1.0(postcss@8.4.29) + postcss-merge-longhand: 5.1.7(postcss@8.4.29) + postcss-merge-rules: 5.1.4(postcss@8.4.29) + postcss-minify-font-values: 5.1.0(postcss@8.4.29) + postcss-minify-gradients: 5.1.1(postcss@8.4.29) + postcss-minify-params: 5.1.4(postcss@8.4.29) + postcss-minify-selectors: 5.2.1(postcss@8.4.29) + postcss-normalize-charset: 5.1.0(postcss@8.4.29) + postcss-normalize-display-values: 5.1.0(postcss@8.4.29) + postcss-normalize-positions: 5.1.1(postcss@8.4.29) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.29) + postcss-normalize-string: 5.1.0(postcss@8.4.29) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.29) + postcss-normalize-unicode: 5.1.1(postcss@8.4.29) + postcss-normalize-url: 5.1.0(postcss@8.4.29) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.29) + postcss-ordered-values: 5.1.3(postcss@8.4.29) + postcss-reduce-initial: 5.1.2(postcss@8.4.29) + postcss-reduce-transforms: 5.1.0(postcss@8.4.29) + postcss-svgo: 5.1.0(postcss@8.4.29) + postcss-unique-selectors: 5.1.1(postcss@8.4.29) + dev: true + + /cssnano-preset-default@6.0.1(postcss@8.4.29): + resolution: {integrity: sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.29) + cssnano-utils: 4.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-calc: 9.0.1(postcss@8.4.29) + postcss-colormin: 6.0.0(postcss@8.4.29) + postcss-convert-values: 6.0.0(postcss@8.4.29) + postcss-discard-comments: 6.0.0(postcss@8.4.29) + postcss-discard-duplicates: 6.0.0(postcss@8.4.29) + postcss-discard-empty: 6.0.0(postcss@8.4.29) + postcss-discard-overridden: 6.0.0(postcss@8.4.29) + postcss-merge-longhand: 6.0.0(postcss@8.4.29) + postcss-merge-rules: 6.0.1(postcss@8.4.29) + postcss-minify-font-values: 6.0.0(postcss@8.4.29) + postcss-minify-gradients: 6.0.0(postcss@8.4.29) + postcss-minify-params: 6.0.0(postcss@8.4.29) + postcss-minify-selectors: 6.0.0(postcss@8.4.29) + postcss-normalize-charset: 6.0.0(postcss@8.4.29) + postcss-normalize-display-values: 6.0.0(postcss@8.4.29) + postcss-normalize-positions: 6.0.0(postcss@8.4.29) + postcss-normalize-repeat-style: 6.0.0(postcss@8.4.29) + postcss-normalize-string: 6.0.0(postcss@8.4.29) + postcss-normalize-timing-functions: 6.0.0(postcss@8.4.29) + postcss-normalize-unicode: 6.0.0(postcss@8.4.29) + postcss-normalize-url: 6.0.0(postcss@8.4.29) + postcss-normalize-whitespace: 6.0.0(postcss@8.4.29) + postcss-ordered-values: 6.0.0(postcss@8.4.29) + postcss-reduce-initial: 6.0.0(postcss@8.4.29) + postcss-reduce-transforms: 6.0.0(postcss@8.4.29) + postcss-svgo: 6.0.0(postcss@8.4.29) + postcss-unique-selectors: 6.0.0(postcss@8.4.29) + dev: true + + /cssnano-utils@3.1.0(postcss@8.4.29): + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /cssnano-utils@4.0.0(postcss@8.4.29): + resolution: {integrity: sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /cssnano@5.1.15(postcss@8.4.29): + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.29) + lilconfig: 2.1.0 + postcss: 8.4.29 + yaml: 1.10.2 + dev: true + + /cssnano@6.0.1(postcss@8.4.29): + resolution: {integrity: sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 6.0.1(postcss@8.4.29) + lilconfig: 2.1.0 + postcss: 8.4.29 + dev: true + + /csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true + + /csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + dependencies: + css-tree: 2.2.1 + dev: true + + /cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true + + /cssom@0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + dev: true + + /cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + dev: true + + /cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} + dependencies: + rrweb-cssom: 0.6.0 + dev: true + + /csstype@2.6.21: + resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} + dev: false + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + /cwd@0.9.1: + resolution: {integrity: sha512-4+0D+ojEasdLndYX4Cqff057I/Jp6ysXpwKkdLQLnZxV8f6IYZmZtTP5uqD91a/kWqejoc0sSqK4u8wpTKCh8A==} + engines: {node: '>=0.8'} + dependencies: + find-pkg: 0.1.2 + dev: true + + /cyclist@1.0.2: + resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==} + dev: true + + /d3-array@1.2.4: + resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} + dev: false + + /d3-collection@1.0.7: + resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==} + dev: false + + /d3-color@1.4.1: + resolution: {integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==} + dev: false + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false + + /d3-dispatch@2.0.0: + resolution: {integrity: sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==} + dev: false + + /d3-dsv@1.2.0: + resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==} + hasBin: true + dependencies: + commander: 2.20.3 + iconv-lite: 0.4.24 + rw: 1.3.3 + dev: false + + /d3-ease@1.0.7: + resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==} + dev: false + + /d3-force@2.1.1: + resolution: {integrity: sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==} + dependencies: + d3-dispatch: 2.0.0 + d3-quadtree: 2.0.0 + d3-timer: 2.0.0 + dev: false + + /d3-format@1.4.5: + resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==} + dev: false + + /d3-hexbin@0.2.2: + resolution: {integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==} + dev: false + + /d3-hierarchy@2.0.0: + resolution: {integrity: sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==} + dev: false + + /d3-interpolate@1.4.0: + resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==} + dependencies: + d3-color: 1.4.1 + dev: false + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + dev: false + + /d3-quadtree@2.0.0: + resolution: {integrity: sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==} + dev: false + + /d3-regression@1.3.10: + resolution: {integrity: sha512-PF8GWEL70cHHWpx2jUQXc68r1pyPHIA+St16muk/XRokETzlegj5LriNKg7o4LR0TySug4nHYPJNNRz/W+/Niw==} + dev: false + + /d3-scale@2.2.2: + resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==} + dependencies: + d3-array: 1.2.4 + d3-collection: 1.0.7 + d3-format: 1.4.5 + d3-interpolate: 1.4.0 + d3-time: 1.1.0 + d3-time-format: 2.3.0 + dev: false + + /d3-time-format@2.3.0: + resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==} + dependencies: + d3-time: 1.1.0 + dev: false + + /d3-time@1.1.0: + resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==} + dev: false + + /d3-timer@1.0.10: + resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==} + dev: false + + /d3-timer@2.0.0: + resolution: {integrity: sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==} + dev: false + + /dagre-compound@0.0.11(dagre@0.8.5): + resolution: {integrity: sha512-UrSgRP9LtOZCYb9e5doolZXpc7xayyszgyOs7uakTK4n4KsLegLVTRRtq01GpQd/iZjYw5fWMapx9ed+c80MAQ==} + engines: {node: '>=6.0.0'} + peerDependencies: + dagre: ^0.8.5 + dependencies: + dagre: 0.8.5 + dev: false + + /dagre@0.8.5: + resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} + dependencies: + graphlib: 2.1.8 + lodash: 4.17.21 + dev: false + + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true + + /dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + + /data-urls@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + dev: true + + /data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + dev: true + + /datauri@3.0.0: + resolution: {integrity: sha512-NeDFuUPV1YCpCn8MUIcDk1QnuyenUHs7f4Q5P0n9FFA0neKFrfEH9esR+YMW95BplbYfdmjbs0Pl/ZGAaM2QHQ==} + engines: {node: '>= 8'} + dependencies: + image-size: 0.8.3 + mimer: 1.1.0 + dev: true + + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.22.15 + + /date-format@0.0.0: + resolution: {integrity: sha512-kAmAdtsjW5nQ02FERwI1bP4xe6HQBPwy5kpAF4CRSLOMUs/vgMIEEwpy6JqUs7NitTyhZiImxwAjgPpnteycHg==} + deprecated: 0.x is no longer supported. Please upgrade to 4.x or higher. + dev: true + + /dayjs@1.11.9: + resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} + + /debug@0.7.4: + resolution: {integrity: sha512-EohAb3+DSHSGx8carOSKJe8G0ayV5/i609OD0J2orCkuyae7SyZSz2aoLmQF2s0Pj5gITDebwPH7GFBlqOUQ1Q==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + + /debug@3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true + + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-equal@1.1.1: + resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} + dependencies: + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + object-is: 1.1.5 + object-keys: 1.1.1 + regexp.prototype.flags: 1.5.1 + dev: false + + /deep-equal@2.2.2: + resolution: {integrity: sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.1 + is-arguments: 1.1.1 + is-array-buffer: 3.0.2 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.11 + dev: true + + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + /deepmerge@1.5.2: + resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==} + engines: {node: '>=0.10.0'} + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + /default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + dependencies: + execa: 5.1.1 + dev: true + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /define-data-property@1.0.1: + resolution: {integrity: sha512-22M+6zEspQHx10bfFQl2ET39IvfuQ7+rZIH7+ard8fCC4hPmkOSy+8JhKxBRLaWUziJ0O63NTYT97LR8zUfPTw==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.0.1 + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + + /define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 0.1.6 + dev: true + + /define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + dev: true + + /define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + dev: true + + /defined@1.0.1: + resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} + dev: false + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + + /des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: true + + /detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + dev: false + + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /detect-installer@1.0.2: + resolution: {integrity: sha512-ilO8dCPf2628WxyaE0sDKjvv7q6g/NFdd8O1t5dcpCytRuD2KVFQuCQ9fpD1T97J+06RZcuFov4ZkGLxsINXWQ==} + dev: true + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: true + + /detect-port-alt@1.1.6: + resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} + engines: {node: '>= 4.2.1'} + hasBin: true + dependencies: + address: 1.2.2 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + + /devtools-protocol@0.0.818844: + resolution: {integrity: sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg==} + dev: true + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + + /diff-match-patch@1.0.5: + resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} + dev: false + + /diff-sequences@26.6.2: + resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} + engines: {node: '>= 10.14.2'} + dev: true + + /diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dev: true + + /diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + + /dns-equal@1.0.0: + resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} + dev: true + + /dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + dependencies: + '@leichtgewicht/ip-codec': 2.0.4 + dev: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true + + /dom-align@1.12.4: + resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==} + + /dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + dependencies: + utila: 0.4.0 + dev: true + + /dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + dev: true + + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + + /dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + dev: true + + /domain-browser@1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + + /domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + dev: true + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domexception@2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + dependencies: + webidl-conversions: 5.0.0 + dev: true + + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + dependencies: + webidl-conversions: 7.0.0 + dev: true + + /domhandler@2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + dependencies: + domelementtype: 1.3.1 + dev: true + + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: true + + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /dot-prop@4.2.1: + resolution: {integrity: sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==} + engines: {node: '>=4'} + dependencies: + is-obj: 1.0.1 + dev: true + + /dotenv-expand@5.1.0: + resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + dev: true + + /dotenv@10.0.0: + resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} + engines: {node: '>=10'} + dev: true + + /dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + dev: true + + /dotignore@0.1.2: + resolution: {integrity: sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==} + hasBin: true + dependencies: + minimatch: 3.1.2 + dev: false + + /dumi-assets-types@1.0.1: + resolution: {integrity: sha512-A+fJp7L+Q6nU5S2KgbdnyfRoCkAZy+UFudQ45QPM7W+3LIe8o+Tt0cURIQMnLZMBjoKbItB5IDi+IM39FwFZvQ==} + dev: true + + /dumi-theme-default@1.1.24(@umijs/preset-dumi@1.1.53)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-/fS7gBJejom1Zy1GZkrqG/dLEsCK6J/S/ctCPEawDC3KkZE0sJh+dqsMuhHt8ts7ZhaGhDpJNPXSMghfN/qrzw==} + peerDependencies: + '@umijs/preset-dumi': 1.x + react: ^16.13.1 || ^17.0.0 + dependencies: + '@umijs/preset-dumi': 1.1.53(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2)(typescript@4.9.5)(umi@3.5.41) + lodash.throttle: 4.1.1 + prism-react-renderer: 1.3.5(react@17.0.2) + prismjs: 1.29.0 + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-tabs: 11.16.1(react-dom@17.0.2)(react@17.0.2) + rc-tree: 5.7.10(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-error-boundary: 3.1.4(react@17.0.2) + transitivePeerDependencies: + - react-dom + dev: true + + /duplexer3@0.1.5: + resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} + dev: true + + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + /duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.1 + dev: true + + /dva-core@1.6.0-beta.7(redux@4.2.1): + resolution: {integrity: sha512-e+0yOEWUK+XbnqflX+KXoLZDGxn+kLKgcT6XYT8GyRe0xcbmLEbwDZO0DXUkdsbxfqSOlLkIprMUoYJ3D5B4Gg==} + peerDependencies: + redux: 4.x + dependencies: + '@babel/runtime': 7.22.15 + flatten: 1.0.3 + global: 4.4.0 + invariant: 2.2.4 + is-plain-object: 2.0.4 + redux: 4.2.1 + redux-saga: 0.16.2 + warning: 3.0.0 + dev: true + + /dva-core@2.0.4(redux@4.2.1): + resolution: {integrity: sha512-Zh39llFyItu9HKXKfCZVf9UFtDTcypdAjGBew1S+wK8BGVzFpm1GPTdd6uIMeg7O6STtCvt2Qv+RwUut1GFynA==} + peerDependencies: + redux: 4.x + dependencies: + '@babel/runtime': 7.22.15 + flatten: 1.0.3 + global: 4.4.0 + invariant: 2.2.4 + is-plain-object: 2.0.4 + redux: 4.2.1 + redux-saga: 0.16.2 + warning: 3.0.0 + dev: true + + /dva-immer@0.5.2(dva@2.6.0-beta.23): + resolution: {integrity: sha512-xg23ktGsrdzgiU0ACl8vFm2+E2GBWbtXndXRKM9wtHDR+yMH27NfttVuAZQWvv4aaj6f5/bC+TdsZ9t7n6cAhQ==} + peerDependencies: + dva: ^2.5.0-0 + dependencies: + '@babel/runtime': 7.22.15 + dva: 2.6.0-beta.23(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2) + immer: 7.0.15 + dev: true + + /dva-loading@3.0.24(dva-core@1.6.0-beta.7): + resolution: {integrity: sha512-3j4bmuXOYH93xe+CC//z3Si8XMx6DLJveep+UbzKy0jhA7oQrCCZTdKxu0UPYXeAMYXpCO25pG4JOnVhzmC7ug==} + peerDependencies: + dva-core: ^1.1.0 || ^1.5.0-0 || ^1.6.0-0 + dependencies: + '@babel/runtime': 7.22.15 + dva-core: 1.6.0-beta.7(redux@4.2.1) + dev: true + + /dva@2.6.0-beta.23(react-dom@17.0.2)(react-router@5.3.4)(react@17.0.2): + resolution: {integrity: sha512-noeOz3Erxpc6YLEsyyS//zGszeRYWKEvZoeCZ0LaCvWrV7Cxah9Xt/I9V1SS9eYDySaSgTUOoU+dLweQpCScAA==} + peerDependencies: + react: ^16.8.4 + react-dom: ^16.8.4 + dependencies: + '@babel/runtime': 7.22.15 + '@types/isomorphic-fetch': 0.0.35 + '@types/react-redux': 7.1.26 + '@types/react-router-dom': 5.3.3 + connected-react-router: 6.5.2(history@4.10.1)(react-redux@7.2.9)(react-router@5.3.4)(react@17.0.2)(redux@4.2.1) + dva-core: 2.0.4(redux@4.2.1) + global: 4.4.0 + history: 4.10.1 + invariant: 2.2.4 + isomorphic-fetch: 2.2.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-redux: 7.2.9(react-dom@17.0.2)(react@17.0.2) + react-router-dom: 5.3.4(react@17.0.2) + redux: 4.2.1 + transitivePeerDependencies: + - react-native + - react-router + dev: true + + /earcut@2.2.4: + resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} + dev: false + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /echarts-for-react@3.0.2(echarts@5.4.3)(react@17.0.2): + resolution: {integrity: sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA==} + peerDependencies: + echarts: ^3.0.0 || ^4.0.0 || ^5.0.0 + react: ^15.0.0 || >=16.0.0 + dependencies: + echarts: 5.4.3 + fast-deep-equal: 3.1.3 + react: 17.0.2 + size-sensor: 1.0.2 + dev: false + + /echarts@5.4.3: + resolution: {integrity: sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==} + dependencies: + tslib: 2.3.0 + zrender: 5.4.4 + dev: false + + /editions@2.3.1: + resolution: {integrity: sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA==} + engines: {node: '>=0.8'} + dependencies: + errlop: 2.2.0 + semver: 6.3.1 + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /ejs@2.7.4: + resolution: {integrity: sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + + /ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.7 + dev: true + + /electron-to-chromium@1.4.519: + resolution: {integrity: sha512-kqs9oGYL4UFVkLKhqCTgBCYZv+wZ374yABDMqlDda9HvlkQxvSr7kgf4hfWVjMieDbX+1MwPHFBsOGCMIBaFKg==} + + /element-resize-event@3.0.6: + resolution: {integrity: sha512-sSeXY9rNDp86bJODW68pxLcy3A5FrPZfIgOrJHzqgYzX513Zq6/ytdBigp7KeJEpZZopBBSiO1cVuiRkZpNxLw==} + dev: false + + /elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + /email-addresses@3.1.0: + resolution: {integrity: sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==} + dev: true + + /emittery@0.10.2: + resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} + engines: {node: '>=12'} + dev: true + + /emittery@0.7.2: + resolution: {integrity: sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==} + engines: {node: '>=10'} + dev: true + + /emittery@0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + dependencies: + iconv-lite: 0.6.3 + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + + /enhanced-resolve@4.5.0: + resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} + engines: {node: '>=6.9.0'} + dependencies: + graceful-fs: 4.2.11 + memory-fs: 0.5.0 + tapable: 1.1.3 + dev: true + + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + /entities@1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + dev: true + + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + /err-code@1.1.2: + resolution: {integrity: sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==} + dev: true + + /errlop@2.2.0: + resolution: {integrity: sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw==} + engines: {node: '>=0.8'} + dev: true + + /errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + dependencies: + prr: 1.0.1 + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + + /error-stack-parser@1.3.6: + resolution: {integrity: sha512-xhuSYd8wLgOXwNgjcPeXMPL/IiiA1Huck+OPvClpJViVNNlJVtM41o+1emp7bPvlCJwCatFX2DWc05/DgfbWzA==} + dependencies: + stackframe: 0.3.1 + dev: true + + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + dependencies: + stackframe: 1.3.4 + + /es-abstract@1.22.1: + resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.1 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.11 + + /es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + dev: true + + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + dev: true + + /es-iterator-helpers@1.0.14: + resolution: {integrity: sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + es-set-tostringtag: 2.0.1 + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + iterator.prototype: 1.1.1 + safe-array-concat: 1.0.1 + dev: true + + /es-module-lexer@0.7.1: + resolution: {integrity: sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==} + + /es-module-lexer@1.3.1: + resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} + + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + has-tostringtag: 1.0.0 + + /es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + /es5-imcompatible-versions@0.1.86: + resolution: {integrity: sha512-Lbrsn5bCL4iVMBdundiFVNIKlnnoBiIMrjtLRe1Snt92s60WHotw83S2ijp5ioqe6pDil3iBPY634VDwBcb1rg==} + + /es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + dev: true + + /es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + dependencies: + es6-promise: 4.2.8 + dev: true + + /esbuild-loader@2.9.2(webpack@5.88.2): + resolution: {integrity: sha512-HpF+r/ES2aC40VDOIFsP8OIOM2y2vj8LyLwJ4G8DCMOi8Kov68TwCtxiMMTuSuxR/xKDu/ykgVyCEgps6BXpYw==} + peerDependencies: + webpack: ^4.40.0 || ^5.0.0 + dependencies: + esbuild: 0.8.57 + joycon: 2.2.5 + json5: 2.2.3 + loader-utils: 2.0.4 + type-fest: 0.20.2 + webpack: 5.88.2 + webpack-sources: 2.3.1 + dev: true + + /esbuild@0.12.15: + resolution: {integrity: sha512-72V4JNd2+48eOVCXx49xoSWHgC3/cCy96e7mbXKY+WOWghN00cCmlGnwVLRhRHorvv0dgCyuMYBZlM2xDM5OQw==} + hasBin: true + requiresBuild: true + + /esbuild@0.8.57: + resolution: {integrity: sha512-j02SFrUwFTRUqiY0Kjplwjm1psuzO1d6AjaXKuOR9hrY0HuPsT6sV42B6myW34h1q4CRy+Y3g4RU/cGJeI/nNA==} + hasBin: true + requiresBuild: true + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /escodegen@1.14.3: + resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} + engines: {node: '>=4.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 4.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /eslint-ast-utils@1.1.0: + resolution: {integrity: sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA==} + engines: {node: '>=4'} + dependencies: + lodash.get: 4.4.2 + lodash.zip: 4.2.0 + dev: true + + /eslint-config-prettier@8.10.0(eslint@7.32.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0)(jest@27.5.1)(typescript@4.9.5): + resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} + engines: {node: '>=14.0.0'} + peerDependencies: + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.22.17 + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.17)(eslint@8.49.0) + '@rushstack/eslint-patch': 1.3.3 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + babel-preset-react-app: 10.0.1 + confusing-browser-globals: 1.0.11 + eslint: 8.49.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.49.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.49.0)(jest@27.5.1)(typescript@4.9.5) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.49.0) + eslint-plugin-react: 7.33.2(eslint@8.49.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.49.0) + eslint-plugin-testing-library: 5.11.1(eslint@8.49.0)(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + dev: true + + /eslint-config-tencent@1.0.4(@babel/core@7.22.17)(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint-plugin-prettier@4.2.1)(eslint@7.32.0)(prettier@2.8.8): + resolution: {integrity: sha512-h8r5f4iUdF5RyfIhOA+KXVAokltyUs4sGnYrzbY6bSZvUzYS282C2s4z3AYA8DCBfDaKPtUsDBOF+tEy38wTyA==} + peerDependencies: + '@babel/core': ^7.14.6 + '@typescript-eslint/eslint-plugin': ^4.27.0 || ^5.12.0 + '@typescript-eslint/parser': ^4.27.0 || ^5.12.0 + eslint: ^7.28.0 || ^8.0.0 + eslint-plugin-prettier: ^3.4.0 || ^4.0.0 + prettier: ^2.3.1 + dependencies: + '@babel/core': 7.22.17 + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.17)(eslint@7.32.0) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + eslint: 7.32.0 + eslint-plugin-chalk: 1.0.0(eslint@7.32.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@7.32.0) + eslint-plugin-prettier: 4.2.1(eslint@7.32.0)(prettier@2.8.8) + prettier: 2.8.8 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-formatter-pretty@4.1.0: + resolution: {integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==} + engines: {node: '>=10'} + dependencies: + '@types/eslint': 7.29.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + eslint-rule-docs: 1.1.235 + log-symbols: 4.1.0 + plur: 4.0.0 + string-width: 4.2.3 + supports-hyperlinks: 2.3.0 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.0 + resolve: 1.22.4 + transitivePeerDependencies: + - supports-color + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@7.32.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + debug: 3.2.7 + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.49.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + debug: 3.2.7 + eslint: 8.49.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-babel@5.3.1(eslint@7.32.0): + resolution: {integrity: sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g==} + engines: {node: '>=4'} + peerDependencies: + eslint: '>=4.0.0' + dependencies: + eslint: 7.32.0 + eslint-rule-composer: 0.3.0 + dev: true + + /eslint-plugin-chalk@1.0.0(eslint@7.32.0): + resolution: {integrity: sha512-FTi6Wi5dSrkXEVHHojRwyRZZnNFXGnTytuWlrJ3P9HkmMZWTZC3vUaDpyb6jNkumdlrqK0FN8eI3XJG70FwBNA==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=1.0.0' + dependencies: + chalk: 4.1.2 + eslint: 7.32.0 + + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0): + resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@babel/plugin-syntax-flow': ^7.14.5 + '@babel/plugin-transform-react-jsx': ^7.14.9 + eslint: ^8.1.0 + dependencies: + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.17) + eslint: 8.49.0 + lodash: 4.17.21 + string-natural-compare: 3.0.1 + dev: true + + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint@7.32.0): + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@7.32.0) + has: 1.0.3 + is-core-module: 2.13.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.49.0): + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.49.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.49.0) + has: 1.0.3 + is-core-module: 2.13.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jest@24.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==} + engines: {node: '>=10'} + peerDependencies: + '@typescript-eslint/eslint-plugin': '>= 4' + eslint: '>=5' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@4.9.5) + eslint: 7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.49.0)(jest@27.5.1)(typescript@4.9.5): + resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + eslint: 8.49.0 + jest: 27.5.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.49.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.22.15 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.7 + axe-core: 4.8.1 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.49.0 + has: 1.0.3 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + semver: 6.3.1 + dev: true + + /eslint-plugin-prettier@4.2.1(eslint@7.32.0)(prettier@2.8.8): + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 7.32.0 + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + dev: false + + /eslint-plugin-promise@6.1.1(eslint@7.32.0): + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@7.32.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.49.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.49.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@7.32.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.14 + eslint: 7.32.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.49.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.14 + eslint: 8.49.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + + /eslint-plugin-testing-library@5.11.1(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + eslint: 8.49.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-unicorn@20.1.0(eslint@7.32.0): + resolution: {integrity: sha512-XQxLBJT/gnwyRR6cfYsIK1AdekQchAt5tmcsnldevGjgR2xoZsRUa5/i6e0seNHy2RoT57CkTnbVHwHF8No8LA==} + engines: {node: '>=10'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + ci-info: 2.0.0 + clean-regexp: 1.0.0 + eslint: 7.32.0 + eslint-ast-utils: 1.1.0 + eslint-template-visitor: 2.3.2(eslint@7.32.0) + eslint-utils: 2.1.0 + import-modules: 2.1.0 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + reserved-words: 0.1.2 + safe-regex: 2.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + dev: true + + /eslint-rule-docs@1.1.235: + resolution: {integrity: sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==} + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-template-visitor@2.3.2(eslint@7.32.0): + resolution: {integrity: sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA==} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + '@babel/core': 7.22.17 + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.17)(eslint@7.32.0) + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + esquery: 1.5.0 + multimap: 1.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + + /eslint-utils@3.0.0(eslint@7.32.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /eslint-webpack-plugin@3.2.0(eslint@8.49.0)(webpack@5.88.2): + resolution: {integrity: sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + webpack: ^5.0.0 + dependencies: + '@types/eslint': 8.44.2 + eslint: 8.49.0 + jest-worker: 28.1.3 + micromatch: 4.0.5 + normalize-path: 3.0.0 + schema-utils: 4.2.0 + webpack: 5.88.2 + dev: true + + /eslint@7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + hasBin: true + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + enquirer: 2.4.1 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.21.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.5.4 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.8.1 + text-table: 0.2.0 + v8-compile-cache: 2.4.0 + transitivePeerDependencies: + - supports-color + + /eslint@8.49.0: + resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@eslint-community/regexpp': 4.8.1 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.49.0 + '@humanwhocodes/config-array': 0.11.11 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.21.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + dev: true + + /espree@7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + eslint-visitor-keys: 1.3.0 + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@1.2.2: + resolution: {integrity: sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /estree-walker@0.2.1: + resolution: {integrity: sha512-6/I1dwNKk0N9iGOU3ydzAAurz4NPo/ttxZNCqgIVbWFvWyzWBSNonRrJ5CpjDuyBfmM7ENN7WCzUi9aT/UPXXQ==} + dev: true + + /estree-walker@0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + dev: true + + /estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + + /exec-sh@0.3.6: + resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} + dev: true + + /execa@0.7.0: + resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} + engines: {node: '>=4'} + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: true + + /execa@0.8.0: + resolution: {integrity: sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==} + engines: {node: '>=4'} + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: true + + /execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + dependencies: + cross-spawn: 6.0.5 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + + /execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execall@2.0.0: + resolution: {integrity: sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==} + engines: {node: '>=8'} + dependencies: + clone-regexp: 2.2.0 + dev: true + + /exenv@1.2.2: + resolution: {integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==} + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /expand-tilde@1.2.2: + resolution: {integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==} + engines: {node: '>=0.10.0'} + dependencies: + os-homedir: 1.0.2 + dev: true + + /expect@26.6.2: + resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + ansi-styles: 4.3.0 + jest-get-type: 26.3.0 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-regex-util: 26.0.0 + dev: true + + /expect@27.5.1: + resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + jest-get-type: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + dev: true + + /express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + 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 + transitivePeerDependencies: + - supports-color + dev: true + + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: true + + /extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: true + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extract-zip@1.7.0: + resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} + hasBin: true + dependencies: + concat-stream: 1.6.2 + debug: 2.6.9 + mkdirp: 0.5.6 + yauzl: 2.10.0 + transitivePeerDependencies: + - supports-color + dev: true + + /extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.4 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.0 + transitivePeerDependencies: + - supports-color + dev: true + + /extrude-polyline@1.0.6: + resolution: {integrity: sha512-fcKIanU/v+tcdgG0+xMbS0C2VZ0/CF3qqxSjHiWfWICh0yFBezPr3SsOhgdzwE5E82plG6p1orEsfSqgldpxVg==} + dependencies: + as-number: 1.0.0 + gl-vec2: 1.3.0 + polyline-miter-util: 1.0.1 + dev: false + + /extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true + + /fast-deep-equal@3.1.1: + resolution: {integrity: sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==} + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: false + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + /fast-loops@1.1.3: + resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} + dev: false + + /fast-memoize@2.5.2: + resolution: {integrity: sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==} + dev: false + + /fast-shallow-equal@1.0.0: + resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} + dev: false + + /fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + dev: true + + /fastest-stable-stringify@2.0.2: + resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} + dev: false + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + + /fault@1.0.4: + resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} + dependencies: + format: 0.2.2 + + /faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: true + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /fbjs@0.8.18: + resolution: {integrity: sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==} + dependencies: + core-js: 1.2.7 + isomorphic-fetch: 2.2.1 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 0.7.36 + + /fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: true + + /fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + dev: false + + /figures@2.0.0: + resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.1.0 + + /file-loader@6.2.0(webpack@5.88.2): + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.88.2 + dev: true + + /file-name@0.1.0: + resolution: {integrity: sha512-Q8SskhjF4eUk/xoQkmubwLkoHwOTv6Jj/WGtOVLKkZ0vvM+LipkSXugkn1F/+mjWXU32AXLZB3qaz0arUzgtRw==} + engines: {node: '>=0.10.0'} + dev: true + + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true + + /filename-reserved-regex@2.0.0: + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} + engines: {node: '>=4'} + dev: true + + /filenamify@4.3.0: + resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} + engines: {node: '>=8'} + dependencies: + filename-reserved-regex: 2.0.0 + strip-outer: 1.0.1 + trim-repeated: 1.0.0 + dev: true + + /filesize@3.6.1: + resolution: {integrity: sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==} + engines: {node: '>= 0.4.0'} + dev: true + + /filesize@8.0.7: + resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} + engines: {node: '>= 0.4.0'} + + /fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + 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 + transitivePeerDependencies: + - supports-color + dev: true + + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + + /find-file-up@0.1.3: + resolution: {integrity: sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==} + engines: {node: '>=0.10.0'} + dependencies: + fs-exists-sync: 0.1.0 + resolve-dir: 0.1.1 + dev: true + + /find-pkg@0.1.2: + resolution: {integrity: sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==} + engines: {node: '>=0.10.0'} + dependencies: + find-file-up: 0.1.3 + dev: true + + /find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: false + + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /first-chunk-stream@2.0.0: + resolution: {integrity: sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==} + engines: {node: '>=0.10.0'} + dependencies: + readable-stream: 2.3.8 + dev: true + + /flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} + dependencies: + flatted: 3.2.7 + keyv: 4.5.3 + rimraf: 3.0.2 + + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + + /flatten@1.0.3: + resolution: {integrity: sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==} + deprecated: flatten is deprecated in favor of utility frameworks such as lodash. + + /flush-write-stream@1.1.1: + resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: true + + /fmin@0.0.2: + resolution: {integrity: sha512-sSi6DzInhl9d8yqssDfGZejChO8d2bAGIpysPsvYsxFe898z89XhCZg6CPNV3nhUhFefeC/AXZK2bAJxlBjN6A==} + dependencies: + contour_plot: 0.0.1 + json2module: 0.0.3 + rollup: 0.25.8 + tape: 4.16.2 + uglify-js: 2.8.29 + dev: false + + /follow-redirects@1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + /follow-redirects@1.5.10: + resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==} + engines: {node: '>=4.0'} + dependencies: + debug: 3.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + + /for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true + + /fork-ts-checker-webpack-plugin@6.5.3(eslint@7.32.0)(typescript@4.9.5)(webpack@5.88.2): + resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.22.13 + '@types/json-schema': 7.0.12 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.3.1 + eslint: 7.32.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.5.3 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.5.4 + tapable: 1.1.3 + typescript: 4.9.5 + webpack: 5.88.2 + dev: false + + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.49.0)(typescript@4.9.5)(webpack@5.88.2): + resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.22.13 + '@types/json-schema': 7.0.12 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.3.1 + eslint: 8.49.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.5.3 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.5.4 + tapable: 1.1.3 + typescript: 4.9.5 + webpack: 5.88.2 + dev: true + + /form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /form-data@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + /format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true + + /fraction.js@4.3.6: + resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} + dev: true + + /fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + dependencies: + map-cache: 0.2.2 + dev: true + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: true + + /from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: true + + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: true + + /fs-exists-sync@0.1.0: + resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} + engines: {node: '>=0.10.0'} + dev: true + + /fs-extra@0.30.0: + resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 2.4.0 + klaw: 1.3.1 + path-is-absolute: 1.0.1 + rimraf: 2.7.1 + dev: true + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra@3.0.1: + resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 3.0.1 + universalify: 0.1.2 + dev: true + + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + + /fs-monkey@1.0.4: + resolution: {integrity: sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==} + + /fs-write-stream-atomic@1.0.10: + resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} + dependencies: + graceful-fs: 4.2.11 + iferr: 0.1.5 + imurmurhash: 0.1.4 + readable-stream: 2.3.8 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + functions-have-names: 1.2.3 + + /functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + /generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + dependencies: + loader-utils: 3.2.1 + dev: true + + /genfun@4.0.1: + resolution: {integrity: sha512-48yv1eDS5Qrz6cbSDBBik0u7jCgC/eA9eZrl9MIN1LfKzFTuGt6EHgr31YM8yT9cjb5BplXb4Iz3VtOYmgt8Jg==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /geojson-vt@3.2.1: + resolution: {integrity: sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==} + dev: false + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-proto: 1.0.1 + has-symbols: 1.0.3 + + /get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stdin@8.0.0: + resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} + engines: {node: '>=10'} + dev: true + + /get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + dev: true + + /get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + dependencies: + pump: 3.0.0 + + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + + /get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: true + + /getnpmregistry@1.0.1: + resolution: {integrity: sha512-OZRQ1RmRC0JduSLlQrHAaBLLrB23D3gaREsMBtM7aV8pxKB3duPs+a7iH7662b8zu1G9H6wiOvZc814g/bcHVg==} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: true + + /getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + dependencies: + assert-plus: 1.0.0 + dev: true + + /gh-pages@3.2.3: + resolution: {integrity: sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 2.6.4 + commander: 2.20.3 + email-addresses: 3.1.0 + filenamify: 4.3.0 + find-cache-dir: 3.3.2 + fs-extra: 8.1.0 + globby: 6.1.0 + dev: true + + /git-branch@1.0.0: + resolution: {integrity: sha512-ZTzuqw5Df8fyLXQWrX6hK+4FpNCdKzMcERlxENEGO5aKcLmG7MAszhrMhluUKNKmOS/JAGijDMQDXDCDw1mE/A==} + engines: {node: '>=0.8'} + dev: true + + /git-config-path@1.0.1: + resolution: {integrity: sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + fs-exists-sync: 0.1.0 + homedir-polyfill: 1.0.3 + dev: true + + /git-hooks-list@1.0.3: + resolution: {integrity: sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ==} + dev: true + + /git-repo-name@0.6.0: + resolution: {integrity: sha512-DF4XxB6H+Te79JA08/QF/IjIv+j+0gF990WlgAX3SXXU2irfqvBc/xxlAIh6eJWYaKz45MrrGVBFS0Qc4bBz5g==} + engines: {node: '>=0.8'} + dependencies: + cwd: 0.9.1 + file-name: 0.1.0 + lazy-cache: 1.0.4 + remote-origin-url: 0.5.3 + dev: true + + /git-up@4.0.5: + resolution: {integrity: sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==} + dependencies: + is-ssh: 1.4.0 + parse-url: 6.0.5 + dev: true + + /git-url-parse@11.6.0: + resolution: {integrity: sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==} + dependencies: + git-up: 4.0.5 + dev: true + + /git-username@0.5.1: + resolution: {integrity: sha512-xjUjrj3i4kup2A3a/ZVZB1Nt0PUX7SU7KeVqIbXPdslT7NbNfyO04JMxBv4gar77JePdS+A6f05jG1Viy6+U1w==} + engines: {node: '>=0.8'} + dependencies: + remote-origin-url: 0.4.0 + dev: true + + /github-slugger@1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + dev: true + + /gl-matrix@3.4.3: + resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} + dev: false + + /gl-vec2@1.3.0: + resolution: {integrity: sha512-YiqaAuNsheWmUV0Sa8k94kBB0D6RWjwZztyO+trEYS8KzJ6OQB/4686gdrf59wld4hHFIvaxynO3nRxpk1Ij/A==} + dev: false + + /glamor@2.20.40: + resolution: {integrity: sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==} + dependencies: + fbjs: 0.8.18 + inline-style-prefixer: 3.0.8 + object-assign: 4.1.1 + prop-types: 15.8.1 + through: 2.3.8 + dev: false + + /glamorous@4.13.1(glamor@2.20.40): + resolution: {integrity: sha512-x9yCGlRrPEkHF63m+WoZXHnpSet5ipS/fxczx5ic0ZKPPd2mMDyCZ0iEhse49OFlag0yxbJTc7k/L0g1GCmCYQ==} + peerDependencies: + glamor: '>=2' + dependencies: + brcast: 3.0.2 + csstype: 2.6.21 + fast-memoize: 2.5.2 + glamor: 2.20.40 + html-tag-names: 1.1.5 + is-function: 1.0.2 + is-plain-object: 2.0.4 + react-html-attributes: 1.4.6 + svg-tag-names: 1.1.2 + dev: false + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + /glob@10.3.4: + resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.3 + minimatch: 9.0.3 + minipass: 7.0.3 + path-scurry: 1.10.1 + dev: true + + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + + /global-dirs@0.1.1: + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} + engines: {node: '>=4'} + dependencies: + ini: 1.3.8 + dev: true + + /global-modules@0.2.3: + resolution: {integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==} + engines: {node: '>=0.10.0'} + dependencies: + global-prefix: 0.1.5 + is-windows: 0.2.0 + dev: true + + /global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + + /global-prefix@0.1.5: + resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==} + engines: {node: '>=0.10.0'} + dependencies: + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 0.2.0 + which: 1.3.1 + dev: true + + /global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + /global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + dependencies: + min-document: 2.19.0 + process: 0.11.10 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + + /globby@10.0.0: + resolution: {integrity: sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==} + engines: {node: '>=8'} + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + glob: 7.2.3 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby@10.0.2: + resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} + engines: {node: '>=8'} + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + glob: 7.2.3 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + + /globby@6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + + /globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + dev: true + + /gonzales-pe@4.3.0: + resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} + engines: {node: '>=0.6.0'} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.1 + + /got@6.7.1: + resolution: {integrity: sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==} + engines: {node: '>=4'} + dependencies: + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.0 + create-error-class: 3.0.2 + duplexer3: 0.1.5 + get-stream: 3.0.0 + is-redirect: 1.0.0 + is-retry-allowed: 1.2.0 + is-stream: 1.1.0 + lowercase-keys: 1.0.1 + safe-buffer: 5.2.1 + timed-out: 4.0.1 + unzip-response: 2.0.1 + url-parse-lax: 1.0.0 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + /graphlib@2.1.8: + resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} + dependencies: + lodash: 4.17.21 + dev: false + + /grid-index@1.1.0: + resolution: {integrity: sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==} + dev: false + + /growl@1.10.5: + resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} + engines: {node: '>=4.x'} + dev: true + + /growly@1.3.0: + resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} + requiresBuild: true + dev: true + optional: true + + /gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + + /hammerjs@2.0.8: + resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==} + engines: {node: '>=0.8.0'} + dev: false + + /handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: true + + /har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + dev: true + + /har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: true + + /hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true + + /harmony-reflect@1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + dev: true + + /has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: false + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + /has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + dev: false + + /has-flag@2.0.0: + resolution: {integrity: sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==} + engines: {node: '>=0.10.0'} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.1 + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + + /has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: true + + /has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: true + + /has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + dev: true + + /has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: true + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + /hast-to-hyperscript@9.0.1: + resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} + dependencies: + '@types/unist': 2.0.8 + comma-separated-tokens: 1.0.8 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + style-to-object: 0.3.0 + unist-util-is: 4.1.0 + web-namespaces: 1.1.4 + dev: true + + /hast-util-from-dom@3.0.0: + resolution: {integrity: sha512-4vQuGiD5Y/wlD7fZiY4mZML/6oh0GOnH38UNyeDFcSTE4AHF0zjKHZfbd+ekVwPvsZXRl8choc99INHUwSPJlg==} + dependencies: + hastscript: 6.0.0 + web-namespaces: 1.1.4 + dev: true + + /hast-util-from-parse5@6.0.1: + resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} + dependencies: + '@types/parse5': 5.0.3 + hastscript: 6.0.0 + property-information: 5.6.0 + vfile: 4.2.1 + vfile-location: 3.2.0 + web-namespaces: 1.1.4 + dev: true + + /hast-util-has-property@1.0.4: + resolution: {integrity: sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==} + dev: true + + /hast-util-is-conditional-comment@1.0.4: + resolution: {integrity: sha512-rtULxWWknVeSuU/vsJ9tHo+M3ExyaOrZcWvLxqY2nUfCHbDcq60EJzSJC5zNm6ZlbxbJ8l7Ej8C1Kzsi5PJS1A==} + dev: true + + /hast-util-is-element@1.1.0: + resolution: {integrity: sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==} + dev: true + + /hast-util-parse-selector@2.2.5: + resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} + + /hast-util-raw@6.1.0: + resolution: {integrity: sha512-5FoZLDHBpka20OlZZ4I/+RBw5piVQ8iI1doEvffQhx5CbCyTtP8UCq8Tw6NmTAMtXgsQxmhW7Ly8OdFre5/YMQ==} + dependencies: + '@types/hast': 2.3.5 + hast-util-from-parse5: 6.0.1 + hast-util-to-parse5: 6.0.0 + html-void-elements: 1.0.5 + parse5: 6.0.1 + unist-util-position: 3.1.0 + unist-util-visit: 2.0.3 + vfile: 4.2.1 + web-namespaces: 1.1.4 + xtend: 4.0.2 + zwitch: 1.0.5 + dev: true + + /hast-util-to-html@7.1.3: + resolution: {integrity: sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==} + dependencies: + ccount: 1.1.0 + comma-separated-tokens: 1.0.8 + hast-util-is-element: 1.1.0 + hast-util-whitespace: 1.0.4 + html-void-elements: 1.0.5 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + stringify-entities: 3.1.0 + unist-util-is: 4.1.0 + xtend: 4.0.2 + dev: true + + /hast-util-to-parse5@6.0.0: + resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} + dependencies: + hast-to-hyperscript: 9.0.1 + property-information: 5.6.0 + web-namespaces: 1.1.4 + xtend: 4.0.2 + zwitch: 1.0.5 + dev: true + + /hast-util-to-string@1.0.4: + resolution: {integrity: sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==} + dev: true + + /hast-util-to-text@2.0.1: + resolution: {integrity: sha512-8nsgCARfs6VkwH2jJU9b8LNTuR4700na+0h3PqCaEk4MAnMDeu5P0tP8mjk9LLNGxIeQRLbiDbZVw6rku+pYsQ==} + dependencies: + hast-util-is-element: 1.1.0 + repeat-string: 1.6.1 + unist-util-find-after: 3.0.0 + dev: true + + /hast-util-whitespace@1.0.4: + resolution: {integrity: sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==} + dev: true + + /hastscript@6.0.0: + resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} + dependencies: + '@types/hast': 2.3.5 + comma-separated-tokens: 1.0.8 + hast-util-parse-selector: 2.2.5 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + dev: false + + /history-with-query@4.10.4: + resolution: {integrity: sha512-JnskQK8X+PbRFHSdDAExhoJyhLnlLZL+UuHQuQhys+Se9/ukRDRBWU4JVTjsiIfbv1fcEmR3oqKW56OYmk5M5w==} + dependencies: + '@babel/runtime': 7.22.15 + loose-envify: 1.4.0 + query-string: 6.14.1 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + + /history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + dependencies: + '@babel/runtime': 7.22.15 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + /hoist-non-react-statics@1.2.0: + resolution: {integrity: sha512-r8huvKK+m+VraiRipdZYc+U4XW43j6OFG/oIafe7GfDbRpCduRoX9JI/DRxqgtBSCeL+et6N6ibZoedHS2NyOQ==} + dev: false + + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + + /homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + dependencies: + parse-passwd: 1.0.0 + dev: true + + /hoopy@0.1.4: + resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==} + engines: {node: '>= 6.0.0'} + dev: true + + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /hosted-git-info@3.0.8: + resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /hotkeys-js@3.12.0: + resolution: {integrity: sha512-Z+N573ycUKIGwFYS3ID1RzMJiGmtWMGKMiaNLyJS8B1ei+MllF4ZYmKS2T0kMWBktOz+WZLVNikftEgnukOrXg==} + dev: false + + /hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + dev: true + + /html-element-attributes@1.3.1: + resolution: {integrity: sha512-UrRKgp5sQmRnDy4TEwAUsu14XBUlzKB8U3hjIYDjcZ3Hbp86Jtftzxfgrv6E/ii/h78tsaZwAnAE8HwnHr0dPA==} + dev: false + + /html-encoding-sniffer@2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + dependencies: + whatwg-encoding: 1.0.5 + dev: true + + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + dev: true + + /html-entities@2.4.0: + resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.2 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.19.4 + dev: true + + /html-tag-names@1.1.5: + resolution: {integrity: sha512-aI5tKwNTBzOZApHIynaAwecLBv8TlZTEy/P4Sj2SzzAhBrGuI8yGZ0UIXVPQzOHGS+to2mjb04iy6VWt/8+d8A==} + dev: false + + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + dev: true + + /html-void-elements@1.0.5: + resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} + dev: true + + /html-webpack-plugin@5.5.3(webpack@5.88.2): + resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} + engines: {node: '>=10.13.0'} + peerDependencies: + webpack: ^5.20.0 + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + webpack: 5.88.2 + dev: true + + /htmlparser2@3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + dev: true + + /http-cache-semantics@3.8.1: + resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} + dev: true + + /http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: true + + /http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: true + + /http-proxy-agent@2.1.0: + resolution: {integrity: sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==} + engines: {node: '>= 4.5.0'} + dependencies: + agent-base: 4.3.0 + debug: 3.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy-middleware@2.0.6(@types/express@4.17.17): + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/express': 4.17.17 + '@types/http-proxy': 1.17.11 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + transitivePeerDependencies: + - debug + dev: true + + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.2 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: true + + /http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.17.0 + dev: true + + /https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + + /https-proxy-agent@2.2.4: + resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} + engines: {node: '>= 4.5.0'} + dependencies: + agent-base: 4.3.0 + debug: 3.2.7 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@4.0.0: + resolution: {integrity: sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==} + engines: {node: '>= 6.0.0'} + dependencies: + agent-base: 5.1.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + dependencies: + ms: 2.1.3 + dev: true + + /humps@2.0.1: + resolution: {integrity: sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==} + dev: true + + /hyphenate-style-name@1.0.4: + resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} + dev: false + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /icss-replace-symbols@1.1.0: + resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} + dev: true + + /icss-utils@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.29 + dev: true + + /idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + dev: true + + /identity-obj-proxy@3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} + dependencies: + harmony-reflect: 1.6.2 + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + /iferr@0.1.5: + resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} + dev: true + + /ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + /image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /image-size@0.8.3: + resolution: {integrity: sha512-SMtq1AJ+aqHB45c3FsB4ERK0UCiA2d3H1uq8s+8T0Pf8A3W4teyBQyaFaktH6xvZqh+npwlKU7i4fJo0r7TYTg==} + engines: {node: '>=6.9.0'} + hasBin: true + dependencies: + queue: 6.0.1 + dev: true + + /immer@7.0.15: + resolution: {integrity: sha512-yM7jo9+hvYgvdCQdqvhCNRRio0SCXc8xDPzA25SvKWa7b1WVPjLwQs1VYU5JPXjcJPTqAa5NP5dqpORGYBQ2AA==} + dev: true + + /immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + + /immutable@3.7.6: + resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} + engines: {node: '>=0.8.0'} + + /immutable@3.8.2: + resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} + engines: {node: '>=0.10.0'} + dev: true + + /import-cwd@2.1.0: + resolution: {integrity: sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==} + engines: {node: '>=4'} + dependencies: + import-from: 2.1.0 + + /import-cwd@3.0.0: + resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} + engines: {node: '>=8'} + dependencies: + import-from: 3.0.0 + dev: true + + /import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-from@2.1.0: + resolution: {integrity: sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==} + engines: {node: '>=4'} + dependencies: + resolve-from: 3.0.0 + + /import-from@3.0.0: + resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /import-lazy@2.1.0: + resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} + engines: {node: '>=4'} + dev: true + + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /import-modules@2.1.0: + resolution: {integrity: sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==} + engines: {node: '>=8'} + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /indexes-of@1.0.1: + resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + /inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: true + + /inline-style-prefixer@3.0.8: + resolution: {integrity: sha512-ne8XIyyqkRaNJ1JfL1NYzNdCNxq+MCBQhC8NgOQlzNm2vv3XxlP0VSLQUbSRCF6KPEoveCVEpayHoHzcMyZsMQ==} + dependencies: + bowser: 1.9.4 + css-in-js-utils: 2.0.1 + dev: false + + /inline-style-prefixer@4.0.2: + resolution: {integrity: sha512-N8nVhwfYga9MiV9jWlwfdj1UDIaZlBFu4cJSJkIr7tZX7sHpHhGR5su1qdpW+7KPL8ISTvCIkcaFi/JdBknvPg==} + dependencies: + bowser: 1.9.4 + css-in-js-utils: 2.0.1 + dev: false + + /inline-style-prefixer@6.0.4: + resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} + dependencies: + css-in-js-utils: 3.1.0 + fast-loops: 1.1.3 + dev: false + + /inquirer@6.5.2: + resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} + engines: {node: '>=6.0.0'} + dependencies: + ansi-escapes: 3.2.0 + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-width: 2.2.1 + external-editor: 3.1.0 + figures: 2.0.0 + lodash: 4.17.21 + mute-stream: 0.0.7 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 2.1.1 + strip-ansi: 5.2.0 + through: 2.3.8 + dev: true + + /insert-css@2.0.0: + resolution: {integrity: sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA==} + dev: false + + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + side-channel: 1.0.4 + + /intersection-observer@0.12.2: + resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} + dev: false + + /intl-format-cache@4.3.1: + resolution: {integrity: sha512-OEUYNA7D06agqPOYhbTkl0T8HA3QKSuwWh1HiClEnpd9vw7N+3XsQt5iZ0GUEchp5CW1fQk/tary+NsbF3yQ1Q==} + dev: true + + /intl-messageformat-parser@3.6.4: + resolution: {integrity: sha512-RgPGwue0mJtoX2Ax8EmMzJzttxjnva7gx0Q7mKJ4oALrTZvtmCeAw5Msz2PcjW4dtCh/h7vN/8GJCxZO1uv+OA==} + deprecated: We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser + dependencies: + '@formatjs/intl-unified-numberformat': 3.3.7 + dev: true + + /intl-messageformat@7.8.4: + resolution: {integrity: sha512-yS0cLESCKCYjseCOGXuV4pxJm/buTfyCJ1nzQjryHmSehlptbZbn9fnlk1I9peLopZGGbjj46yHHiTAEZ1qOTA==} + dependencies: + intl-format-cache: 4.3.1 + intl-messageformat-parser: 3.6.4 + dev: true + + /intl-messageformat@9.13.0: + resolution: {integrity: sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==} + dependencies: + '@formatjs/ecma402-abstract': 1.11.4 + '@formatjs/fast-memoize': 1.2.1 + '@formatjs/icu-messageformat-parser': 2.1.0 + tslib: 2.6.2 + dev: true + + /intl@1.2.5: + resolution: {integrity: sha512-rK0KcPHeBFBcqsErKSpvZnrOmWOj+EmDkyJ57e90YWaQNqbcivcqmKDlHEeNprDWOsKzPsh1BfSpPQdDvclHVw==} + dev: true + + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + + /inversify-inject-decorators@3.1.0: + resolution: {integrity: sha512-/seBlVp5bXrLQS3DpKEmlgeZL6C7Tf/QITd+IMQrbBBGuCbxb7k3hRAWu9XSreNpFzLgSboz3sClLSEmGwHphw==} + dev: false + + /inversify@5.1.1: + resolution: {integrity: sha512-j8grHGDzv1v+8T1sAQ+3boTCntFPfvxLCkNcxB1J8qA0lUN+fAlSyYd+RXKvaPRL4AGyPxViutBEJHNXOyUdFQ==} + dev: false + + /invert-kv@3.0.1: + resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} + engines: {node: '>=8'} + dev: true + + /ip@1.1.8: + resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} + dev: true + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true + + /ipaddr.js@2.1.0: + resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + engines: {node: '>= 10'} + dev: true + + /irregular-plurals@3.5.0: + resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} + engines: {node: '>=8'} + dev: true + + /is-accessor-descriptor@0.1.6: + resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-accessor-descriptor@1.0.0: + resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: true + + /is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + + /is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + + /is-any-array@2.0.1: + resolution: {integrity: sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==} + dev: false + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: true + + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + /is-ci@1.2.1: + resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==} + hasBin: true + dependencies: + ci-info: 1.6.0 + dev: true + + /is-ci@2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true + dependencies: + ci-info: 2.0.0 + dev: true + + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + dependencies: + has: 1.0.3 + + /is-data-descriptor@0.1.4: + resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-data-descriptor@1.0.0: + resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + + /is-descriptor@0.1.6: + resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + dev: true + + /is-descriptor@1.0.2: + resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + dev: true + + /is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: true + + /is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + dev: false + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + + /is-installed-globally@0.1.0: + resolution: {integrity: sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==} + engines: {node: '>=4'} + dependencies: + global-dirs: 0.1.1 + is-path-inside: 1.0.1 + dev: true + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + /is-npm@1.0.0: + resolution: {integrity: sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-path-inside@1.0.1: + resolution: {integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==} + engines: {node: '>=0.10.0'} + dependencies: + path-is-inside: 1.0.2 + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: true + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: false + + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-redirect@1.0.0: + resolution: {integrity: sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==} + engines: {node: '>=0.10.0'} + dev: true + + /is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 1.0.1 + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-regexp@2.1.0: + resolution: {integrity: sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==} + engines: {node: '>=6'} + dev: true + + /is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-root@2.1.0: + resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} + engines: {node: '>=6'} + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + + /is-ssh@1.4.0: + resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} + dependencies: + protocols: 2.0.1 + dev: true + + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.11 + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + dev: true + + /is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + dev: true + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + dev: true + + /is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + + /is-windows@0.2.0: + resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==} + engines: {node: '>=0.10.0'} + dev: true + + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + + /isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + /isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + dependencies: + isarray: 1.0.0 + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + /isomorphic-fetch@2.2.1: + resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} + dependencies: + node-fetch: 1.7.3 + whatwg-fetch: 3.6.19 + + /isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: true + + /istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@4.0.3: + resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.18.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.22.17 + '@babel/parser': 7.22.16 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /istextorbinary@2.6.0: + resolution: {integrity: sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA==} + engines: {node: '>=0.12'} + dependencies: + binaryextensions: 2.3.0 + editions: 2.3.1 + textextensions: 2.6.0 + dev: true + + /iterator.prototype@1.1.1: + resolution: {integrity: sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + dev: true + + /jackspeak@2.3.3: + resolution: {integrity: sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.4 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + + /javascript-stringify@2.1.0: + resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} + + /jest-changed-files@26.6.2: + resolution: {integrity: sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + execa: 4.1.0 + throat: 5.0.0 + dev: true + + /jest-changed-files@27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + execa: 5.1.1 + throat: 6.0.2 + dev: true + + /jest-circus@27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-cli@26.6.3: + resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/core': 26.6.3 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + is-ci: 2.0.0 + jest-config: 26.6.3 + jest-util: 26.6.2 + jest-validate: 26.6.2 + prompts: 2.4.2 + yargs: 15.4.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-cli@27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-config@26.6.3: + resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} + engines: {node: '>= 10.14.2'} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@jest/test-sequencer': 26.6.3 + '@jest/types': 26.6.2 + babel-jest: 26.6.3(@babel/core@7.18.6) + chalk: 4.1.2 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-environment-jsdom: 26.6.2 + jest-environment-node: 26.6.2 + jest-get-type: 26.3.0 + jest-jasmine2: 26.6.3 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + micromatch: 4.0.5 + pretty-format: 26.6.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-config@27.5.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + '@babel/core': 7.22.17 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1(@babel/core@7.22.17) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-diff@26.6.2: + resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} + engines: {node: '>= 10.14.2'} + dependencies: + chalk: 4.1.2 + diff-sequences: 26.6.2 + jest-get-type: 26.3.0 + pretty-format: 26.6.2 + dev: true + + /jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + dev: true + + /jest-docblock@26.0.0: + resolution: {integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==} + engines: {node: '>= 10.14.2'} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-docblock@27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@26.6.2: + resolution: {integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + chalk: 4.1.2 + jest-get-type: 26.3.0 + jest-util: 26.6.2 + pretty-format: 26.6.2 + dev: true + + /jest-each@27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + dev: true + + /jest-environment-jsdom@26.6.2: + resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 16.18.50 + jest-mock: 26.6.2 + jest-util: 26.6.2 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-environment-jsdom@27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + jest-mock: 27.5.1 + jest-util: 27.5.1 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-environment-node@26.6.2: + resolution: {integrity: sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 16.18.50 + jest-mock: 26.6.2 + jest-util: 26.6.2 + dev: true + + /jest-environment-node@27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + jest-mock: 27.5.1 + jest-util: 27.5.1 + dev: true + + /jest-get-type@26.3.0: + resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} + engines: {node: '>= 10.14.2'} + dev: true + + /jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dev: true + + /jest-haste-map@26.6.2: + resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@types/graceful-fs': 4.1.6 + '@types/node': 16.18.50 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 26.0.0 + jest-serializer: 26.6.2 + jest-util: 26.6.2 + jest-worker: 26.6.2 + micromatch: 4.0.5 + sane: 4.1.0 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-haste-map@27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/graceful-fs': 4.1.6 + '@types/node': 16.18.50 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /jest-jasmine2@26.6.3: + resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/traverse': 7.22.17 + '@jest/environment': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 16.18.50 + chalk: 4.1.2 + co: 4.6.0 + expect: 26.6.2 + is-generator-fn: 2.1.0 + jest-each: 26.6.2 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-runtime: 26.6.3 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + pretty-format: 26.6.2 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-jasmine2@27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + chalk: 4.1.2 + co: 4.6.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-leak-detector@26.6.2: + resolution: {integrity: sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==} + engines: {node: '>= 10.14.2'} + dependencies: + jest-get-type: 26.3.0 + pretty-format: 26.6.2 + dev: true + + /jest-leak-detector@27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + dev: true + + /jest-matcher-utils@26.6.2: + resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} + engines: {node: '>= 10.14.2'} + dependencies: + chalk: 4.1.2 + jest-diff: 26.6.2 + jest-get-type: 26.3.0 + pretty-format: 26.6.2 + dev: true + + /jest-matcher-utils@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + dev: true + + /jest-message-util@26.6.2: + resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/code-frame': 7.22.13 + '@jest/types': 26.6.2 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 26.6.2 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-message-util@27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/code-frame': 7.22.13 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-message-util@28.1.3: + resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/code-frame': 7.22.13 + '@jest/types': 28.1.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 28.1.3 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@26.6.2: + resolution: {integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@types/node': 16.18.50 + dev: true + + /jest-mock@27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@26.6.2): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 26.6.2 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 27.5.1 + dev: true + + /jest-regex-util@26.0.0: + resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} + engines: {node: '>= 10.14.2'} + dev: true + + /jest-regex-util@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dev: true + + /jest-regex-util@28.0.2: + resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + + /jest-resolve-dependencies@26.6.3: + resolution: {integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + jest-regex-util: 26.0.0 + jest-snapshot: 26.6.2 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve-dependencies@27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + jest-regex-util: 27.5.1 + jest-snapshot: 27.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@26.6.2: + resolution: {integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-pnp-resolver: 1.2.3(jest-resolve@26.6.2) + jest-util: 26.6.2 + read-pkg-up: 7.0.1 + resolve: 1.22.4 + slash: 3.0.0 + dev: true + + /jest-resolve@27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + resolve: 1.22.4 + resolve.exports: 1.1.1 + slash: 3.0.0 + dev: true + + /jest-runner@26.6.3: + resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 16.18.50 + chalk: 4.1.2 + emittery: 0.7.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 26.6.3 + jest-docblock: 26.0.0 + jest-haste-map: 26.6.2 + jest-leak-detector: 26.6.2 + jest-message-util: 26.6.2 + jest-resolve: 26.6.2 + jest-runtime: 26.6.3 + jest-util: 26.6.2 + jest-worker: 26.6.2 + source-map-support: 0.5.21 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-runner@27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/console': 27.5.1 + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + chalk: 4.1.2 + emittery: 0.8.1 + graceful-fs: 4.2.11 + jest-docblock: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-haste-map: 27.5.1 + jest-leak-detector: 27.5.1 + jest-message-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runtime: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + source-map-support: 0.5.21 + throat: 6.0.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-runtime@26.6.3: + resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/globals': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/yargs': 15.0.15 + chalk: 4.1.2 + cjs-module-lexer: 0.6.0 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-config: 26.6.3 + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-mock: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + slash: 3.0.0 + strip-bom: 4.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-runtime@27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/globals': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-serializer@26.6.2: + resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/node': 16.18.50 + graceful-fs: 4.2.11 + dev: true + + /jest-serializer@27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/node': 16.18.50 + graceful-fs: 4.2.11 + dev: true + + /jest-snapshot@26.6.2: + resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/types': 7.22.17 + '@jest/types': 26.6.2 + '@types/babel__traverse': 7.20.1 + '@types/prettier': 2.7.3 + chalk: 4.1.2 + expect: 26.6.2 + graceful-fs: 4.2.11 + jest-diff: 26.6.2 + jest-get-type: 26.3.0 + jest-haste-map: 26.6.2 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-resolve: 26.6.2 + natural-compare: 1.4.0 + pretty-format: 26.6.2 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/core': 7.22.17 + '@babel/generator': 7.22.15 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.17) + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.20.1 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.17) + chalk: 4.1.2 + expect: 27.5.1 + graceful-fs: 4.2.11 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + jest-haste-map: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + natural-compare: 1.4.0 + pretty-format: 27.5.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@26.6.2: + resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@types/node': 16.18.50 + chalk: 4.1.2 + graceful-fs: 4.2.11 + is-ci: 2.0.0 + micromatch: 4.0.5 + dev: true + + /jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-util@28.1.3: + resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/node': 16.18.50 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@26.6.2: + resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 26.3.0 + leven: 3.1.0 + pretty-format: 26.6.2 + dev: true + + /jest-validate@27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 27.5.1 + leven: 3.1.0 + pretty-format: 27.5.1 + dev: true + + /jest-watch-typeahead@1.1.0(jest@27.5.1): + resolution: {integrity: sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + jest: ^27.0.0 || ^28.0.0 + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest: 27.5.1 + jest-regex-util: 28.0.2 + jest-watcher: 28.1.3 + slash: 4.0.0 + string-length: 5.0.1 + strip-ansi: 7.1.0 + dev: true + + /jest-watcher@26.6.2: + resolution: {integrity: sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 16.18.50 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 26.6.2 + string-length: 4.0.2 + dev: true + + /jest-watcher@27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.50 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 27.5.1 + string-length: 4.0.2 + dev: true + + /jest-watcher@28.1.3: + resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 16.18.50 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.10.2 + jest-util: 28.1.3 + string-length: 4.0.2 + dev: true + + /jest-worker@24.9.0: + resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} + engines: {node: '>= 6'} + dependencies: + merge-stream: 2.0.0 + supports-color: 6.1.0 + + /jest-worker@26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 16.18.50 + merge-stream: 2.0.0 + supports-color: 7.2.0 + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 16.18.50 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + /jest-worker@28.1.3: + resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@types/node': 16.18.50 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@26.6.3: + resolution: {integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/core': 26.6.3 + import-local: 3.1.0 + jest-cli: 26.6.3 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest@27.5.1: + resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 27.5.1 + import-local: 3.1.0 + jest-cli: 27.5.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jiti@1.20.0: + resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} + hasBin: true + dev: true + + /joycon@2.2.5: + resolution: {integrity: sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ==} + engines: {node: '>=6'} + dev: true + + /jquery-mousewheel@3.1.13: + resolution: {integrity: sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==} + dev: false + + /jquery@3.7.1: + resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} + dev: false + + /js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: true + + /jsdom-global@3.0.2(jsdom@22.1.0): + resolution: {integrity: sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==} + peerDependencies: + jsdom: '>=10.0.0' + dependencies: + jsdom: 22.1.0 + dev: true + + /jsdom@16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.10.0 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.4.3 + domexception: 2.0.1 + escodegen: 2.1.0 + form-data: 3.0.1 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.9 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsdom@22.1.0: + resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} + engines: {node: '>=16'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + cssstyle: 3.0.0 + data-urls: 4.0.0 + decimal.js: 10.4.3 + domexception: 4.0.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + ws: 8.14.1 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsencrypt@3.3.2: + resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==} + dev: false + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + /json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /json2module@0.0.3: + resolution: {integrity: sha512-qYGxqrRrt4GbB8IEOy1jJGypkNsjWoIMlZt4bAsmUScCA507Hbc2p1JOhBzqn45u3PWafUgH2OnzyNU7udO/GA==} + hasBin: true + dependencies: + rw: 1.3.3 + dev: false + + /json2mq@0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + dependencies: + string-convert: 0.2.1 + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + /jsonfile@2.4.0: + resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@3.0.1: + resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + + /jsonpath@1.1.1: + resolution: {integrity: sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==} + dependencies: + esprima: 1.2.2 + static-eval: 2.0.2 + underscore: 1.12.1 + dev: true + + /jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + dev: true + + /jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.4 + object.values: 1.1.7 + dev: true + + /katex@0.12.0: + resolution: {integrity: sha512-y+8btoc/CK70XqcHqjxiGWBOeIL8upbS0peTPXTvgrh21n1RiWWcIpSWM+4uXq+IAgNh9YYQWdc7LVDPDAEEAg==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: true + + /kdbush@3.0.0: + resolution: {integrity: sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==} + dev: false + + /kebab-case@1.0.2: + resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} + dev: true + + /keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + dependencies: + json-buffer: 3.0.1 + + /kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + + /kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of@5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + /klaw@1.3.1: + resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + /klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + dev: true + + /known-css-properties@0.21.0: + resolution: {integrity: sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==} + dev: true + + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: true + + /language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + dependencies: + language-subtag-registry: 0.3.22 + dev: true + + /latest-version@3.1.0: + resolution: {integrity: sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==} + engines: {node: '>=4'} + dependencies: + package-json: 4.0.1 + dev: true + + /launch-editor@2.6.0: + resolution: {integrity: sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==} + dependencies: + picocolors: 1.0.0 + shell-quote: 1.8.1 + dev: true + + /lazy-cache@1.0.4: + resolution: {integrity: sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==} + engines: {node: '>=0.10.0'} + + /lcid@3.1.1: + resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} + engines: {node: '>=8'} + dependencies: + invert-kv: 3.0.1 + dev: true + + /less-loader@11.1.3(less@4.2.0)(webpack@5.88.2): + resolution: {integrity: sha512-A5b7O8dH9xpxvkosNrP0dFp2i/dISOJa9WwGF3WJflfqIERE2ybxh1BFDj5CovC2+jCE4M354mk90hN6ziXlVw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + dependencies: + less: 4.2.0 + webpack: 5.88.2 + dev: true + + /less@3.13.1: + resolution: {integrity: sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==} + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + tslib: 1.14.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + native-request: 1.1.0 + source-map: 0.6.1 + dev: true + + /less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.6.2 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /lint-staged@10.5.4: + resolution: {integrity: sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==} + hasBin: true + dependencies: + chalk: 4.1.2 + cli-truncate: 2.1.0 + commander: 6.2.1 + cosmiconfig: 7.1.0 + debug: 4.3.4 + dedent: 0.7.0 + enquirer: 2.4.1 + execa: 4.1.0 + listr2: 3.14.0(enquirer@2.4.1) + log-symbols: 4.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + please-upgrade-node: 3.2.0 + string-argv: 0.3.1 + stringify-object: 3.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /listr2@3.14.0(enquirer@2.4.1): + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.20 + enquirer: 2.4.1 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + /loader-utils@1.4.2: + resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} + engines: {node: '>=4.0.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.2 + + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + /loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + /lodash.escape@4.0.1: + resolution: {integrity: sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==} + dev: false + + /lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + dev: false + + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + + /lodash.groupby@4.6.0: + resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==} + dev: true + + /lodash.invokemap@4.6.0: + resolution: {integrity: sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==} + dev: false + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + /lodash.omit@4.5.0: + resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==} + dev: false + + /lodash.pullall@4.2.0: + resolution: {integrity: sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==} + dev: false + + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: true + + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: true + + /lodash.tonumber@4.0.3: + resolution: {integrity: sha512-SY0SwuPOHRwKcCNTdsntPYb+Zddz5mDUIVFABzRMqmAiL41pMeyoQFGxYAw5zdc9NnH4pbJqiqqp5ckfxa+zSA==} + dev: false + + /lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + /lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + dev: false + + /lodash.zip@4.2.0: + resolution: {integrity: sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} + dependencies: + chalk: 2.4.2 + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + + /log4js@1.1.1: + resolution: {integrity: sha512-lYb14ZSs1M/CUFuvy7Zk3VZLDtqrqOaVql9CE0tv8g6/qE1Gfq97XKdltBsjSxxvcJ+t8fAXOnvFxSsms7gGVg==} + engines: {node: '>=0.12'} + deprecated: 1.x is no longer supported. Please upgrade to 6.x or higher. + dependencies: + debug: 2.6.9 + semver: 5.7.2 + streamroller: 0.4.1 + transitivePeerDependencies: + - supports-color + dev: true + + /longest-streak@2.0.4: + resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} + dev: true + + /longest@1.0.1: + resolution: {integrity: sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==} + engines: {node: '>=0.10.0'} + dev: false + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.6.2 + dev: true + + /lowercase-keys@1.0.1: + resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} + engines: {node: '>=0.10.0'} + dev: true + + /lowlight@1.20.0: + resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} + dependencies: + fault: 1.0.4 + highlight.js: 10.7.3 + dev: false + + /lru-cache@10.0.1: + resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true + + /magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /make-dir@1.3.0: + resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: true + + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + pify: 4.0.1 + semver: 5.7.2 + dev: true + optional: true + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.1 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: true + + /make-fetch-happen@2.6.0: + resolution: {integrity: sha512-FFq0lNI0ax+n9IWzWpH8A4JdgYiAp2DDYIZ3rsaav8JDe8I+72CzK6PQW/oom15YDZpV5bYW/9INd6nIJ2ZfZw==} + dependencies: + agentkeepalive: 3.5.2 + cacache: 10.0.4 + http-cache-semantics: 3.8.1 + http-proxy-agent: 2.1.0 + https-proxy-agent: 2.2.4 + lru-cache: 4.1.5 + mississippi: 1.3.1 + node-fetch-npm: 2.0.4 + promise-retry: 1.1.1 + socks-proxy-agent: 3.0.1 + ssri: 5.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /mana-common@0.3.2: + resolution: {integrity: sha512-1oylLR9CcyshQcTiBdM96HxIoaA413eudpo1INiOCwyZE554TDJNUD0zrIjmeBvw8CBAjukzaAHn2gn0hZphIg==} + dev: false + + /mana-syringe@0.2.2: + resolution: {integrity: sha512-Sv5r0/PrQRq4pW+9lDicGsEPzPLkd1PwjTs5zHUV1I293S3alkBNyuSjktVeBploofH8MAMLd4DS2crwct48wg==} + dependencies: + inversify: 5.1.1 + dev: false + + /map-age-cleaner@0.1.3: + resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} + engines: {node: '>=6'} + dependencies: + p-defer: 1.0.0 + dev: true + + /map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: true + + /map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + dependencies: + object-visit: 1.0.1 + dev: true + + /mapbox-gl@1.13.3: + resolution: {integrity: sha512-p8lJFEiqmEQlyv+DQxFAOG/XPWN0Wp7j/Psq93Zywz7qt9CcUKFYDBOoOEKzqe6gudHVJY8/Bhqw6VDpX2lSBg==} + engines: {node: '>=6.4.0'} + dependencies: + '@mapbox/geojson-rewind': 0.5.2 + '@mapbox/geojson-types': 1.0.2 + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/mapbox-gl-supported': 1.5.0(mapbox-gl@1.13.3) + '@mapbox/point-geometry': 0.1.0 + '@mapbox/tiny-sdf': 1.2.5 + '@mapbox/unitbezier': 0.0.0 + '@mapbox/vector-tile': 1.3.1 + '@mapbox/whoots-js': 3.1.0 + csscolorparser: 1.0.3 + earcut: 2.2.4 + geojson-vt: 3.2.1 + gl-matrix: 3.4.3 + grid-index: 1.1.0 + murmurhash-js: 1.0.0 + pbf: 3.2.1 + potpack: 1.0.2 + quickselect: 2.0.0 + rw: 1.3.3 + supercluster: 7.1.5 + tinyqueue: 2.0.3 + vt-pbf: 3.1.3 + dev: false + + /markdown-table@2.0.0: + resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==} + dependencies: + repeat-string: 1.6.1 + dev: true + + /material-colors@1.2.6: + resolution: {integrity: sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==} + dev: false + + /mathjax-full@3.2.2: + resolution: {integrity: sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==} + dependencies: + esm: 3.2.25 + mhchemparser: 4.2.1 + mj-context-menu: 0.6.1 + speech-rule-engine: 4.0.7 + dev: true + + /mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + dev: true + + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + /mdast-util-definitions@4.0.0: + resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} + dependencies: + unist-util-visit: 2.0.3 + dev: true + + /mdast-util-find-and-replace@1.1.1: + resolution: {integrity: sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==} + dependencies: + escape-string-regexp: 4.0.0 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + dev: true + + /mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + dependencies: + '@types/mdast': 3.0.12 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-frontmatter@0.2.0: + resolution: {integrity: sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==} + dependencies: + micromark-extension-frontmatter: 0.2.2 + dev: true + + /mdast-util-gfm-autolink-literal@0.1.3: + resolution: {integrity: sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==} + dependencies: + ccount: 1.1.0 + mdast-util-find-and-replace: 1.1.1 + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-gfm-strikethrough@0.2.3: + resolution: {integrity: sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==} + dependencies: + mdast-util-to-markdown: 0.6.5 + dev: true + + /mdast-util-gfm-table@0.1.6: + resolution: {integrity: sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==} + dependencies: + markdown-table: 2.0.0 + mdast-util-to-markdown: 0.6.5 + dev: true + + /mdast-util-gfm-task-list-item@0.1.6: + resolution: {integrity: sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==} + dependencies: + mdast-util-to-markdown: 0.6.5 + dev: true + + /mdast-util-gfm@0.1.2: + resolution: {integrity: sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==} + dependencies: + mdast-util-gfm-autolink-literal: 0.1.3 + mdast-util-gfm-strikethrough: 0.2.3 + mdast-util-gfm-table: 0.1.6 + mdast-util-gfm-task-list-item: 0.1.6 + mdast-util-to-markdown: 0.6.5 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-math@0.1.2: + resolution: {integrity: sha512-fogAitds+wH+QRas78Yr1TwmQGN4cW/G2WRw5ePuNoJbBSPJCxIOCE8MTzHgWHVSpgkRaPQTgfzXRE1CrwWSlg==} + dependencies: + longest-streak: 2.0.4 + mdast-util-to-markdown: 0.6.5 + repeat-string: 1.6.1 + dev: true + + /mdast-util-to-hast@10.2.0: + resolution: {integrity: sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==} + dependencies: + '@types/mdast': 3.0.12 + '@types/unist': 2.0.8 + mdast-util-definitions: 4.0.0 + mdurl: 1.0.1 + unist-builder: 2.0.3 + unist-util-generated: 1.1.6 + unist-util-position: 3.1.0 + unist-util-visit: 2.0.3 + dev: true + + /mdast-util-to-markdown@0.6.5: + resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==} + dependencies: + '@types/unist': 2.0.8 + longest-streak: 2.0.4 + mdast-util-to-string: 2.0.0 + parse-entities: 2.0.0 + repeat-string: 1.6.1 + zwitch: 1.0.5 + dev: true + + /mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: true + + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + /mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + dev: true + + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true + + /mdn-data@2.0.4: + resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} + dev: true + + /mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: true + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true + + /mem-fs@1.2.0: + resolution: {integrity: sha512-b8g0jWKdl8pM0LqAPdK9i8ERL7nYrzmJfRhxMiWH2uYdfYnb7uXnmwVb0ZGe7xyEl4lj+nLIU3yf4zPUT+XsVQ==} + dependencies: + through2: 3.0.2 + vinyl: 2.2.1 + vinyl-file: 3.0.0 + dev: true + + /mem@5.1.1: + resolution: {integrity: sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==} + engines: {node: '>=8'} + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 2.1.0 + p-is-promise: 2.1.0 + dev: true + + /memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.4 + + /memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + /memory-fs@0.5.0: + resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} + engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} + dependencies: + errno: 0.1.8 + readable-stream: 2.3.8 + dev: true + + /meow@9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + dev: true + + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /mhchemparser@4.2.1: + resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==} + dev: true + + /micromark-extension-frontmatter@0.2.2: + resolution: {integrity: sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==} + dependencies: + fault: 1.0.4 + dev: true + + /micromark-extension-gfm-autolink-literal@0.5.7: + resolution: {integrity: sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==} + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark-extension-gfm-strikethrough@0.6.5: + resolution: {integrity: sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==} + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark-extension-gfm-table@0.4.3: + resolution: {integrity: sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==} + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark-extension-gfm-tagfilter@0.3.0: + resolution: {integrity: sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==} + dev: true + + /micromark-extension-gfm-task-list-item@0.3.3: + resolution: {integrity: sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==} + dependencies: + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark-extension-gfm@0.3.3: + resolution: {integrity: sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==} + dependencies: + micromark: 2.11.4 + micromark-extension-gfm-autolink-literal: 0.5.7 + micromark-extension-gfm-strikethrough: 0.6.5 + micromark-extension-gfm-table: 0.4.3 + micromark-extension-gfm-tagfilter: 0.3.0 + micromark-extension-gfm-task-list-item: 0.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark-extension-math@0.1.2: + resolution: {integrity: sha512-ZJXsT2eVPM8VTmcw0CPSDeyonOn9SziGK3Z+nkf9Vb6xMPeU+4JMEnO6vzDL10562Favw8Vste74f54rxJ/i6Q==} + dependencies: + katex: 0.12.0 + micromark: 2.11.4 + transitivePeerDependencies: + - supports-color + dev: true + + /micromark@2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + dependencies: + debug: 4.3.4 + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mime@1.4.1: + resolution: {integrity: sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==} + hasBin: true + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: true + + /mimer@1.1.0: + resolution: {integrity: sha512-y9dVfy2uiycQvDNiAYW6zp49ZhFlXDMr5wfdOiMbdzGM/0N5LNR6HTUn3un+WUQcM0koaw8FMTG1bt5EnHJdvQ==} + engines: {node: '>= 6.0'} + hasBin: true + dev: true + + /mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + dependencies: + dom-walk: 0.1.2 + dev: true + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /mini-create-react-context@0.4.1(prop-types@15.8.1)(react@16.14.0): + resolution: {integrity: sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + peerDependencies: + prop-types: ^15.0.0 + react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@babel/runtime': 7.22.15 + prop-types: 15.8.1 + react: 16.14.0 + tiny-warning: 1.0.3 + + /mini-create-react-context@0.4.1(prop-types@15.8.1)(react@17.0.2): + resolution: {integrity: sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + peerDependencies: + prop-types: ^15.0.0 + react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@babel/runtime': 7.22.15 + prop-types: 15.8.1 + react: 17.0.2 + tiny-warning: 1.0.3 + dev: true + + /mini-css-extract-plugin@2.7.6(webpack@5.88.2): + resolution: {integrity: sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + schema-utils: 4.2.0 + webpack: 5.88.2 + dev: true + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /minipass@7.0.3: + resolution: {integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /mississippi@1.3.1: + resolution: {integrity: sha512-/6rB8YXFbAtsUVRphIRQqB0+9c7VaPHCjVtvto+JqwVxgz8Zz+I+f68/JgQ+Pb4VlZb2svA9OtdXnHHsZz7ltg==} + dependencies: + concat-stream: 1.6.2 + duplexify: 3.7.1 + end-of-stream: 1.4.4 + flush-write-stream: 1.1.1 + from2: 2.3.0 + parallel-transform: 1.2.0 + pump: 1.0.3 + pumpify: 1.5.1 + stream-each: 1.2.3 + through2: 2.0.5 + dev: true + + /mississippi@2.0.0: + resolution: {integrity: sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==} + engines: {node: '>=4.0.0'} + dependencies: + concat-stream: 1.6.2 + duplexify: 3.7.1 + end-of-stream: 1.4.4 + flush-write-stream: 1.1.1 + from2: 2.3.0 + parallel-transform: 1.2.0 + pump: 2.0.1 + pumpify: 1.5.1 + stream-each: 1.2.3 + through2: 2.0.5 + dev: true + + /mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: true + + /mj-context-menu@0.6.1: + resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==} + dev: true + + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /ml-array-max@1.2.4: + resolution: {integrity: sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==} + dependencies: + is-any-array: 2.0.1 + dev: false + + /ml-array-min@1.2.3: + resolution: {integrity: sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==} + dependencies: + is-any-array: 2.0.1 + dev: false + + /ml-array-rescale@1.3.7: + resolution: {integrity: sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==} + dependencies: + is-any-array: 2.0.1 + ml-array-max: 1.2.4 + ml-array-min: 1.2.3 + dev: false + + /ml-matrix@6.10.4: + resolution: {integrity: sha512-rUyEhfNPzqFsltYwvjNeYQXlYEaVea3KgzcJKJteQUj2WVAGFx9fLNRjtMR9mg2B6bd5buxlmkZmxM4hmO+SKg==} + dependencies: + is-any-array: 2.0.1 + ml-array-rescale: 1.3.7 + dev: false + + /moment@2.29.4: + resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + + /mousetrap@1.6.5: + resolution: {integrity: sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==} + dev: false + + /move-concurrently@1.0.1: + resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} + dependencies: + aproba: 1.2.0 + copy-concurrently: 1.0.5 + fs-write-stream-atomic: 1.0.10 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: true + + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: false + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + dev: true + + /multimap@1.1.0: + resolution: {integrity: sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==} + dev: true + + /multimatch@4.0.0: + resolution: {integrity: sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==} + engines: {node: '>=8'} + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + dev: true + + /murmurhash-js@1.0.0: + resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} + dev: false + + /mute-stream@0.0.7: + resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} + dev: true + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nano-css@5.3.5(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + css-tree: 1.1.3 + csstype: 3.1.2 + fastest-stable-stringify: 2.0.2 + inline-style-prefixer: 6.0.4 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + rtl-css-js: 1.16.1 + sourcemap-codec: 1.4.8 + stacktrace-js: 2.0.2 + stylis: 4.3.0 + dev: false + + /nanoid@2.1.11: + resolution: {integrity: sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==} + dev: true + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /native-request@1.1.0: + resolution: {integrity: sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==} + requiresBuild: true + dev: true + optional: true + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + /needle@3.2.0: + resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==} + engines: {node: '>= 4.4.x'} + hasBin: true + requiresBuild: true + dependencies: + debug: 3.2.7 + iconv-lite: 0.6.3 + sax: 1.2.4 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.6.2 + dev: true + + /node-fetch-npm@2.0.4: + resolution: {integrity: sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==} + engines: {node: '>=4'} + deprecated: This module is not used anymore, npm uses minipass-fetch for its fetch implementation now + dependencies: + encoding: 0.1.13 + json-parse-better-errors: 1.0.2 + safe-buffer: 5.2.1 + dev: true + + /node-fetch@1.7.3: + resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} + dependencies: + encoding: 0.1.13 + is-stream: 1.1.0 + + /node-fetch@2.6.0: + resolution: {integrity: sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==} + engines: {node: 4.x || >=6.0.0} + dev: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: true + + /node-import-ts@1.0.6: + resolution: {integrity: sha512-zm2zxUn5KI+jjDyx80MbrIrLRUwQ3oQYGotgZ+Z6xTSaXoUgIIO7h5mks5c9v4tBBpc+VlIyyq5WkGcdCn7qfA==} + dependencies: + '@types/node': 12.20.55 + import-fresh: 3.3.0 + typescript: 3.9.10 + dev: true + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-libs-browser@2.2.1: + resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} + dependencies: + assert: 1.5.1 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.0 + domain-browser: 1.2.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.8 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.2 + util: 0.11.1 + vm-browserify: 1.1.2 + + /node-notifier@8.0.2: + resolution: {integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==} + requiresBuild: true + dependencies: + growly: 1.3.0 + is-wsl: 2.2.0 + semver: 7.5.4 + shellwords: 0.1.1 + uuid: 8.3.2 + which: 2.0.2 + dev: true + optional: true + + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.4 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.13.0 + semver: 7.5.4 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path@1.0.0: + resolution: {integrity: sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + dependencies: + remove-trailing-separator: 1.1.0 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + /normalize-selector@0.2.0: + resolution: {integrity: sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==} + dev: true + + /normalize-url@1.9.1: + resolution: {integrity: sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==} + engines: {node: '>=4'} + dependencies: + object-assign: 4.1.1 + prepend-http: 1.0.4 + query-string: 4.3.4 + sort-keys: 1.1.2 + + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true + + /normalize.css@7.0.0: + resolution: {integrity: sha512-LYaFZxj2Q1Q9e1VJ0f6laG46Rt5s9URhKyckNaA2vZnL/0gwQHWhM7ALQkp3WBQKM5sXRLQ5Ehrfkp+E/ZiCRg==} + + /npm-package-arg@5.1.2: + resolution: {integrity: sha512-wJBsrf0qpypPT7A0LART18hCdyhpCMxeTtcb0X4IZO2jsP6Om7EHN1d9KSKiqD+KVH030RVNpWS9thk+pb7wzA==} + dependencies: + hosted-git-info: 2.8.9 + osenv: 0.1.5 + semver: 5.7.2 + validate-npm-package-name: 3.0.0 + dev: true + + /npm-pick-manifest@1.0.4: + resolution: {integrity: sha512-MKxNdeyOZysPRTTbHtW0M5Fw38Jo/3ARsoGw5qjCfS+XGjvNB/Gb4qtAZUFmKPM2mVum+eX559eHvKywU856BQ==} + dependencies: + npm-package-arg: 5.1.2 + semver: 5.7.2 + dev: true + + /npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + dependencies: + path-key: 2.0.1 + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nth-check@1.0.2: + resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} + dependencies: + boolbase: 1.0.0 + dev: true + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /num2fraction@1.2.2: + resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} + + /numeral@2.0.6: + resolution: {integrity: sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==} + dev: false + + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true + + /oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: true + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + /object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + + /object.getownpropertydescriptors@2.1.7: + resolution: {integrity: sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==} + engines: {node: '>= 0.8'} + dependencies: + array.prototype.reduce: 1.0.6 + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + safe-array-concat: 1.0.1 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.1 + dev: true + + /object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + + /obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: true + + /omit.js@2.0.2: + resolution: {integrity: sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==} + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + dependencies: + mimic-fn: 1.2.0 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + dependencies: + is-wsl: 1.1.0 + dev: true + + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + /opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + dev: false + + /optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /ora@1.4.0: + resolution: {integrity: sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==} + engines: {node: '>=4'} + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 1.3.1 + log-symbols: 2.2.0 + dev: true + + /ora@3.4.0: + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 2.9.0 + log-symbols: 2.2.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + + /os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: true + + /os-locale@5.0.0: + resolution: {integrity: sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==} + engines: {node: '>=10'} + dependencies: + execa: 4.1.0 + lcid: 3.1.1 + mem: 5.1.1 + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /osenv@0.1.5: + resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} + dependencies: + os-homedir: 1.0.2 + os-tmpdir: 1.0.2 + dev: true + + /p-defer@1.0.0: + resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} + engines: {node: '>=4'} + dev: true + + /p-each-series@2.2.0: + resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} + engines: {node: '>=8'} + dev: true + + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + /p-is-promise@2.1.0: + resolution: {integrity: sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==} + engines: {node: '>=6'} + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + dev: true + + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: true + + /p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + /package-json@4.0.1: + resolution: {integrity: sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==} + engines: {node: '>=4'} + dependencies: + got: 6.7.1 + registry-auth-token: 3.4.0 + registry-url: 3.1.0 + semver: 5.7.2 + dev: true + + /pacote@2.7.38: + resolution: {integrity: sha512-XxHUyHQB7QCVBxoXeVu0yKxT+2PvJucsc0+1E+6f95lMUxEAYERgSAc71ckYXrYr35Ew3xFU/LrhdIK21GQFFA==} + dependencies: + bluebird: 3.7.2 + cacache: 9.3.0 + glob: 7.2.3 + lru-cache: 4.1.5 + make-fetch-happen: 2.6.0 + minimatch: 3.1.2 + mississippi: 1.3.1 + normalize-package-data: 2.5.0 + npm-package-arg: 5.1.2 + npm-pick-manifest: 1.0.4 + osenv: 0.1.5 + promise-inflight: 1.0.1(bluebird@3.7.2) + promise-retry: 1.1.1 + protoduck: 4.0.0 + safe-buffer: 5.2.1 + semver: 5.7.2 + ssri: 4.1.6 + tar-fs: 1.16.3 + tar-stream: 1.6.2 + unique-filename: 1.1.1 + which: 1.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + dev: true + + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + /parallel-transform@1.2.0: + resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} + dependencies: + cyclist: 1.0.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: true + + /param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-asn1@5.1.6: + resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + dependencies: + asn1.js: 5.4.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + + /parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + + /parse-git-config@0.2.0: + resolution: {integrity: sha512-amapZFADOJtHvX2URcRfbzG2OFcW+UAwmdK2kht2N2vsH5Py65VxI5yZTlD2DjmxVhTz6htFoVCxROYUJaYOXQ==} + engines: {node: '>=0.10.0'} + dependencies: + ini: 1.3.8 + dev: true + + /parse-git-config@1.1.1: + resolution: {integrity: sha512-S3LGXJZVSy/hswvbSkfdbKBRVsnqKrVu6j8fcvdtJ4TxosSELyQDsJPuGPXuZ+EyuYuJd3O4uAF8gcISR0OFrQ==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + fs-exists-sync: 0.1.0 + git-config-path: 1.0.1 + ini: 1.3.8 + dev: true + + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.22.13 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + dev: true + + /parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + dev: true + + /parse-path@4.0.4: + resolution: {integrity: sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw==} + dependencies: + is-ssh: 1.4.0 + protocols: 1.4.8 + qs: 6.11.2 + query-string: 6.14.1 + dev: true + + /parse-url@6.0.5: + resolution: {integrity: sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA==} + dependencies: + is-ssh: 1.4.0 + normalize-url: 6.1.0 + parse-path: 4.0.4 + protocols: 1.4.8 + dev: true + + /parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + dev: true + + /path-browserify@0.0.1: + resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} + + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + dev: true + + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.0.1 + minipass: 7.0.3 + dev: true + + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: true + + /path-to-regexp@1.8.0: + resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + dependencies: + isarray: 0.0.1 + + /path-to-regexp@2.4.0: + resolution: {integrity: sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==} + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /pbf@3.2.1: + resolution: {integrity: sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==} + hasBin: true + dependencies: + ieee754: 1.2.1 + resolve-protobuf-schema: 2.1.0 + dev: false + + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + /pdfast@0.2.0: + resolution: {integrity: sha512-cq6TTu6qKSFUHwEahi68k/kqN2mfepjkGrG9Un70cgdRRKLKY6Rf8P8uvP2NvZktaQZNF3YE7agEkLj0vGK9bA==} + dev: false + + /pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: true + + /performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /picocolors@0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + requiresBuild: true + dev: true + optional: true + + /pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + dev: true + + /pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + dependencies: + pinkie: 2.0.4 + dev: true + + /pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + dependencies: + find-up: 3.0.0 + + /please-upgrade-node@3.2.0: + resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} + dependencies: + semver-compare: 1.0.0 + dev: true + + /plur@4.0.0: + resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} + engines: {node: '>=10'} + dependencies: + irregular-plurals: 3.5.0 + dev: true + + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + + /pngjs-image@0.11.7: + resolution: {integrity: sha512-JRyrmT+HXa1/gvdHpebus8TGqKa8WRgcsHz/DDalxRsMhvu6AOA99/enBFjZIPvmXVAzwKR051s80TuE1IiCpg==} + dependencies: + iconv-lite: 0.4.24 + pako: 0.2.9 + pngjs: 2.3.1 + request: 2.88.2 + stream-buffers: 1.0.1 + underscore: 1.7.0 + dev: true + + /pngjs@2.3.1: + resolution: {integrity: sha512-ITNPqvx+SSssNFOgHQzGG87HrqQ0g2nMSHc1jjU5Piq9xJEJ40fiFEPz0S5HSSXxBHrTnhaBHIayTO5aRfk2vw==} + engines: {iojs: '>= 1.0.0', node: '>=0.10.0'} + dev: true + + /polygon-clipping@0.15.3: + resolution: {integrity: sha512-ho0Xx5DLkgxRx/+n4O74XyJ67DcyN3Tu9bGYKsnTukGAW6ssnuak6Mwcyb1wHy9MZc9xsUWqIoiazkZB5weECg==} + dependencies: + splaytree: 3.1.2 + dev: false + + /polyline-miter-util@1.0.1: + resolution: {integrity: sha512-/3u91zz6mBerBZo6qnOJOTjv7EfPhKtsV028jMyj86YpzLRNmCCFfrX7IO9tCEQ2W4x45yc+vKOezjf7u2Nd6Q==} + dependencies: + gl-vec2: 1.3.0 + dev: false + + /polyline-normals@2.0.2: + resolution: {integrity: sha512-dpHrAi61ymhsB4N0XlNb3YpkKJeTFnXBXDWpeH8Ucstq0TUZrCN3YK4Jlgk8ofMWN25lhGC4wnxLMv+TUK8rig==} + dependencies: + polyline-miter-util: 1.0.1 + dev: false + + /posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + dev: true + + /postcss-attribute-case-insensitive@4.0.2: + resolution: {integrity: sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==} + dependencies: + postcss: 7.0.32 + postcss-selector-parser: 6.0.13 + + /postcss-attribute-case-insensitive@5.0.2(postcss@8.4.29): + resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-browser-comments@4.0.0(browserslist@4.21.10)(postcss@8.4.29): + resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==} + engines: {node: '>=8'} + peerDependencies: + browserslist: '>=4' + postcss: '>=8' + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + dev: true + + /postcss-calc@8.2.4(postcss@8.4.29): + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-calc@9.0.1(postcss@8.4.29): + resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-clamp@4.1.0(postcss@8.4.29): + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-functional-notation@2.0.1: + resolution: {integrity: sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + postcss-values-parser: 2.0.1 + + /postcss-color-functional-notation@4.2.4(postcss@8.4.29): + resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-gray@5.0.0: + resolution: {integrity: sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==} + engines: {node: '>=6.0.0'} + dependencies: + '@csstools/convert-colors': 1.4.0 + postcss: 7.0.32 + postcss-values-parser: 2.0.1 + + /postcss-color-hex-alpha@5.0.3: + resolution: {integrity: sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + postcss-values-parser: 2.0.1 + + /postcss-color-hex-alpha@8.0.4(postcss@8.4.29): + resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-mod-function@3.0.3: + resolution: {integrity: sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@csstools/convert-colors': 1.4.0 + postcss: 7.0.32 + postcss-values-parser: 2.0.1 + + /postcss-color-rebeccapurple@4.0.1: + resolution: {integrity: sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + postcss-values-parser: 2.0.1 + + /postcss-color-rebeccapurple@7.1.1(postcss@8.4.29): + resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-colormin@5.3.1(postcss@8.4.29): + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-colormin@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-convert-values@5.1.3(postcss@8.4.29): + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-convert-values@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-media@7.0.8: + resolution: {integrity: sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + + /postcss-custom-media@8.0.2(postcss@8.4.29): + resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-properties@12.1.11(postcss@8.4.29): + resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-properties@8.0.11: + resolution: {integrity: sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + postcss-values-parser: 2.0.1 + + /postcss-custom-selectors@5.1.2: + resolution: {integrity: sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + postcss-selector-parser: 5.0.0 + + /postcss-custom-selectors@6.0.3(postcss@8.4.29): + resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-dir-pseudo-class@5.0.0: + resolution: {integrity: sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==} + engines: {node: '>=4.0.0'} + dependencies: + postcss: 7.0.32 + postcss-selector-parser: 5.0.0 + + /postcss-dir-pseudo-class@6.0.5(postcss@8.4.29): + resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-discard-comments@5.1.2(postcss@8.4.29): + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-discard-comments@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-discard-duplicates@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-discard-duplicates@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-discard-empty@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-discard-empty@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-discard-overridden@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-discard-overridden@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-double-position-gradients@1.0.0: + resolution: {integrity: sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + postcss-values-parser: 2.0.1 + + /postcss-double-position-gradients@3.1.2(postcss@8.4.29): + resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-env-function@2.0.2: + resolution: {integrity: sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + postcss-values-parser: 2.0.1 + + /postcss-env-function@4.0.6(postcss@8.4.29): + resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-flexbugs-fixes@4.2.1: + resolution: {integrity: sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==} + dependencies: + postcss: 7.0.32 + + /postcss-flexbugs-fixes@5.0.2(postcss@8.4.29): + resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} + peerDependencies: + postcss: ^8.1.4 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-focus-visible@4.0.0: + resolution: {integrity: sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + + /postcss-focus-visible@6.0.4(postcss@8.4.29): + resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-focus-within@3.0.0: + resolution: {integrity: sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + + /postcss-focus-within@5.0.4(postcss@8.4.29): + resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-font-variant@4.0.1: + resolution: {integrity: sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==} + dependencies: + postcss: 7.0.32 + + /postcss-font-variant@5.0.0(postcss@8.4.29): + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-gap-properties@2.0.0: + resolution: {integrity: sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + + /postcss-gap-properties@3.0.5(postcss@8.4.29): + resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-html@0.36.0(postcss-syntax@0.36.2)(postcss@7.0.39): + resolution: {integrity: sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==} + peerDependencies: + postcss: '>=5.0.0' + postcss-syntax: '>=0.36.0' + dependencies: + htmlparser2: 3.10.1 + postcss: 7.0.39 + postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39) + dev: true + + /postcss-image-set-function@3.0.1: + resolution: {integrity: sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + postcss-values-parser: 2.0.1 + + /postcss-image-set-function@4.0.7(postcss@8.4.29): + resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-import@15.1.0(postcss@8.4.29): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.4 + dev: true + + /postcss-initial@3.0.4: + resolution: {integrity: sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==} + dependencies: + postcss: 7.0.32 + + /postcss-initial@4.0.1(postcss@8.4.29): + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-js@2.0.3: + resolution: {integrity: sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==} + dependencies: + camelcase-css: 2.0.1 + postcss: 7.0.39 + dev: true + + /postcss-js@4.0.1(postcss@8.4.29): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.29 + dev: true + + /postcss-lab-function@2.0.1: + resolution: {integrity: sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==} + engines: {node: '>=6.0.0'} + dependencies: + '@csstools/convert-colors': 1.4.0 + postcss: 7.0.32 + postcss-values-parser: 2.0.1 + + /postcss-lab-function@4.2.1(postcss@8.4.29): + resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-less@3.1.4: + resolution: {integrity: sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==} + engines: {node: '>=6.14.4'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-less@4.0.1: + resolution: {integrity: sha512-C92S4sHlbDpefJ2QQJjrucCcypq3+KZPstjfuvgOCNnGx0tF9h8hXgAlOIATGAxMXZXaF+nVp+/Mi8pCAWdSmw==} + engines: {node: '>=10'} + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-load-config@2.1.2: + resolution: {integrity: sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==} + engines: {node: '>= 4'} + dependencies: + cosmiconfig: 5.2.1 + import-cwd: 2.1.0 + + /postcss-load-config@3.1.4(postcss@8.4.29): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.29 + yaml: 1.10.2 + dev: true + + /postcss-load-config@4.0.1(postcss@8.4.29): + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.29 + yaml: 2.3.2 + dev: true + + /postcss-loader@3.0.0: + resolution: {integrity: sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==} + engines: {node: '>= 6'} + dependencies: + loader-utils: 1.4.2 + postcss: 7.0.32 + postcss-load-config: 2.1.2 + schema-utils: 1.0.0 + + /postcss-loader@6.2.1(postcss@8.4.29)(webpack@5.88.2): + resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + dependencies: + cosmiconfig: 7.1.0 + klona: 2.0.6 + postcss: 8.4.29 + semver: 7.5.4 + webpack: 5.88.2 + dev: true + + /postcss-logical@3.0.0: + resolution: {integrity: sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + + /postcss-logical@5.0.4(postcss@8.4.29): + resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-media-minmax@4.0.0: + resolution: {integrity: sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + + /postcss-media-minmax@5.0.0(postcss@8.4.29): + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + dev: true + + /postcss-merge-longhand@5.1.7(postcss@8.4.29): + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.29) + dev: true + + /postcss-merge-longhand@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + stylehacks: 6.0.0(postcss@8.4.29) + dev: true + + /postcss-merge-rules@5.1.4(postcss@8.4.29): + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-merge-rules@6.0.1(postcss@8.4.29): + resolution: {integrity: sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + cssnano-utils: 4.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-minify-font-values@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-font-values@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-gradients@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-gradients@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 4.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-params@5.1.4(postcss@8.4.29): + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-params@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + cssnano-utils: 4.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-selectors@5.2.1(postcss@8.4.29): + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-minify-selectors@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-modules-extract-imports@3.0.0(postcss@8.4.29): + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-modules-local-by-default@4.0.3(postcss@8.4.29): + resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-modules-scope@3.0.0(postcss@8.4.29): + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-modules-values@4.0.0(postcss@8.4.29): + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.29) + postcss: 8.4.29 + dev: true + + /postcss-modules@4.3.1(postcss@8.4.29): + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: ^8.0.0 + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.4.29 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.29) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.29) + postcss-modules-scope: 3.0.0(postcss@8.4.29) + postcss-modules-values: 4.0.0(postcss@8.4.29) + string-hash: 1.1.3 + dev: true + + /postcss-modules@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-7DGfnlyi/ju82BRzTIjWS5C4Tafmzl3R79YP/PASiocj+aa6yYphHhhKUOEoXQToId5rgyFgJ88+ccOUydjBXQ==} + peerDependencies: + postcss: ^8.0.0 + dependencies: + generic-names: 4.0.0 + icss-utils: 5.1.0(postcss@8.4.29) + lodash.camelcase: 4.3.0 + postcss: 8.4.29 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.29) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.29) + postcss-modules-scope: 3.0.0(postcss@8.4.29) + postcss-modules-values: 4.0.0(postcss@8.4.29) + string-hash: 1.1.3 + dev: true + + /postcss-nested@6.0.1(postcss@8.4.29): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-nesting@10.2.0(postcss@8.4.29): + resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-nesting@7.0.1: + resolution: {integrity: sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + + /postcss-normalize-charset@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-normalize-charset@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-normalize-display-values@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-display-values@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-positions@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-positions@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-repeat-style@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-string@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-string@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-timing-functions@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-unicode@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-unicode@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-url@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-url@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-whitespace@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-whitespace@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize@10.0.1(browserslist@4.21.10)(postcss@8.4.29): + resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==} + engines: {node: '>= 12'} + peerDependencies: + browserslist: '>= 4' + postcss: '>= 8' + dependencies: + '@csstools/normalize.css': 12.0.0 + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-browser-comments: 4.0.0(browserslist@4.21.10)(postcss@8.4.29) + sanitize.css: 13.0.0 + dev: true + + /postcss-opacity-percentage@1.1.3(postcss@8.4.29): + resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-ordered-values@5.1.3(postcss@8.4.29): + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-ordered-values@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 4.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-overflow-shorthand@2.0.0: + resolution: {integrity: sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + + /postcss-overflow-shorthand@3.0.4(postcss@8.4.29): + resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-page-break@2.0.0: + resolution: {integrity: sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==} + dependencies: + postcss: 7.0.32 + + /postcss-page-break@3.0.4(postcss@8.4.29): + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-place@4.0.1: + resolution: {integrity: sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + postcss-values-parser: 2.0.1 + + /postcss-place@7.0.5(postcss@8.4.29): + resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-preset-env@6.7.0: + resolution: {integrity: sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==} + engines: {node: '>=6.0.0'} + dependencies: + autoprefixer: 9.8.8 + browserslist: 4.21.10 + caniuse-lite: 1.0.30001534 + css-blank-pseudo: 0.1.4 + css-has-pseudo: 0.10.0 + css-prefers-color-scheme: 3.1.1 + cssdb: 4.4.0 + postcss: 7.0.32 + postcss-attribute-case-insensitive: 4.0.2 + postcss-color-functional-notation: 2.0.1 + postcss-color-gray: 5.0.0 + postcss-color-hex-alpha: 5.0.3 + postcss-color-mod-function: 3.0.3 + postcss-color-rebeccapurple: 4.0.1 + postcss-custom-media: 7.0.8 + postcss-custom-properties: 8.0.11 + postcss-custom-selectors: 5.1.2 + postcss-dir-pseudo-class: 5.0.0 + postcss-double-position-gradients: 1.0.0 + postcss-env-function: 2.0.2 + postcss-focus-visible: 4.0.0 + postcss-focus-within: 3.0.0 + postcss-font-variant: 4.0.1 + postcss-gap-properties: 2.0.0 + postcss-image-set-function: 3.0.1 + postcss-initial: 3.0.4 + postcss-lab-function: 2.0.1 + postcss-logical: 3.0.0 + postcss-media-minmax: 4.0.0 + postcss-nesting: 7.0.1 + postcss-overflow-shorthand: 2.0.0 + postcss-page-break: 2.0.0 + postcss-place: 4.0.1 + postcss-pseudo-class-any-link: 6.0.0 + postcss-replace-overflow-wrap: 3.0.0 + postcss-selector-matches: 4.0.0 + postcss-selector-not: 4.0.1 + + /postcss-preset-env@7.8.3(postcss@8.4.29): + resolution: {integrity: sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-cascade-layers': 1.1.1(postcss@8.4.29) + '@csstools/postcss-color-function': 1.1.1(postcss@8.4.29) + '@csstools/postcss-font-format-keywords': 1.0.1(postcss@8.4.29) + '@csstools/postcss-hwb-function': 1.0.2(postcss@8.4.29) + '@csstools/postcss-ic-unit': 1.0.1(postcss@8.4.29) + '@csstools/postcss-is-pseudo-class': 2.0.7(postcss@8.4.29) + '@csstools/postcss-nested-calc': 1.0.0(postcss@8.4.29) + '@csstools/postcss-normalize-display-values': 1.0.1(postcss@8.4.29) + '@csstools/postcss-oklab-function': 1.1.1(postcss@8.4.29) + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.29) + '@csstools/postcss-stepped-value-functions': 1.0.1(postcss@8.4.29) + '@csstools/postcss-text-decoration-shorthand': 1.0.0(postcss@8.4.29) + '@csstools/postcss-trigonometric-functions': 1.0.2(postcss@8.4.29) + '@csstools/postcss-unset-value': 1.0.2(postcss@8.4.29) + autoprefixer: 10.4.15(postcss@8.4.29) + browserslist: 4.21.10 + css-blank-pseudo: 3.0.3(postcss@8.4.29) + css-has-pseudo: 3.0.4(postcss@8.4.29) + css-prefers-color-scheme: 6.0.3(postcss@8.4.29) + cssdb: 7.7.2 + postcss: 8.4.29 + postcss-attribute-case-insensitive: 5.0.2(postcss@8.4.29) + postcss-clamp: 4.1.0(postcss@8.4.29) + postcss-color-functional-notation: 4.2.4(postcss@8.4.29) + postcss-color-hex-alpha: 8.0.4(postcss@8.4.29) + postcss-color-rebeccapurple: 7.1.1(postcss@8.4.29) + postcss-custom-media: 8.0.2(postcss@8.4.29) + postcss-custom-properties: 12.1.11(postcss@8.4.29) + postcss-custom-selectors: 6.0.3(postcss@8.4.29) + postcss-dir-pseudo-class: 6.0.5(postcss@8.4.29) + postcss-double-position-gradients: 3.1.2(postcss@8.4.29) + postcss-env-function: 4.0.6(postcss@8.4.29) + postcss-focus-visible: 6.0.4(postcss@8.4.29) + postcss-focus-within: 5.0.4(postcss@8.4.29) + postcss-font-variant: 5.0.0(postcss@8.4.29) + postcss-gap-properties: 3.0.5(postcss@8.4.29) + postcss-image-set-function: 4.0.7(postcss@8.4.29) + postcss-initial: 4.0.1(postcss@8.4.29) + postcss-lab-function: 4.2.1(postcss@8.4.29) + postcss-logical: 5.0.4(postcss@8.4.29) + postcss-media-minmax: 5.0.0(postcss@8.4.29) + postcss-nesting: 10.2.0(postcss@8.4.29) + postcss-opacity-percentage: 1.1.3(postcss@8.4.29) + postcss-overflow-shorthand: 3.0.4(postcss@8.4.29) + postcss-page-break: 3.0.4(postcss@8.4.29) + postcss-place: 7.0.5(postcss@8.4.29) + postcss-pseudo-class-any-link: 7.1.6(postcss@8.4.29) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.29) + postcss-selector-not: 6.0.1(postcss@8.4.29) + postcss-value-parser: 4.2.0 + dev: true + + /postcss-pseudo-class-any-link@6.0.0: + resolution: {integrity: sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.32 + postcss-selector-parser: 5.0.0 + + /postcss-pseudo-class-any-link@7.1.6(postcss@8.4.29): + resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-reduce-initial@5.1.2(postcss@8.4.29): + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + postcss: 8.4.29 + dev: true + + /postcss-reduce-initial@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + postcss: 8.4.29 + dev: true + + /postcss-reduce-transforms@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-reduce-transforms@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-replace-overflow-wrap@3.0.0: + resolution: {integrity: sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==} + dependencies: + postcss: 7.0.32 + + /postcss-replace-overflow-wrap@4.0.0(postcss@8.4.29): + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-resolve-nested-selector@0.1.1: + resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} + dev: true + + /postcss-safe-parser@4.0.2: + resolution: {integrity: sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + + /postcss-sass@0.4.4: + resolution: {integrity: sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==} + dependencies: + gonzales-pe: 4.3.0 + postcss: 7.0.39 + dev: true + + /postcss-scss@2.1.1: + resolution: {integrity: sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-selector-matches@4.0.0: + resolution: {integrity: sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==} + dependencies: + balanced-match: 1.0.2 + postcss: 7.0.32 + + /postcss-selector-not@4.0.1: + resolution: {integrity: sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==} + dependencies: + balanced-match: 1.0.2 + postcss: 7.0.32 + + /postcss-selector-not@6.0.1(postcss@8.4.29): + resolution: {integrity: sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-selector-parser@5.0.0: + resolution: {integrity: sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 2.0.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + /postcss-sorting@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-bYJ0vgAiGbjCBKi7B07CzsBc9eM84nLEbavUmwNp8rAa+PNyrgdH+6PpnqTtciLuUs99c4rFQQmCaYgeBQYmSQ==} + peerDependencies: + postcss: ^8.0.4 + dependencies: + lodash: 4.17.21 + postcss: 8.4.29 + dev: true + + /postcss-svgo@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + dev: true + + /postcss-svgo@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==} + engines: {node: ^14 || ^16 || >= 18} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + svgo: 3.0.2 + dev: true + + /postcss-syntax@0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39): + resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} + peerDependencies: + postcss: '>=5.0.0' + postcss-html: '*' + postcss-jsx: '*' + postcss-less: '*' + postcss-markdown: '*' + postcss-scss: '*' + peerDependenciesMeta: + postcss-html: + optional: true + postcss-jsx: + optional: true + postcss-less: + optional: true + postcss-markdown: + optional: true + postcss-scss: + optional: true + dependencies: + postcss: 7.0.39 + postcss-html: 0.36.0(postcss-syntax@0.36.2)(postcss@7.0.39) + postcss-less: 3.1.4 + postcss-scss: 2.1.1 + dev: true + + /postcss-unique-selectors@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-unique-selectors@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-value-parser@3.3.1: + resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} + dev: false + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + /postcss-values-parser@2.0.1: + resolution: {integrity: sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==} + engines: {node: '>=6.14.4'} + dependencies: + flatten: 1.0.3 + indexes-of: 1.0.1 + uniq: 1.0.1 + + /postcss@7.0.32: + resolution: {integrity: sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==} + engines: {node: '>=6.0.0'} + dependencies: + chalk: 2.4.2 + source-map: 0.6.1 + supports-color: 6.1.0 + + /postcss@7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + + /postcss@8.4.29: + resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /potpack@1.0.2: + resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==} + dev: false + + /preceptor-core@0.10.1: + resolution: {integrity: sha512-WLDk+UowEESixvlhiamGOj/iqWrp8IWeCCHvBZrLh0g4/A1Fa77fDQWqQUd5S5rScT+9u49aDfa45xYRkxqmiA==} + dependencies: + log4js: 1.1.1 + underscore: 1.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + /prepend-http@1.0.4: + resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} + engines: {node: '>=0.10.0'} + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: false + + /prettier-plugin-packagejson@2.3.0(prettier@2.8.8): + resolution: {integrity: sha512-2SAPMMk1UDkqsB7DifWKcwCm6VC52JXMrzLHfbcQHJRWhRCj9zziOy+s+2XOyPBeyqFqS+A/1IKzOrxKFTo6pw==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + dependencies: + prettier: 2.8.8 + sort-package-json: 1.57.0 + dev: true + + /prettier-plugin-two-style-order@1.0.1(prettier@2.8.8): + resolution: {integrity: sha512-ETltO2FRR/Pxc7bsgz2XwuzWSPwafl7/v5+5Rria4S579CTas7dya+xsmbkix0q1tYQiuRjVVdfGnCKlH/aOuQ==} + peerDependencies: + prettier: '>= 2.0.0' + dependencies: + postcss: 8.4.29 + postcss-less: 4.0.1 + postcss-sorting: 6.0.0(postcss@8.4.29) + prettier: 2.8.8 + dev: true + + /prettier@1.15.3: + resolution: {integrity: sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /prettier@2.2.1: + resolution: {integrity: sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + /prettier@2.3.2: + resolution: {integrity: sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + /pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: true + + /pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + dev: true + + /pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + dev: true + + /pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + dev: true + + /pretty-format@28.1.3: + resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.1.3 + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /prism-react-renderer@1.3.5(react@17.0.2): + resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==} + peerDependencies: + react: '>=0.14.9' + dependencies: + react: 17.0.2 + dev: true + + /prismjs@1.27.0: + resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} + engines: {node: '>=6'} + dev: false + + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + + /pro-download@1.0.1: + resolution: {integrity: sha512-gGqxmwI95zQw4DAdCnis45hR6XFvqBWEYBm7Wp7KFMIPE7raSNYK+I1Nh0O/15GKH4GC77I+KV0uR9CoG3Fkdw==} + dev: true + + /probe.gl@3.6.0: + resolution: {integrity: sha512-19JydJWI7+DtR4feV+pu4Mn1I5TAc0xojuxVgZdXIyfmTLfUaFnk4OloWK1bKbPtkgGKLr2lnbnCXmpZEcEp9g==} + dependencies: + '@babel/runtime': 7.22.15 + '@probe.gl/env': 3.6.0 + '@probe.gl/log': 3.6.0 + '@probe.gl/stats': 3.6.0 + dev: false + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + /promise-inflight@1.0.1(bluebird@3.7.2): + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dependencies: + bluebird: 3.7.2 + dev: true + + /promise-retry@1.1.1: + resolution: {integrity: sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==} + engines: {node: '>=0.12'} + dependencies: + err-code: 1.1.2 + retry: 0.10.1 + dev: true + + /promise.series@0.2.0: + resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} + engines: {node: '>=0.12'} + dev: true + + /promise@6.0.0: + resolution: {integrity: sha512-PjIqIEWR8EWwP5ml3Wf5KWIP3sIdXAew9vQ6vLOLV+z4LMa/8ZQyLd7sTWe2r8OuA8A9jsIYptDfbEn/L36ogw==} + dependencies: + asap: 1.0.0 + dev: true + + /promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + dependencies: + asap: 2.0.6 + + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + dependencies: + asap: 2.0.6 + dev: true + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /property-information@5.6.0: + resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} + dependencies: + xtend: 4.0.2 + + /protocol-buffers-schema@3.6.0: + resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} + dev: false + + /protocols@1.4.8: + resolution: {integrity: sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==} + dev: true + + /protocols@2.0.1: + resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} + dev: true + + /protoduck@4.0.0: + resolution: {integrity: sha512-9sxuz0YTU/68O98xuDn8NBxTVH9EuMhrBTxZdiBL0/qxRmWhB/5a8MagAebDa+98vluAZTs8kMZibCdezbRCeQ==} + dependencies: + genfun: 4.0.1 + dev: true + + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + /prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + requiresBuild: true + dev: true + + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.6 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + /pump@1.0.3: + resolution: {integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + /pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + dev: true + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + /puppeteer-core@1.12.2: + resolution: {integrity: sha512-M+atMV5e+MwJdR+OwQVZ1xqAIwh3Ou4nUxNuf334GwpcLG+LDj5BwIph4J9y8YAViByRtWGL+uF8qX2Ggzb+Fg==} + engines: {node: '>=6.4.0'} + requiresBuild: true + dependencies: + debug: 4.3.4 + extract-zip: 1.7.0 + https-proxy-agent: 2.2.4 + mime: 2.6.0 + progress: 2.0.3 + proxy-from-env: 1.1.0 + rimraf: 2.7.1 + ws: 6.2.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /puppeteer-core@5.5.0: + resolution: {integrity: sha512-tlA+1n+ziW/Db03hVV+bAecDKse8ihFRXYiEypBe9IlLRvOCzYFG6qrCMBYK34HO/Q/Ecjc+tvkHRAfLVH+NgQ==} + engines: {node: '>=10.18.1'} + dependencies: + debug: 4.3.4 + devtools-protocol: 0.0.818844 + extract-zip: 2.0.1 + https-proxy-agent: 4.0.0 + node-fetch: 2.7.0 + pkg-dir: 4.2.0 + progress: 2.0.3 + proxy-from-env: 1.1.0 + rimraf: 3.0.2 + tar-fs: 2.1.1 + unbzip2-stream: 1.4.3 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + dev: true + + /qrcode.react@3.1.0(react@18.2.0): + resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + + /qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: true + + /query-string@4.3.4: + resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==} + engines: {node: '>=0.10.0'} + dependencies: + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + + /query-string@6.14.1: + resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} + engines: {node: '>=6'} + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + /querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + + /querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: false + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /queue@6.0.1: + resolution: {integrity: sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==} + dependencies: + inherits: 2.0.4 + dev: true + + /quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: true + + /quickselect@2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + dev: false + + /raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + dependencies: + performance-now: 2.1.0 + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + + /randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: true + + /raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /rc-align@2.4.5: + resolution: {integrity: sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw==} + dependencies: + babel-runtime: 6.26.0 + dom-align: 1.12.4 + prop-types: 15.8.1 + rc-util: 4.21.1 + dev: true + + /rc-align@4.0.15(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + dom-align: 1.12.4 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + resize-observer-polyfill: 1.5.1 + + /rc-align@4.0.15(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + dom-align: 1.12.4 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + resize-observer-polyfill: 1.5.1 + dev: false + + /rc-animate@2.11.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + css-animation: 1.6.1 + prop-types: 15.8.1 + raf: 3.4.1 + rc-util: 4.21.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-lifecycles-compat: 3.0.4 + dev: true + + /rc-cascader@3.16.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-c62glOhm66T0/Y8vOfIgZwHHTbqCyC7FvBTcNDuwbXZc8Dfbz6fB1yIuCB55z5rPA7nsUfMyNNuS8shReZWM+A==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + array-tree-filter: 2.1.0 + classnames: 2.3.2 + rc-select: 14.8.1(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.10(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-cascader@3.7.3(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-KBpT+kzhxDW+hxPiNk4zaKa99+Lie2/8nnI11XF+FIOPl4Bj9VlFZi61GrnWzhLGA7VEN+dTxAkNOjkySDa0dA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + array-tree-filter: 2.1.0 + classnames: 2.3.2 + rc-select: 14.1.18(react-dom@17.0.2)(react@17.0.2) + rc-tree: 5.7.10(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-checkbox@2.0.3: + resolution: {integrity: sha512-sSDV5AcxK5CxBTyUNj9pb0zfhdgLLsWKHwJG18ikeGoIwklcxXvIF6cI/KGVbPLFDa8mPS5WLOlLRqbq/1/ouw==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + prop-types: 15.8.1 + rc-util: 4.21.1 + dev: true + + /rc-checkbox@3.0.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-k7nxDWxYF+jDI0ZcCvuvj71xONmWRVe5+1MKcERRR9MRyP3tZ69b+yUCSXXh+sik4/Hc9P5wHr2nnUoGS2zBjA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-checkbox@3.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PAwpJFnBa3Ei+5pyqMMXdcKYKNBMS+TvSDiLdDnARnMJHC8ESxwPfm4Ao1gJiKtWLdmGfigascnCpwrHFgoOBQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-collapse@1.9.3(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-8cG+FzudmgFCC9zRGKXJZA36zoI9Dmyjp6UDi8N80sXUch0JOpsZDxgcFzw4HPpPpK/dARtTilEe9zyuspnW0w==} + dependencies: + classnames: 2.3.2 + css-animation: 1.6.1 + prop-types: 15.8.1 + rc-animate: 2.11.1(react-dom@17.0.2)(react@17.0.2) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-collapse@3.4.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-jpTwLgJzkhAgp2Wpi3xmbTbbYExg6fkptL67Uu5LCRVEj6wqmy0DHTjjeynsjOLsppHGHu41t1ELntZ0lEvS/Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + shallowequal: 1.1.0 + + /rc-collapse@3.7.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-N/7ejyiTf3XElNJBBpxqnZBUuMsQWEOPjB2QkfNvZ/Ca54eAvJXuOD1EGbCWCk2m7v/MSxku7mRpdeaLOCd4Gg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-dialog@9.0.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-s3U+24xWUuB6Bn2Lk/Qt6rufy+uT+QvWkiFhNBcO9APLxcFFczWamaq7x9h8SCuhfc1nHcW4y8NbMsnAjNnWyg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/portal': 1.1.2(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-dialog@9.2.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-dL2tklMou/QfK77+0CTH3FTnKCvIiYv9Df7PfFfg8YVXhYAGmuIkV4ooQYHAIR4juL3Ywcm5oQflF2vDDuGlUg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-drawer@6.3.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-uBZVb3xTAR+dBV53d/bUhTctCw3pwcwJoM7g5aX+7vgwt2zzVzoJ6aqFjYJpBlZ9zp0dVYN8fV+hykFE7c4lig==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/portal': 1.1.2(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-drawer@6.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QIbNMjiZy322o9uEpJHsSZ5rS/zuxqam3lYVPDzjztoqsoDzTNNxWN77QVpOfQ0UC9/87+qu25zocJ+O9bK2Tg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-dropdown@3.6.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-Wsw7GkVbUXADEs8FPL0v8gd+3mWQiydPFXBlr2imMScQaf8hh79pG9KrBc1DwK+nqHmYOpQfK2gn6jG2AQw9Pw==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-trigger: 5.3.4(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /rc-dropdown@4.0.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-trigger: 5.3.4(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-dropdown@4.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-field-form@1.34.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-BdciU5C7dBO51/9ZKcMvK2f8zaaO12Lt1eBhlAo8nNv+6htlNcgY9DAkUlZ7gfyWjnCc1Oo4hHIXau1m6tLw1A==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + async-validator: 4.2.5 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-field-form@1.38.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-erYxHL6s382MShbAlP5kquQETqulZII0uJmhjtIwkIGqPowJDrQeoey43notZFhVjeJDtznoJlBzVjiVN99w8g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + async-validator: 4.2.5 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /rc-field-form@1.38.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-erYxHL6s382MShbAlP5kquQETqulZII0uJmhjtIwkIGqPowJDrQeoey43notZFhVjeJDtznoJlBzVjiVN99w8g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + async-validator: 4.2.5 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-gesture@0.0.22: + resolution: {integrity: sha512-6G6qrCE0MUTXyjh/powj91XkjRjoFL4HiJLPU5lALXHvGX+/efcUjGYUrHrrw0mwQdmrmg4POqnY/bibns+G3g==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /rc-image@5.13.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-iZTOmw5eWo2+gcrJMMcnd7SsxVHl3w5xlyCgsULUdJhJbnuI8i/AL0tVOsE7aLn9VfOh1qgDT3mC2G75/c7mqg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/portal': 1.1.2(react-dom@17.0.2)(react@17.0.2) + classnames: 2.3.2 + rc-dialog: 9.0.2(react-dom@17.0.2)(react@17.0.2) + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-image@7.2.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5Ug2hCVl6VcT0osR5XaZQ4zclTMEWPnbn3b4/TS/MR1QjRpEACLNFUzBGwr5mbAVhzvLWX5YZf4vO10xUA5IUA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-dialog: 9.2.0(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-input-number@7.3.11(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-aMWPEjFeles6PQnMqP5eWpxzsvHm9rh1jQOWXExUEIxhX62Fyl/ptifLHOn17+waDG1T/YUb6flfJbvwRhHrbA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-input-number@8.0.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TP+G5b7mZtbwXJ/YEZXF/OgbEZ6iqD4+RSuxZJ8VGKGXDcdt0FKIvpFoNQr/knspdFC4OxA0OfsWfFWfN4XSyA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/mini-decimal': 1.1.0 + classnames: 2.3.2 + rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-input@0.1.4(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-FqDdNz+fV2dKNgfXzcSLKvC+jEs1709t7nD+WdfjrdSaOcefpgc7BUJYadc3usaING+b7ediMTfKxuJBsEFbXA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-input@1.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NTR1Z4em681L8/ewb2KR80RykSmN8I2mzqzJDCoUmTrV1BB9Hk5d7ha4TnfgdEPPL148N+603sW2LExSXk1IbA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-mentions@1.13.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-FCkaWw6JQygtOz0+Vxz/M/NWqrWHB9LwqlY2RtcuFqWJNFK9njijOOzTSsBGANliGufVUzx/xuPHmZPBV0+Hgw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-menu: 9.8.4(react-dom@17.0.2)(react@17.0.2) + rc-textarea: 0.4.7(react-dom@17.0.2)(react@17.0.2) + rc-trigger: 5.3.4(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-mentions@2.7.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tn0x79cpnVYP+MA+jyBqalmEni9Ct7xHuA9QHIf5vwd25FU+hngGZ8n6Dfua7XCr4LhkZYjfD/rZTGrvY2C1Xg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.12.0(react-dom@18.2.0)(react@18.2.0) + rc-textarea: 1.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-menu@9.12.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Apr/fRf5EcqWJ4nphHV6dTGZcLPaPzwY44q9hAtLJysY4rkC9Eg+ekj3uFx6opPWVruV2sJNWq/Po+HHtO48CA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-overflow: 1.3.2(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-menu@9.6.4(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-6DiNAjxjVIPLZXHffXxxcyE15d4isRL7iQ1ru4MqYDH2Cqc5bW96wZOdMydFtGLyDdnmEQ9jVvdCE9yliGvzkw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-overflow: 1.3.2(react-dom@17.0.2)(react@17.0.2) + rc-trigger: 5.3.4(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + shallowequal: 1.1.0 + dev: true + + /rc-menu@9.8.4(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-lmw2j8I2fhdIzHmC9ajfImfckt0WDb2KVJJBBRIsxPEw2kGkEfjLMUoB1NgiNT/Q5cC8PdjGOGQjHJIJMwyNMw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-overflow: 1.3.2(react-dom@17.0.2)(react@17.0.2) + rc-trigger: 5.3.4(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-motion@2.9.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-motion@2.9.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-notification@4.6.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-NSmFYwrrdY3+un1GvDAJQw62Xi9LNMSsoQyo95tuaYrcad5Bn9gJUL8AREufRxSQAQnr64u3LtP3EUyLYT6bhw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-notification@5.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BPnded/WmWFE57ubqhVCgRSuedfQQNeSOYqdwppyr2B/Wt909gYFKyWAkFJVXuppAjsOGop05a93UaxjmUFdkg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-overflow@1.3.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-overflow@1.3.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-pagination@3.2.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-5tIXjB670WwwcAJzAqp2J+cOBS9W3cH/WU1EiYwXljuZ4vtZXKlY2Idq8FZrnYBz8KhN3vwPo9CoV/SJS6SL1w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-pagination@3.6.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-R/sUnKKXx1Nm4kZfUKS3YKa7yEPF1ZkVB/AynQaHt+nMER7h9wPTfliDJFdYo+RM/nk2JD4Yc5QpUq8fIQHeug==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-picker@2.7.6(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-H9if/BUJUZBOhPfWcPeT15JUI3/ntrG9muzERrXDkSoWmDj4yzmBvumozpxYrHwjcKnjyDGAke68d+whWwvhHA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + date-fns: 2.30.0 + dayjs: 1.11.9 + moment: 2.29.4 + rc-trigger: 5.3.4(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + shallowequal: 1.1.0 + + /rc-picker@3.13.2(dayjs@1.11.9)(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jvmmwo9d2/rUJXx8dydmcReAGF7f2wzbR7GDUgZXymbw0cqxNqXen5GGQIsX0x92JJROKyKb+J/E7bn967Ok9A==} + engines: {node: '>=8.x'} + peerDependencies: + date-fns: '>= 2.x' + dayjs: '>= 1.x' + luxon: '>= 3.x' + moment: '>= 2.x' + react: '>=16.9.0' + react-dom: '>=16.9.0' + peerDependenciesMeta: + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.9 + moment: 2.29.4 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-progress@3.4.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-iAGhwWU+tsayP+Jkl9T4+6rHeQTG9kDz8JAHZk4XtQOcYN5fj9H34NXNEdRdZx94VUDHMqCb1yOIvi8eJRh67w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-progress@3.5.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-rate@2.12.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-rate@2.9.3(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-2THssUSnRhtqIouQIIXqsZGzRczvp4WsH4WvGuhiwm+LG2fVpDUJliP9O1zeDOZvYfBE/Bup4SgHun/eCkbjgQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-resize-observer@0.2.6(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-YX6nYnd6fk7zbuvT6oSDMKiZjyngjHoy+fz+vL3Tez38d/G5iGdaDJa2yE7345G6sc4Mm1IGRUIwclvltddhmA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + resize-observer-polyfill: 1.5.1 + dev: false + + /rc-resize-observer@1.3.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + resize-observer-polyfill: 1.5.1 + + /rc-resize-observer@1.3.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + resize-observer-polyfill: 1.5.1 + dev: false + + /rc-segmented@2.1.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-qGo1bCr83ESXpXVOCXjFe1QJlCAQXyi9KCiy8eX3rIMYlTeJr/ftySIaTnYsitL18SvWf5ZEHsfqIWoX0EMfFQ==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-segmented@2.2.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Mq52M96QdHMsNdE/042ibT5vkcGcD5jxKp7HgPC2SRofpia99P5fkfHy1pEaajLMF/kj0+2Lkq1UZRvqzo9mSA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-select@14.1.18(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-4JgY3oG2Yz68ECMUSCON7mtxuJvCSj+LJpHEg/AONaaVBxIIrmI/ZTuMJkyojall/X50YdBe5oMKqHHPNiPzEg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-overflow: 1.3.2(react-dom@17.0.2)(react@17.0.2) + rc-trigger: 5.3.4(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + rc-virtual-list: 3.10.7(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-select@14.8.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+MDaHteiKRL4iID9Osm8zAZTe+g7/t5CjIfJJ4QhPAvwGUaNCa2kvkMqiXfOfGevscVa+agha1Ov938MeAotfQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-overflow: 1.3.2(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + rc-virtual-list: 3.10.7(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-slider@10.0.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + shallowequal: 1.1.0 + + /rc-slider@10.2.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-l355C/65iV4UFp7mXq5xBTNX2/tF2g74VWiTVlTpNp+6vjE/xaHHNiQq5Af+Uu28uUiqCuH/QXs5HfADL9KJ/A==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-slider@8.2.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-rnO36M3VhMoPWh1kRuCeJoluT4duAW7+5aLaAn9oLu2pKEKsuOFUh5DmA2kEo88UmvPV6nr7HHDeZuC8SNM/lA==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + prop-types: 15.8.1 + rc-tooltip: 3.7.3(react-dom@17.0.2)(react@17.0.2) + rc-util: 4.21.1 + shallowequal: 1.1.0 + warning: 3.0.0 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-steps@5.0.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-9TgRvnVYirdhbV0C3syJFj9EhCRqoJAsxt4i1rED5o8/ZcSv5TLIYyo4H8MCjLPvbe2R+oBAm/IYBEtC+OS1Rw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-steps@6.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-swipeout@2.0.11: + resolution: {integrity: sha512-d37Lgn4RX4OOQyuA2BFo0rGlUwrmZk5q83srH3ixJ1Y1jidr2GKjgJDbNeGUVZPNfYBL91Elu6+xfVGftWf4Lg==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + rc-gesture: 0.0.22 + react-native-swipeout: 2.3.6 + dev: true + + /rc-switch@3.2.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-switch@4.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-table@7.26.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + shallowequal: 1.1.0 + + /rc-table@7.33.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-zgWcNPcI4vCBjvdInjF7PCt3loqDDLIZwVyw7R+Et1nwIGW26UNbdSw/C+pkTOppQd9kRiu9JD/z9xAjhTLE2w==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/context': 1.4.0(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + rc-virtual-list: 3.10.7(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-tabs@11.16.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-bR7Dap23YyfzZQwtKomhiFEFzZuE7WaKWo+ypNRSGB9PDKSc6tM12VP8LWYkvmmQHthgwP0WRN8nFbSJWuqLYw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-dropdown: 4.0.1(react-dom@17.0.2)(react@17.0.2) + rc-menu: 9.6.4(react-dom@17.0.2)(react@17.0.2) + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: true + + /rc-tabs@12.12.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-e10VBjEkECdPl4XZSs9to81SE+mgclBTM7J8/LMsFqmJoi05Tci91bRnmeeDtrcOCx2PuZdJv57XUlC4d8PEIw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.12.0(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-tabs@12.5.10(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-Ay0l0jtd4eXepFH9vWBvinBjqOpqzcsJTerBGwJy435P2S90Uu38q8U/mvc1sxUEVOXX5ZCFbxcWPnfG3dH+tQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-dropdown: 4.0.1(react-dom@17.0.2)(react@17.0.2) + rc-menu: 9.8.4(react-dom@17.0.2)(react@17.0.2) + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-textarea@0.4.7(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-IQPd1CDI3mnMlkFyzt2O4gQ2lxUsnBAeJEoZGJnkkXgORNqyM9qovdrCj9NzcRfpHgLdzaEbU3AmobNFGUznwQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + shallowequal: 1.1.0 + + /rc-textarea@1.3.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wn0YjTpvcVolcfXa0HtzL+jgV2QcwtfB29RwNAKj8hMgZOju1V24M3TfEDjABeQEAQbUGbjMbISREOX/YSVKhg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-tooltip@3.7.3(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-dE2ibukxxkrde7wH9W8ozHKUO4aQnPZ6qBHtrTH9LoO836PjDdiaWO73fgPB05VfJs9FbZdmGPVEbXCeOP99Ww==} + dependencies: + babel-runtime: 6.26.0 + prop-types: 15.8.1 + rc-trigger: 2.6.5(react-dom@17.0.2)(react@17.0.2) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-tooltip@5.2.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-trigger: 5.3.4(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-tooltip@6.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-MdvPlsD1fDSxKp9+HjXrc/CxLmA/s11QYIh1R7aExxfodKP7CZA++DG1AjrW80F8IUdHYcR43HAm0Y2BYPelHA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + '@rc-component/trigger': 1.15.6(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-tree-select@5.12.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/IC6gRgRoUBCOwZASOiF3onp1484fb+Gke5zuxgsi3ViP+O2UTUByS1jTZzjNooidRgdwiQJksq1zVaVYw2TPg==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-select: 14.8.1(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.10(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-tree-select@5.5.5(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-k2av7jF6tW9bIO4mQhaVdV4kJ1c54oxV3/hHVU+oD251Gb5JN+m1RbJFTMf1o0rAFqkvto33rxMdpafaGKQRJw==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-select: 14.1.18(react-dom@17.0.2)(react@17.0.2) + rc-tree: 5.7.10(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-tree@5.7.10(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-n4UkMQY3bzvJUNnbw6e3YI7sy2kE9c9vAYbSt94qAhcPKtMOThONNr1LIaFB/M5XeFYYrWVbvRVoT8k38eFuSQ==} + engines: {node: '>=10.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + rc-virtual-list: 3.10.7(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-tree@5.7.10(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-n4UkMQY3bzvJUNnbw6e3YI7sy2kE9c9vAYbSt94qAhcPKtMOThONNr1LIaFB/M5XeFYYrWVbvRVoT8k38eFuSQ==} + engines: {node: '>=10.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + rc-virtual-list: 3.10.7(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-trigger@2.6.5(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + prop-types: 15.8.1 + rc-align: 2.4.5 + rc-animate: 2.11.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 4.21.1 + react-lifecycles-compat: 3.0.4 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-trigger@5.3.4(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-mQv+vas0TwKcjAO2izNPkqR4j86OemLRmvL2nOzdP9OWNWA1ivoTt5hzFqYNW9zACwmTezRiN8bttrC7cZzYSw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-align: 4.0.15(react-dom@17.0.2)(react@17.0.2) + rc-motion: 2.9.0(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-upload@4.3.4(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-upload@4.3.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-util@4.21.1: + resolution: {integrity: sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==} + dependencies: + add-dom-event-listener: 1.1.0 + prop-types: 15.8.1 + react-is: 16.13.1 + react-lifecycles-compat: 3.0.4 + shallowequal: 1.1.0 + + /rc-util@5.37.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-cPMV8DzaHI1KDaS7XPRXAf4J7mtBqjvjikLpQieaeOO7+cEbqY2j7Kso/T0R0OiEZTNcLS/8Zl9YrlXiO9UbjQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-is: 16.13.1 + + /rc-util@5.37.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cPMV8DzaHI1KDaS7XPRXAf4J7mtBqjvjikLpQieaeOO7+cEbqY2j7Kso/T0R0OiEZTNcLS/8Zl9YrlXiO9UbjQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.15 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 16.13.1 + dev: false + + /rc-virtual-list@3.10.7(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-NZl8nsNV2kf0k9o4SHt6u/2kFBhE0SRTh71msUZkUB/rfNTBRKnhLXf8bD2jayT7TkprnbHBCPQbPqwJo2BSJw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 5.37.0(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /rc-virtual-list@3.10.7(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NZl8nsNV2kf0k9o4SHt6u/2kFBhE0SRTh71msUZkUB/rfNTBRKnhLXf8bD2jayT7TkprnbHBCPQbPqwJo2BSJw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.15 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: true + + /react-ace@9.5.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-4l5FgwGh6K7A0yWVMQlPIXDItM4Q9zzXRqOae8KkCl6MkOob7sC1CzHxZdOGvV+QioKWbX2p5HcdOVUv6cAdSg==} + peerDependencies: + react: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 + react-dom: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 + dependencies: + ace-builds: 1.24.2 + diff-match-patch: 1.0.5 + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /react-app-polyfill@3.0.0: + resolution: {integrity: sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==} + engines: {node: '>=14'} + dependencies: + core-js: 3.32.2 + object-assign: 4.1.1 + promise: 8.3.0 + raf: 3.4.1 + regenerator-runtime: 0.13.11 + whatwg-fetch: 3.6.19 + dev: true + + /react-attr-converter@0.3.1: + resolution: {integrity: sha512-dSxo2Mn6Zx4HajeCeQNLefwEO4kNtV/0E682R1+ZTyFRPqxDa5zYb5qM/ocqw9Bxr/kFQO0IUiqdV7wdHw+Cdg==} + dev: true + + /react-color@2.17.1(react@17.0.2): + resolution: {integrity: sha512-S+I6TkUKJaqfALLkAIfiCZ/MANQyy7dKkf7g9ZU5GTUy2rf8c2Rx62otyvADAviWR+6HRkzdf2vL1Qvz9goCLQ==} + peerDependencies: + react: '*' + dependencies: + '@icons/material': 0.2.4(react@17.0.2) + lodash: 4.17.21 + material-colors: 1.2.6 + prop-types: 15.8.1 + react: 17.0.2 + reactcss: 1.2.3(react@17.0.2) + tinycolor2: 1.6.0 + dev: false + + /react-color@2.17.3(react@17.0.2): + resolution: {integrity: sha512-1dtO8LqAVotPIChlmo6kLtFS1FP89ll8/OiA8EcFRDR+ntcK+0ukJgByuIQHRtzvigf26dV5HklnxDIvhON9VQ==} + peerDependencies: + react: '*' + dependencies: + '@icons/material': 0.2.4(react@17.0.2) + lodash: 4.17.21 + material-colors: 1.2.6 + prop-types: 15.8.1 + react: 17.0.2 + reactcss: 1.2.3(react@17.0.2) + tinycolor2: 1.6.0 + dev: false + + /react-content-loader@5.1.4(react@17.0.2): + resolution: {integrity: sha512-hTq7pZi2GKCK6a9d3u6XStozm0QGCEjw8cSqQReiWnh2up6IwCha5R5TF0o6SY5qUDpByloEZEZtnFxpJyENFw==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16.0.0' + dependencies: + react: 17.0.2 + dev: false + + /react-dev-inspector@1.9.0(eslint@7.32.0)(react@17.0.2)(typescript@4.9.5)(webpack@5.88.2): + resolution: {integrity: sha512-1ZlraWRrDz+NgjHwOmTAn/wWoP+6gZt46DS1mRRILlST0iKg4FO2Zj9dDcG5XPaeIIr3OGKwsX5vM6vakmaftA==} + peerDependencies: + react: '>=16.8.0' + dependencies: + '@babel/core': 7.22.17 + '@babel/generator': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 + hotkeys-js: 3.12.0 + loader-utils: 2.0.4 + querystring: 0.2.1 + react: 17.0.2 + react-dev-utils: 12.0.1(eslint@7.32.0)(typescript@4.9.5)(webpack@5.88.2) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + dev: false + + /react-dev-utils@12.0.1(eslint@7.32.0)(typescript@4.9.5)(webpack@5.88.2): + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/code-frame': 7.22.13 + address: 1.2.2 + browserslist: 4.21.10 + chalk: 4.1.2 + cross-spawn: 7.0.3 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.3(eslint@7.32.0)(typescript@4.9.5)(webpack@5.88.2) + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.21 + is-root: 2.1.0 + loader-utils: 3.2.1 + open: 8.4.2 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.3 + shell-quote: 1.8.1 + strip-ansi: 6.0.1 + text-table: 0.2.0 + typescript: 4.9.5 + webpack: 5.88.2 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + dev: false + + /react-dev-utils@12.0.1(eslint@8.49.0)(typescript@4.9.5)(webpack@5.88.2): + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/code-frame': 7.22.13 + address: 1.2.2 + browserslist: 4.21.10 + chalk: 4.1.2 + cross-spawn: 7.0.3 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.49.0)(typescript@4.9.5)(webpack@5.88.2) + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.21 + is-root: 2.1.0 + loader-utils: 3.2.1 + open: 8.4.2 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.3 + shell-quote: 1.8.1 + strip-ansi: 6.0.1 + text-table: 0.2.0 + typescript: 4.9.5 + webpack: 5.88.2 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + dev: true + + /react-docgen-typescript-dumi-tmp@1.22.1-0(typescript@4.9.5): + resolution: {integrity: sha512-wjuAm1yj+ZZucovow2VF0MXkH2SGZ+squZxfNdnam3oyUbHy/xZaU1ZabCn7rY+13ZFx0/NLda+ZuBgF3g8vBA==} + peerDependencies: + typescript: '>= 3.x' + dependencies: + typescript: 4.9.5 + dev: true + + /react-dom@16.14.0(react@16.14.0): + resolution: {integrity: sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==} + peerDependencies: + react: ^16.14.0 + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 16.14.0 + scheduler: 0.19.1 + + /react-dom@17.0.2(react@17.0.2): + resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} + peerDependencies: + react: 17.0.2 + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react: 17.0.2 + scheduler: 0.20.2 + + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + + /react-error-boundary@3.1.4(react@17.0.2): + resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13.1' + dependencies: + '@babel/runtime': 7.22.15 + react: 17.0.2 + dev: true + + /react-error-overlay@6.0.11: + resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} + + /react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + /react-fast-marquee@1.6.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-jtuwT9SNjrqxnE7lGZ8mTL1I8Q4+9G4aBta2p+y2Pa3SjR17QROblwrLICyM8rbjQFHgHawTHcaH9HvoVO2NOA==} + peerDependencies: + react: '>= 16.8.0 || 18.0.0' + react-dom: '>= 16.8.0 || 18.0.0' + dependencies: + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /react-helmet-async@1.3.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.22.15 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + dev: false + + /react-helmet@6.1.0(react@17.0.2): + resolution: {integrity: sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==} + peerDependencies: + react: '>=16.3.0' + dependencies: + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 17.0.2 + react-fast-compare: 3.2.2 + react-side-effect: 2.1.2(react@17.0.2) + dev: true + + /react-html-attributes@1.4.6: + resolution: {integrity: sha512-uS3MmThNKFH2EZUQQw4k5pIcU7XIr208UE5dktrj/GOH1CMagqxDl4DCLpt3o2l9x+IB5nVYBeN3Cr4IutBXAg==} + dependencies: + html-element-attributes: 1.3.1 + dev: false + + /react-intl@3.12.1(react@17.0.2): + resolution: {integrity: sha512-cgumW29mwROIqyp8NXStYsoIm27+8FqnxykiLSawWjOxGIBeLuN/+p2srei5SRIumcJefOkOIHP+NDck05RgHg==} + peerDependencies: + react: ^16.3.0 + dependencies: + '@formatjs/intl-displaynames': 1.2.10 + '@formatjs/intl-listformat': 1.4.8 + '@formatjs/intl-relativetimeformat': 4.5.16 + '@formatjs/intl-unified-numberformat': 3.3.7 + '@formatjs/intl-utils': 2.3.0 + '@types/hoist-non-react-statics': 3.3.1 + '@types/invariant': 2.2.35 + hoist-non-react-statics: 3.3.2 + intl-format-cache: 4.3.1 + intl-messageformat: 7.8.4 + intl-messageformat-parser: 3.6.4 + react: 17.0.2 + shallow-equal: 1.2.1 + dev: true + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + + /react-native-swipeout@2.3.6: + resolution: {integrity: sha512-t9suUCspzck4vp2pWggWe0frS/QOtX6yYCawHnEes75A7dZCEE74bxX2A1bQzGH9cUMjq6xsdfC94RbiDKIkJg==} + deprecated: Package no longer supported. Use at your own risk or consider using https://github.com/software-mansion/react-native-gesture-handler + dependencies: + create-react-class: 15.7.0 + prop-types: 15.8.1 + react-tween-state: 0.1.5 + dev: true + + /react-redux@7.2.9(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} + peerDependencies: + react: ^16.8.3 || ^17 || ^18 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': 7.22.15 + '@types/react-redux': 7.1.26 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-is: 17.0.2 + dev: true + + /react-refresh@0.10.0: + resolution: {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} + engines: {node: '>=0.10.0'} + + /react-refresh@0.11.0: + resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} + engines: {node: '>=0.10.0'} + dev: true + + /react-resize-detector@7.1.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /react-router-config@5.1.1(react-router@5.2.0)(react@16.14.0): + resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} + peerDependencies: + react: '>=15' + react-router: '>=5' + dependencies: + '@babel/runtime': 7.22.15 + react: 16.14.0 + react-router: 5.2.0(react@16.14.0) + + /react-router-config@5.1.1(react-router@5.3.4)(react@16.14.0): + resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} + peerDependencies: + react: '>=15' + react-router: '>=5' + dependencies: + '@babel/runtime': 7.22.15 + react: 16.14.0 + react-router: 5.3.4(react@17.0.2) + + /react-router-config@5.1.1(react-router@5.3.4)(react@17.0.2): + resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} + peerDependencies: + react: '>=15' + react-router: '>=5' + dependencies: + '@babel/runtime': 7.22.15 + react: 17.0.2 + react-router: 5.3.4(react@17.0.2) + dev: true + + /react-router-dom@5.2.0(react@16.14.0): + resolution: {integrity: sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.22.15 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 16.14.0 + react-router: 5.2.0(react@16.14.0) + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + + /react-router-dom@5.2.0(react@17.0.2): + resolution: {integrity: sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.22.15 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-router: 5.2.0(react@17.0.2) + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + dev: true + + /react-router-dom@5.3.4(react@17.0.2): + resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.22.15 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-router: 5.3.4(react@17.0.2) + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + dev: true + + /react-router@5.2.0(react@16.14.0): + resolution: {integrity: sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.22.15 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + mini-create-react-context: 0.4.1(prop-types@15.8.1)(react@16.14.0) + path-to-regexp: 1.8.0 + prop-types: 15.8.1 + react: 16.14.0 + react-is: 16.13.1 + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + + /react-router@5.2.0(react@17.0.2): + resolution: {integrity: sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.22.15 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + mini-create-react-context: 0.4.1(prop-types@15.8.1)(react@17.0.2) + path-to-regexp: 1.8.0 + prop-types: 15.8.1 + react: 17.0.2 + react-is: 16.13.1 + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + dev: true + + /react-router@5.3.4(react@17.0.2): + resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.22.15 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + path-to-regexp: 1.8.0 + prop-types: 15.8.1 + react: 17.0.2 + react-is: 16.13.1 + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + + /react-side-effect@2.1.2(react@17.0.2): + resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 17.0.2 + dev: true + + /react-sortable-hoc@2.0.0(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-JZUw7hBsAHXK7PTyErJyI7SopSBFRcFHDjWW5SWjcugY0i6iH7f+eJkY8cJmGMlZ1C9xz1J3Vjz0plFpavVeRg==} + peerDependencies: + prop-types: ^15.5.7 + react: ^16.3.0 || ^17.0.0 + react-dom: ^16.3.0 || ^17.0.0 + dependencies: + '@babel/runtime': 7.22.15 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + /react-spinners@0.10.6(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-UPLcaMFhFnLWtS1zVDDT14ssW08gnZ44cjPN6GL27dEGboiCvRSthOilZXRDWESp449GB2iI6gjEbxzaMtA+dg==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 + react-dom: ^16.0.0 || ^17.0.0 + dependencies: + '@emotion/core': 10.3.1(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /react-spinners@0.13.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-split-pane@2.0.3: + resolution: {integrity: sha512-1rW+EMSJTkS7eYMYethCaNFOjiAVDm/B2LlxJXLr1Uu8ddLrV9pfc5P/fngRBkTGC/0tvxRkW1dLxGY7zvHVkA==} + dependencies: + glamor: 2.20.40 + glamorous: 4.13.1(glamor@2.20.40) + inline-style-prefixer: 4.0.2 + normalize.css: 7.0.0 + prop-types: 15.8.1 + react: 16.14.0 + react-dom: 16.14.0(react@16.14.0) + styled-components: 2.4.1(react@16.14.0) + dev: false + + /react-syntax-highlighter@15.5.0(react@17.0.2): + resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==} + peerDependencies: + react: '>= 0.14.0' + dependencies: + '@babel/runtime': 7.22.15 + highlight.js: 10.7.3 + lowlight: 1.20.0 + prismjs: 1.29.0 + react: 17.0.2 + refractor: 3.6.0 + dev: false + + /react-tween-state@0.1.5: + resolution: {integrity: sha512-sJQpjsdn0wjlDIUpfpb7jQGnOG8hAEW2e8k0KPA+xmf5KFa6Xat2JldbmxBhaqP0S/uIXhVE5ymKyH/b9X8nYA==} + dependencies: + raf: 3.4.1 + tween-functions: 1.2.0 + dev: true + + /react-universal-interface@0.6.2(react@17.0.2)(tslib@2.6.2): + resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} + peerDependencies: + react: '*' + tslib: '*' + dependencies: + react: 17.0.2 + tslib: 2.6.2 + dev: false + + /react-use@17.3.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-hs7+tS4rRm1QLHPfanLCqXIi632tP4V7Sai1ENUP2WTufU6am++tU9uSw9YrNCFqbABiEv0ndKU1XCUcfu2tXA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@types/js-cookie': 2.2.7 + '@xobotyi/scrollbar-width': 1.9.5 + copy-to-clipboard: 3.3.3 + fast-deep-equal: 3.1.3 + fast-shallow-equal: 1.0.0 + js-cookie: 2.2.1 + nano-css: 5.3.5(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-universal-interface: 0.6.2(react@17.0.2)(tslib@2.6.2) + resize-observer-polyfill: 1.5.1 + screenfull: 5.2.0 + set-harmonic-interval: 1.0.1 + throttle-debounce: 3.0.1 + ts-easing: 0.2.0 + tslib: 2.6.2 + dev: false + + /react@16.14.0: + resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + prop-types: 15.8.1 + + /react@17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /reactcss@1.2.3(react@17.0.2): + resolution: {integrity: sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==} + peerDependencies: + react: '*' + dependencies: + lodash: 4.17.21 + react: 17.0.2 + dev: false + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readable-stream@1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + /readdirp@3.5.0: + resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + + /recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + dependencies: + minimatch: 3.1.2 + + /redbox-react@1.6.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-mLjM5eYR41yOp5YKHpd3syFeGq6B4Wj5vZr64nbLvTZW5ZLff4LYk7VE4ITpVxkZpCY6OZuqh0HiP3A3uEaCpg==} + peerDependencies: + react: ^0.14.0 || ^15.0.0 || ^16.0.0-beta || ^16.0.0 + react-dom: ^0.14.0 || ^15.0.0 || ^16.0.0-beta || ^16.0.0 + dependencies: + error-stack-parser: 1.3.6 + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + sourcemapped-stacktrace: 1.1.11 + dev: true + + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /redux-saga@0.16.2: + resolution: {integrity: sha512-iIjKnRThI5sKPEASpUvySemjzwqwI13e3qP7oLub+FycCRDysLSAOwt958niZW6LhxfmS6Qm1BzbU70w/Koc4w==} + dev: true + + /redux@4.2.1: + resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} + dependencies: + '@babel/runtime': 7.22.15 + dev: true + + /reflect-metadata@0.1.13: + resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + dev: false + + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /refractor@3.6.0: + resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} + dependencies: + hastscript: 6.0.0 + parse-entities: 2.0.0 + prismjs: 1.27.0 + dev: false + + /regenerate-unicode-properties@10.0.1: + resolution: {integrity: sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + + /regenerate-unicode-properties@10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + /regenerator-runtime@0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + dev: true + + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + /regenerator-runtime@0.13.5: + resolution: {integrity: sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==} + + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.22.15 + dev: true + + /regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: true + + /regex-parser@2.2.11: + resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==} + dev: true + + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + set-function-name: 2.0.0 + + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + 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 + dev: true + + /registry-auth-token@3.4.0: + resolution: {integrity: sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==} + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + dev: true + + /registry-url@3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + dependencies: + rc: 1.2.8 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /regl@1.7.0: + resolution: {integrity: sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w==} + dev: false + + /rehype-autolink-headings@4.0.0: + resolution: {integrity: sha512-2lglJ+4S3A4RCz+zlKVWj1wHvwO4bjunAoEOgMfjphT59EVXwdMiJzrL/A2fuAX/33k/LhkGW6BEK1Cl1I5WQw==} + dependencies: + extend: 3.0.2 + hast-util-has-property: 1.0.4 + hast-util-is-element: 1.1.0 + unist-util-visit: 2.0.3 + dev: true + + /rehype-mathjax@3.1.0: + resolution: {integrity: sha512-Pmz92Y56lBFmDjFc9nIdrKu1xzKSBYevcwKiKiG7b5JJg74q1E62nRSbPEm37vXaXn7Bn25iRsWcP39bJKkMxg==} + dependencies: + '@types/mathjax': 0.0.36 + hast-util-from-dom: 3.0.0 + hast-util-to-text: 2.0.1 + jsdom: 16.7.0 + mathjax-full: 3.2.2 + unist-util-visit: 2.0.3 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /rehype-remove-comments@4.0.2: + resolution: {integrity: sha512-E2FNohTuIs7QzUnEQs3SdYdCScsTgUN7yPeDNWi+gsvx+pbLzIAyp27TWz3Gm64jpdLi7/6HxyRHxdd1NVQ37A==} + dependencies: + hast-util-is-conditional-comment: 1.0.4 + unist-util-filter: 2.0.3 + dev: true + + /rehype-stringify@8.0.0: + resolution: {integrity: sha512-VkIs18G0pj2xklyllrPSvdShAV36Ff3yE5PUO9u36f6+2qJFnn22Z5gKwBOwgXviux4UC7K+/j13AnZfPICi/g==} + dependencies: + hast-util-to-html: 7.1.3 + dev: true + + /relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: true + + /remark-frontmatter@3.0.0: + resolution: {integrity: sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==} + dependencies: + mdast-util-frontmatter: 0.2.0 + micromark-extension-frontmatter: 0.2.2 + dev: true + + /remark-gfm@1.0.0: + resolution: {integrity: sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==} + dependencies: + mdast-util-gfm: 0.1.2 + micromark-extension-gfm: 0.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-math@4.0.0: + resolution: {integrity: sha512-lH7SoQenXtQrvL0bm+mjZbvOk//YWNuyR+MxV18Qyv8rgFmMEGNuB0TSCQDkoDaiJ40FCnG8lxErc/zhcedYbw==} + dependencies: + mdast-util-math: 0.1.2 + micromark-extension-math: 0.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-parse@9.0.0: + resolution: {integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==} + dependencies: + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-rehype@8.1.0: + resolution: {integrity: sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA==} + dependencies: + mdast-util-to-hast: 10.2.0 + dev: true + + /remark-stringify@9.0.1: + resolution: {integrity: sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==} + dependencies: + mdast-util-to-markdown: 0.6.5 + dev: true + + /remark@13.0.0: + resolution: {integrity: sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==} + dependencies: + remark-parse: 9.0.0 + remark-stringify: 9.0.1 + unified: 9.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /remote-origin-url@0.4.0: + resolution: {integrity: sha512-HYhdsT2pNd0LP4Osb0vtQ1iassxIc3Yk1oze7j8dMJFciMkW8e0rdg9E/mOunqtSVHSzvMfwLDIYzPnEDmpk6Q==} + engines: {node: '>= 0.8.0'} + dependencies: + parse-git-config: 0.2.0 + dev: true + + /remote-origin-url@0.5.3: + resolution: {integrity: sha512-crQ7Xk1m/F2IiwBx5oTqk/c0hjoumrEz+a36+ZoVupskQRE/q7pAwHKsTNeiZ31sbSTELvVlVv4h1W0Xo5szKg==} + engines: {node: '>= 0.8.0'} + dependencies: + parse-git-config: 1.1.1 + dev: true + + /remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + dev: true + + /renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + dev: true + + /repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + dev: true + + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + /replace-ext@1.0.1: + resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} + engines: {node: '>= 0.10'} + dev: true + + /request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.12.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /reserved-words@0.1.2: + resolution: {integrity: sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==} + dev: true + + /resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-dir@0.1.1: + resolution: {integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==} + engines: {node: '>=0.10.0'} + dependencies: + expand-tilde: 1.2.2 + global-modules: 0.2.3 + dev: true + + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + + /resolve-protobuf-schema@2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + dependencies: + protocol-buffers-schema: 3.6.0 + dev: false + + /resolve-url-loader@4.0.0: + resolution: {integrity: sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==} + engines: {node: '>=8.9'} + peerDependencies: + rework: 1.0.1 + rework-visit: 1.0.0 + peerDependenciesMeta: + rework: + optional: true + rework-visit: + optional: true + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 7.0.39 + source-map: 0.6.1 + dev: true + + /resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: true + + /resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve@2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.7 + dev: true + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /resumer@0.0.0: + resolution: {integrity: sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w==} + dependencies: + through: 2.3.8 + dev: false + + /ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + dev: true + + /retry@0.10.1: + resolution: {integrity: sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==} + dev: true + + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + + /right-align@0.1.3: + resolution: {integrity: sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==} + engines: {node: '>=0.10.0'} + dependencies: + align-text: 0.1.4 + dev: false + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /rimraf@5.0.1: + resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.4 + dev: true + + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + + /rmc-align@1.0.0: + resolution: {integrity: sha512-3gEa5/+hqqoEVoeQ25KoRc8DOsXIdSaVpaBq1zQFaV941LR3xvZIRTlxTDT/IagYwoGM1KZea/jd7cNMYP34Rg==} + dependencies: + babel-runtime: 6.26.0 + dom-align: 1.12.4 + rc-util: 4.21.1 + dev: true + + /rmc-calendar@1.1.4(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-xxQZaPFDnpHt4IFO8mukYrXSgC1W8LcNVp+EoX4iyeOJFimungOKB/iP5/cy+st8yXq8lUgk9TXsHNtM6Xo6ZA==} + dependencies: + babel-runtime: 6.26.0 + rc-animate: 2.11.1(react-dom@17.0.2)(react@17.0.2) + rmc-date-picker: 6.0.10(react-dom@17.0.2)(react@17.0.2) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-cascader@5.0.3(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-PxDhMjWViDdG4SMZqoXtAthGwgDyYnyxxZEE17IDDYsiCHpWtOhoIL8nsI+/hZ212UT/XF2LpqCsOlMoJiYk+w==} + dependencies: + array-tree-filter: 2.1.0 + babel-runtime: 6.26.0 + rmc-picker: 5.0.10(react-dom@17.0.2)(react@17.0.2) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-date-picker@6.0.10(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-/9+I6lm3EDEl6M7862V6++zFuxwsM0UEq8wSHbotYIPPmyB/65gx1cviblghOv2QfB0O9+U2w3qEJlRP/WsMrA==} + dependencies: + babel-runtime: 6.26.0 + rmc-picker: 5.0.10(react-dom@17.0.2)(react@17.0.2) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-dialog@1.1.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-28aJqtPTX6v13Z/aU1WBy1AFIXkE74PxZXde7JvtEIy9hQDTjH8fqOi822BpzAbXCyNE7jF9iFomy3H2ClsDJA==} + dependencies: + babel-runtime: 6.26.0 + rc-animate: 2.11.1(react-dom@17.0.2)(react@17.0.2) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-drawer@0.4.11: + resolution: {integrity: sha512-YfB9XEJ8iM0MMuLWAK4313uOxSM8NAljC8Cqun1KamXutglYTuRviUuTLNSOzV8HHPp5kNpsVduvPCGLWXvThw==} + engines: {node: '>=4.0.0'} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + prop-types: 15.8.1 + dev: true + + /rmc-feedback@2.0.0: + resolution: {integrity: sha512-5PWOGOW7VXks/l3JzlOU9NIxRpuaSS8d9zA3UULUCuTKnpwBHNvv1jSJzxgbbCQeYzROWUpgKI4za3X4C/mKmQ==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + dev: true + + /rmc-input-number@1.0.5: + resolution: {integrity: sha512-prPkEtoOVde77GnEnEaBeWjBobMOPgGqU5bd0gxfp1kt1pUN740mMpVAcH7uxpJjVfmw+kuGWtiz4S7CueagSg==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + rmc-feedback: 2.0.0 + dev: true + + /rmc-list-view@0.11.5: + resolution: {integrity: sha512-eMOC5394tLNawcdEEhF7boMpQgpjJGDdL5lS+LblAWdBec7Q4EYkUdnrKNbt+O9k5RGM6nSLAGZK5oB4FN85Lg==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + fbjs: 0.8.18 + prop-types: 15.8.1 + warning: 3.0.0 + zscroller: 0.4.8 + dev: true + + /rmc-notification@1.0.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-9sPxjltFvtRLt2v312Hu7OXwk53pHkBYgINRDmnJ3A5NF1qtJeCCcdN0Xr0fzJ6sbQvtGju822tWHdzYA9u7Vw==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + prop-types: 15.8.1 + rc-animate: 2.11.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 4.21.1 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-nuka-carousel@3.0.1: + resolution: {integrity: sha512-w2EPTERMUUZqcUSKFuejjin7xsMlhrLrtS0A/igTXpFJGq3kemDKcRi7q3pSYDuZBHYBl5iV4UqsLLkjdFtrYA==} + dependencies: + exenv: 1.2.2 + raf: 3.4.1 + dev: true + + /rmc-picker@5.0.10(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-KZ70+WjcaZHnG5GyCxWCPFWAZ12s6NqyrbW73LeqH0WEqaTMMs0sOrk2f4mQAZ/CGT0XcFN6VZLw7Ozoxfn7LA==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + rmc-dialog: 1.1.1(react-dom@17.0.2)(react@17.0.2) + rmc-feedback: 2.0.0 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-pull-to-refresh@1.0.13: + resolution: {integrity: sha512-iYLsURiR7G/sKmRA6p2kq6ZXicn7Hyeo6VQFljssV1eMW+fzDgihhaz0kv5mza0f88vphGJvjOihT9E6+xGb6Q==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + dev: true + + /rmc-steps@1.0.1: + resolution: {integrity: sha512-8ijtwp4D1CYTtI2yerXJYqCv+GQbiBc9T12nrFngd/vM0y+58CnznGphTAueF6IWf7qbxBwcjTrcFgg7bP2YGA==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + dev: true + + /rmc-tabs@1.2.29: + resolution: {integrity: sha512-wiJS9WSJi9JH9GQO+FqncX+zaHP31qHa/S8nDW9UXUx0qbCX294QcJEnvfB+WmsfUws7rXjs6sOQp5EDiObnHg==} + dependencies: + babel-runtime: 6.26.0 + rc-gesture: 0.0.22 + dev: true + + /rmc-tooltip@1.0.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-fSDArf2BlMVrHExmBiqb2TkCRJHshvXFJQ/7tMraLellwaJLNiwrxtWpW329k3S+zTtoVG8UxFS1TjBGEsMzRg==} + dependencies: + babel-runtime: 6.26.0 + rmc-trigger: 1.0.12(react-dom@17.0.2)(react@17.0.2) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-trigger@1.0.12(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-AccQniX7PX7Pm8hBhHEsnf3JU6CA61Xc7fAt2WbO+oXrGaI/jqN8C3COhhOXG54S5iTOjLS26j858zshwAxR9A==} + dependencies: + babel-runtime: 6.26.0 + rc-animate: 2.11.1(react-dom@17.0.2)(react@17.0.2) + rc-util: 4.21.1 + rmc-align: 1.0.0 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rollup-plugin-exclude-dependencies-from-bundle@1.1.23(rollup@3.29.1): + resolution: {integrity: sha512-nDoFtxlpajcqaLkPftoUcHxHYFd8tydHleOVubdf2JmyQtWTbhCNK05O4VGxLr7EUKSK9KeXqbWuQXkTqeJcRg==} + peerDependencies: + rollup: '*' + dependencies: + rollup: 3.29.1 + dev: true + + /rollup-plugin-less@1.1.3: + resolution: {integrity: sha512-gvJFXpEeU5Opyz514ZO4JGj9kvFTChZEDMR3LSkSIyFfWaeE5NJMFzxPpo+MZK3CY/0j7+AotDeRofyQt9rTew==} + dependencies: + babel-runtime: 6.26.0 + fs-extra: 0.30.0 + growl: 1.10.5 + less: 3.13.1 + mkdirp: 0.5.6 + rollup: 0.34.13 + rollup-pluginutils: 1.5.2 + dev: true + + /rollup-plugin-postcss@4.0.2(postcss@8.4.29): + resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} + engines: {node: '>=10'} + peerDependencies: + postcss: 8.x + dependencies: + chalk: 4.1.2 + concat-with-sourcemaps: 1.1.0 + cssnano: 5.1.15(postcss@8.4.29) + import-cwd: 3.0.0 + p-queue: 6.6.2 + pify: 5.0.0 + postcss: 8.4.29 + postcss-load-config: 3.1.4(postcss@8.4.29) + postcss-modules: 4.3.1(postcss@8.4.29) + promise.series: 0.2.0 + resolve: 1.22.4 + rollup-pluginutils: 2.8.2 + safe-identifier: 0.4.2 + style-inject: 0.3.0 + transitivePeerDependencies: + - ts-node + dev: true + + /rollup-plugin-terser@7.0.2(rollup@2.79.1): + resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser + peerDependencies: + rollup: ^2.0.0 + dependencies: + '@babel/code-frame': 7.22.13 + jest-worker: 26.6.2 + rollup: 2.79.1 + serialize-javascript: 4.0.0 + terser: 5.19.4 + dev: true + + /rollup-plugin-typescript2@0.34.1(rollup@3.29.1)(typescript@4.9.5): + resolution: {integrity: sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==} + peerDependencies: + rollup: '>=1.26.3' + typescript: '>=2.4.0' + dependencies: + '@rollup/pluginutils': 4.2.1 + find-cache-dir: 3.3.2 + fs-extra: 10.1.0 + rollup: 3.29.1 + semver: 7.5.4 + tslib: 2.6.2 + typescript: 4.9.5 + dev: true + + /rollup-pluginutils@1.5.2: + resolution: {integrity: sha512-SjdWWWO/CUoMpDy8RUbZ/pSpG68YHmhk5ROKNIoi2En9bJ8bTt3IhYi254RWiTclQmL7Awmrq+rZFOhZkJAHmQ==} + dependencies: + estree-walker: 0.2.1 + minimatch: 3.1.2 + dev: true + + /rollup-pluginutils@2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + dependencies: + estree-walker: 0.6.1 + dev: true + + /rollup@0.25.8: + resolution: {integrity: sha512-a2S4Bh3bgrdO4BhKr2E4nZkjTvrJ2m2bWjMTzVYtoqSCn0HnuxosXnaJUHrMEziOWr3CzL9GjilQQKcyCQpJoA==} + hasBin: true + dependencies: + chalk: 1.1.3 + minimist: 1.2.8 + source-map-support: 0.3.3 + dev: false + + /rollup@0.34.13: + resolution: {integrity: sha512-DlmYghq9ozqhrGHEEUoPXpDq9isXuejioj4toBiMXEpp7K8jlsaURcC2iMFa/J6E81vWuq5cYYafStcOgyFDUg==} + hasBin: true + dependencies: + source-map-support: 0.4.18 + dev: true + + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /rollup@3.29.1: + resolution: {integrity: sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true + + /rsvp@4.8.5: + resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} + engines: {node: 6.* || >= 7.*} + dev: true + + /rtl-css-js@1.16.1: + resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} + dependencies: + '@babel/runtime': 7.22.15 + dev: false + + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /run-queue@1.0.3: + resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} + dependencies: + aproba: 1.2.0 + dev: true + + /rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false + + /rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + dev: true + + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safe-identifier@0.4.2: + resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} + dev: true + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-regex: 1.1.4 + + /safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + dependencies: + ret: 0.1.15 + dev: true + + /safe-regex@2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + dependencies: + regexp-tree: 0.1.27 + dev: true + + /safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + dev: false + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /sane@4.1.0: + resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} + engines: {node: 6.* || 8.* || >= 10.*} + deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added + hasBin: true + dependencies: + '@cnakazawa/watch': 1.0.4 + anymatch: 2.0.0 + capture-exit: 2.0.0 + exec-sh: 0.3.6 + execa: 1.0.0 + fb-watchman: 2.0.2 + micromatch: 3.1.10 + minimist: 1.2.8 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /sanitize.css@13.0.0: + resolution: {integrity: sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==} + dev: true + + /sass-loader@12.6.0(webpack@5.88.2): + resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.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 + dependencies: + klona: 2.0.6 + neo-async: 2.6.2 + webpack: 5.88.2 + dev: true + + /sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + dev: true + + /saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /scheduler@0.19.1: + resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + /scheduler@0.20.2: + resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + + /schema-utils@1.0.0: + resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-errors: 1.0.1(ajv@6.12.6) + ajv-keywords: 3.5.2(ajv@6.12.6) + + /schema-utils@2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.12 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + /schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.12 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.12 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + dependencies: + '@types/json-schema': 7.0.12 + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + ajv-keywords: 5.1.0(ajv@8.12.0) + dev: true + + /screenfull@5.2.0: + resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} + engines: {node: '>=0.10.0'} + dev: false + + /scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + dependencies: + compute-scroll-into-view: 1.0.20 + + /scroll-into-view-if-needed@3.0.10: + resolution: {integrity: sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg==} + dependencies: + compute-scroll-into-view: 3.0.3 + dev: false + + /seamless-immutable@7.1.4: + resolution: {integrity: sha512-XiUO1QP4ki4E2PHegiGAlu6r82o5A+6tRh7IkGGTVg/h+UoeX4nFBeCGPOhb4CYjvkqsfm/TUtvOMYC1xmV30A==} + dev: true + + /select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: true + + /selfsigned@2.1.1: + resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} + engines: {node: '>=10'} + dependencies: + node-forge: 1.3.1 + dev: true + + /semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + dev: true + + /semver-diff@2.1.0: + resolution: {integrity: sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==} + engines: {node: '>=0.10.0'} + dependencies: + semver: 5.7.2 + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + 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 + transitivePeerDependencies: + - supports-color + dev: true + + /serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + + /serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: true + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: true + + /set-function-name@2.0.0: + resolution: {integrity: sha512-WmS8UHojv5s1eSoRSmzO5zzgDq8PE1/X/ij0k+9fMYmINCc6+j+SF3Om8YyucKn2yjnK4ItNZOoQycNnHsZJTw==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.0.1 + has-property-descriptors: 1.0.0 + + /set-harmonic-interval@1.0.1: + resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} + engines: {node: '>=6.9'} + dev: false + + /set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: true + + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + /setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: true + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + /shallow-equal@1.2.1: + resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} + dev: true + + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + /shellwords@0.1.1: + resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} + requiresBuild: true + dev: true + optional: true + + /shortid@2.2.16: + resolution: {integrity: sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dependencies: + nanoid: 2.1.11 + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + + /sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.23 + mrmime: 1.0.1 + totalist: 3.0.1 + dev: false + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + /sitemap@6.4.0: + resolution: {integrity: sha512-DoPKNc2/apQZTUnfiOONWctwq7s6dZVspxAZe2VPMNtoqNq7HgXRvlRnbIpKjf+8+piQdWncwcy+YhhTGY5USQ==} + engines: {node: '>=10.3.0', npm: '>=5.6.0'} + hasBin: true + dependencies: + '@types/node': 14.18.59 + '@types/sax': 1.2.4 + arg: 5.0.2 + sax: 1.2.4 + dev: true + + /size-sensor@1.0.2: + resolution: {integrity: sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw==} + dev: false + + /slash2@2.0.0: + resolution: {integrity: sha512-7ElvBydJPi3MHU/KEOblFSbO/skl4Z69jKkFCpYIYVOMSIZsKi4gYU43HGeZPmjxCXrHekoDAAewphPQNnsqtA==} + engines: {node: '>=6'} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + + /slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + /smart-buffer@1.1.15: + resolution: {integrity: sha512-1+8bxygjTsNfvQe0/0pNBesTOlSHtOeG6b6LYbvsZCCHDKYZ40zcQo6YTnZBWrBSLWOCbrHljLdEmGMYebu7aQ==} + engines: {node: '>= 0.10.15', npm: '>= 1.3.5'} + dev: true + + /smob@1.4.0: + resolution: {integrity: sha512-MqR3fVulhjWuRNSMydnTlweu38UhQ0HXM4buStD/S3mc/BzX3CuM9OmhyQpmtYCvoYdl5ris6TI0ZqH355Ymqg==} + dev: true + + /snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: true + + /snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + dev: true + + /socks-proxy-agent@3.0.1: + resolution: {integrity: sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==} + dependencies: + agent-base: 4.3.0 + socks: 1.1.10 + dev: true + + /socks@1.1.10: + resolution: {integrity: sha512-ArX4vGPULWjKDKgUnW8YzfI2uXW7kzgkJuB0GnFBA/PfT3exrrOk+7Wk2oeb894Qf20u1PWv9LEgrO0Z82qAzA==} + engines: {node: '>= 0.10.0', npm: '>= 1.3.5'} + deprecated: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0 + dependencies: + ip: 1.1.8 + smart-buffer: 1.1.15 + dev: true + + /sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-obj: 1.1.0 + + /sort-object-keys@1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + dev: true + + /sort-package-json@1.57.0: + resolution: {integrity: sha512-FYsjYn2dHTRb41wqnv+uEqCUvBpK3jZcTp9rbz2qDTmel7Pmdtf+i2rLaaPMRZeSVM60V3Se31GyWFpmKs4Q5Q==} + hasBin: true + dependencies: + detect-indent: 6.1.0 + detect-newline: 3.1.0 + git-hooks-list: 1.0.3 + globby: 10.0.0 + is-plain-obj: 2.1.0 + sort-object-keys: 1.1.3 + dev: true + + /source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map-loader@3.0.2(webpack@5.88.2): + resolution: {integrity: sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + abab: 2.0.6 + iconv-lite: 0.6.3 + source-map-js: 1.0.2 + webpack: 5.88.2 + dev: true + + /source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + dev: true + + /source-map-support@0.3.3: + resolution: {integrity: sha512-9O4+y9n64RewmFoKUZ/5Tx9IHIcXM6Q+RTSw6ehnqybUz4a7iwR3Eaw80uLtqqQ5D0C+5H03D4KKGo9PdP33Gg==} + dependencies: + source-map: 0.1.32 + dev: false + + /source-map-support@0.4.18: + resolution: {integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==} + dependencies: + source-map: 0.5.7 + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + /source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: true + + /source-map@0.1.32: + resolution: {integrity: sha512-htQyLrrRLkQ87Zfrir4/yN+vAUd6DNjVayEjTSHXu29AYQJw57I4/xEL/M6p6E/woPNJwvZt6rVlzc7gFEJccQ==} + engines: {node: '>=0.8.0'} + dependencies: + amdefine: 1.0.1 + dev: false + + /source-map@0.5.6: + resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} + engines: {node: '>=0.10.0'} + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + dependencies: + whatwg-url: 7.1.0 + dev: true + + /sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + /sourcemapped-stacktrace@1.1.11: + resolution: {integrity: sha512-O0pcWjJqzQFVsisPlPXuNawJHHg9N9UgpJ/aDmvi9+vnS3x1C0NhwkVFzzZ1VN0Xo+bekyweoqYvBw5ZBKiNnQ==} + dependencies: + source-map: 0.5.6 + dev: true + + /space-separated-tokens@1.1.5: + resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.13 + dev: true + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + dev: true + + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + dev: true + + /spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.4 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: true + + /spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.4 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /specificity@0.4.1: + resolution: {integrity: sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==} + hasBin: true + dev: true + + /speech-rule-engine@4.0.7: + resolution: {integrity: sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==} + hasBin: true + dependencies: + commander: 9.2.0 + wicked-good-xpath: 1.3.0 + xmldom-sre: 0.1.31 + dev: true + + /splaytree@3.1.2: + resolution: {integrity: sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A==} + dev: false + + /split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + /split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + /sql-formatter@2.3.4: + resolution: {integrity: sha512-CajWtvzYoBJbD5PQeVe3E7AOHAIYvRQEPOKgF9kfKNeY8jtjBiiA6pDzkMuAID8jJMluoPvyKveLigSaA5tKQQ==} + dependencies: + lodash: 4.17.21 + dev: false + + /sshpk@1.17.0: + resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /ssri@4.1.6: + resolution: {integrity: sha512-WUbCdgSAMQjTFZRWvSPpauryvREEA+Krn19rx67UlJEJx/M192ZHxMmJXjZ4tkdFm+Sb0SXGlENeQVlA5wY7kA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /ssri@5.3.0: + resolution: {integrity: sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /stack-generator@2.0.10: + resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} + dependencies: + stackframe: 1.3.4 + dev: false + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /stackframe@0.3.1: + resolution: {integrity: sha512-XmoiF4T5nuWEp2x2w92WdGjdHGY/cZa6LIbRsDRQR/Xlk4uW0PAUlH1zJYVffocwKpCdwyuypIp25xsSXEtZHw==} + dev: true + + /stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + /stacktrace-gps@3.1.2: + resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} + dependencies: + source-map: 0.5.6 + stackframe: 1.3.4 + dev: false + + /stacktrace-js@2.0.2: + resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} + dependencies: + error-stack-parser: 2.1.4 + stack-generator: 2.0.10 + stacktrace-gps: 3.1.2 + dev: false + + /static-eval@2.0.2: + resolution: {integrity: sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==} + dependencies: + escodegen: 1.14.3 + dev: true + + /static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: true + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.5 + dev: true + + /stream-browserify@2.0.2: + resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + /stream-buffers@1.0.1: + resolution: {integrity: sha512-t+8bSU8qPq7NnWHWAvikjcZf+biErLZzD15RroYft1IKQwYbkRyiwppT7kNqwdtYLS59YPxc4sTSvwbLSMaodw==} + engines: {node: '>= 0.3.0'} + dev: true + + /stream-each@1.2.3: + resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} + dependencies: + end-of-stream: 1.4.4 + stream-shift: 1.0.1 + dev: true + + /stream-http@2.8.3: + resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.8 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + + /stream-shift@1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + dev: true + + /streamroller@0.4.1: + resolution: {integrity: sha512-w0GGkMlWOiIBIYTmOWHTWKy9Y5hKxGKpQ5WpiHqwhvoSoMHXNTITrk6ZsR3fdgz3Bi/c+CXVHwmfPUQFkEPL+A==} + engines: {node: '>=0.12.0'} + deprecated: 0.x is no longer supported. Please upgrade to 3.x or higher. + dependencies: + date-format: 0.0.0 + debug: 0.7.4 + mkdirp: 0.5.6 + readable-stream: 1.1.14 + transitivePeerDependencies: + - supports-color + dev: true + + /strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + + /strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + /string-argv@0.3.1: + resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} + engines: {node: '>=0.6.19'} + dev: true + + /string-convert@0.2.1: + resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} + + /string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-length@5.0.1: + resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} + engines: {node: '>=12.20'} + dependencies: + char-regex: 2.0.1 + strip-ansi: 7.1.0 + dev: true + + /string-natural-compare@3.0.1: + resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} + dev: true + + /string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.0 + side-channel: 1.0.4 + dev: true + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + + /string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + dev: true + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + + /stringify-entities@3.1.0: + resolution: {integrity: sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==} + dependencies: + character-entities-html4: 1.1.4 + character-entities-legacy: 1.1.4 + xtend: 4.0.2 + dev: true + + /stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: true + + /strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: false + + /strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + dependencies: + ansi-regex: 3.0.1 + dev: true + + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-bom-buf@1.0.0: + resolution: {integrity: sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==} + engines: {node: '>=4'} + dependencies: + is-utf8: 0.2.1 + dev: true + + /strip-bom-stream@2.0.0: + resolution: {integrity: sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==} + engines: {node: '>=0.10.0'} + dependencies: + first-chunk-stream: 2.0.0 + strip-bom: 2.0.0 + dev: true + + /strip-bom@2.0.0: + resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} + engines: {node: '>=0.10.0'} + dependencies: + is-utf8: 0.2.1 + dev: true + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-comments@2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} + dev: true + + /strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-indent@2.0.0: + resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} + engines: {node: '>=4'} + dev: true + + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + /strip-outer@1.0.1: + resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /style-inject@0.3.0: + resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} + dev: true + + /style-loader@3.3.3(webpack@5.88.2): + resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + webpack: 5.88.2 + dev: true + + /style-search@0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + dev: true + + /style-to-object@0.3.0: + resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + dependencies: + inline-style-parser: 0.1.1 + dev: true + + /styled-components@2.4.1(react@16.14.0): + resolution: {integrity: sha512-dO0MpONBmVfjA/DSdpcLYObQZcbM+ZXoBOx5ytk4ZmUuyo3JG7QFMvHQEIvVRL1Uogf6x0DI9XWve6pyW9TTiA==} + peerDependencies: + react: '>= 0.14.0 < 17.0.0-0' + dependencies: + buffer: 5.7.1 + css-to-react-native: 2.3.2 + fbjs: 0.8.18 + hoist-non-react-statics: 1.2.0 + is-plain-object: 2.0.4 + prop-types: 15.8.1 + react: 16.14.0 + stylis: 3.5.4 + supports-color: 3.2.3 + dev: false + + /stylehacks@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /stylehacks@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: true + + /stylelint-config-css-modules@2.3.0(stylelint@13.13.1): + resolution: {integrity: sha512-nSxwaJMv9wBrTAi+O4qXubyi1AR9eB36tJpY0uaFhKgEc3fwWGUzUK1Edl8AQHAoU7wmUeKtsuYjblyRP/V7rw==} + peerDependencies: + stylelint: 11.x - 14.x + dependencies: + stylelint: 13.13.1 + dev: true + + /stylelint-config-prettier@8.0.2(stylelint@13.13.1): + resolution: {integrity: sha512-TN1l93iVTXpF9NJstlvP7nOu9zY2k+mN0NSFQ/VEGz15ZIP9ohdDZTtCWHs5LjctAhSAzaILULGbgiM0ItId3A==} + engines: {node: '>= 10', npm: '>= 5'} + hasBin: true + peerDependencies: + stylelint: '>=11.0.0' + dependencies: + stylelint: 13.13.1 + dev: true + + /stylelint-config-recommended@3.0.0(stylelint@13.13.1): + resolution: {integrity: sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==} + peerDependencies: + stylelint: '>=10.1.0' + dependencies: + stylelint: 13.13.1 + dev: true + + /stylelint-config-standard@20.0.0(stylelint@13.13.1): + resolution: {integrity: sha512-IB2iFdzOTA/zS4jSVav6z+wGtin08qfj+YyExHB3LF9lnouQht//YyB0KZq9gGz5HNPkddHOzcY8HsUey6ZUlA==} + peerDependencies: + stylelint: '>=10.1.0' + dependencies: + stylelint: 13.13.1 + stylelint-config-recommended: 3.0.0(stylelint@13.13.1) + dev: true + + /stylelint-declaration-block-no-ignored-properties@2.7.0(stylelint@13.13.1): + resolution: {integrity: sha512-44SpI9+9Oc1ICuwwRfwS/3npQ2jPobDSTnwWdNgZGryGqQCp17CgEIWjCv1BgUOSzND3RqywNCNLKvO1AOxbfg==} + engines: {node: '>=6'} + peerDependencies: + stylelint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 + dependencies: + stylelint: 13.13.1 + dev: true + + /stylelint@13.13.1: + resolution: {integrity: sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@stylelint/postcss-css-in-js': 0.37.3(postcss-syntax@0.36.2)(postcss@7.0.39) + '@stylelint/postcss-markdown': 0.36.2(postcss-syntax@0.36.2)(postcss@7.0.39) + autoprefixer: 9.8.8 + balanced-match: 2.0.0 + chalk: 4.1.2 + cosmiconfig: 7.1.0 + debug: 4.3.4 + execall: 2.0.0 + fast-glob: 3.3.1 + fastest-levenshtein: 1.0.16 + file-entry-cache: 6.0.1 + get-stdin: 8.0.0 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 5.2.4 + import-lazy: 4.0.0 + imurmurhash: 0.1.4 + known-css-properties: 0.21.0 + lodash: 4.17.21 + log-symbols: 4.1.0 + mathml-tag-names: 2.1.3 + meow: 9.0.0 + micromatch: 4.0.5 + normalize-selector: 0.2.0 + postcss: 7.0.39 + postcss-html: 0.36.0(postcss-syntax@0.36.2)(postcss@7.0.39) + postcss-less: 3.1.4 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.1 + postcss-safe-parser: 4.0.2 + postcss-sass: 0.4.4 + postcss-scss: 2.1.1 + postcss-selector-parser: 6.0.13 + postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39) + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + slash: 3.0.0 + specificity: 0.4.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + style-search: 0.1.0 + sugarss: 2.0.0 + svg-tags: 1.0.0 + table: 6.8.1 + v8-compile-cache: 2.4.0 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - postcss-jsx + - postcss-markdown + - supports-color + dev: true + + /stylis@3.5.4: + resolution: {integrity: sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==} + dev: false + + /stylis@4.3.0: + resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==} + dev: false + + /sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: true + + /sugarss@2.0.0: + resolution: {integrity: sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==} + dependencies: + postcss: 7.0.39 + dev: true + + /supercluster@7.1.5: + resolution: {integrity: sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==} + dependencies: + kdbush: 3.0.0 + dev: false + + /supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + dev: false + + /supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + dependencies: + has-flag: 1.0.0 + dev: false + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color@6.1.0: + resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} + engines: {node: '>=6'} + dependencies: + has-flag: 3.0.0 + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + + /supports-hyperlinks@1.0.1: + resolution: {integrity: sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==} + engines: {node: '>=4'} + dependencies: + has-flag: 2.0.0 + supports-color: 5.5.0 + dev: true + + /supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + dev: true + + /svg-tag-names@1.1.2: + resolution: {integrity: sha512-LIDOy8NRLGfJegTEnpizWA/ofg3Gyx58JgPEEjvATFciUJW9dHZ2aPTYY0Mn2rQYCeUGZElpHfu91OcWK0IMIw==} + dev: false + + /svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + dev: true + + /svgo@1.3.2: + resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} + engines: {node: '>=4.0.0'} + deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. + hasBin: true + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.2.0 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + object.values: 1.1.7 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + dev: true + + /svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + + /svgo@3.0.2: + resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + csso: 5.0.5 + picocolors: 1.0.0 + dev: true + + /swr@1.3.0(react@17.0.2): + resolution: {integrity: sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 17.0.2 + + /swr@2.2.2(react@17.0.2): + resolution: {integrity: sha512-CbR41AoMD4TQBQw9ic3GTXspgfM9Y8Mdhb5Ob4uIKXhWqnRLItwA5fpGvB7SmSw3+zEjb0PdhiEumtUvYoQ+bQ==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 + dependencies: + client-only: 0.0.1 + react: 17.0.2 + use-sync-external-store: 1.2.0(react@17.0.2) + dev: false + + /sylvanas@0.6.1: + resolution: {integrity: sha512-/hI6AJ522jV4+9iQ1lCmwiqBQDDDYQZQVSDRY+Gt5/Mh2i9rqiG6A9ltMFAAqw0fSkjgfFIMI6e0fAyssQ71xw==} + dependencies: + '@babel/core': 7.22.17 + '@babel/plugin-syntax-decorators': 7.22.10(@babel/core@7.22.17) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.17) + '@types/prettier': 1.19.1 + '@umijs/fabric': 2.14.1 + eslint: 7.32.0 + fs-extra: 8.1.0 + import-fresh: 3.3.0 + prettier: 2.8.8 + transitivePeerDependencies: + - postcss-jsx + - postcss-markdown + - supports-color + dev: true + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /table@6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.12.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + /tailwindcss@3.3.3: + resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.5.3 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.1 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.20.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.29 + postcss-import: 15.1.0(postcss@8.4.29) + postcss-js: 4.0.1(postcss@8.4.29) + postcss-load-config: 4.0.1(postcss@8.4.29) + postcss-nested: 6.0.1(postcss@8.4.29) + postcss-selector-parser: 6.0.13 + resolve: 1.22.4 + sucrase: 3.34.0 + transitivePeerDependencies: + - ts-node + dev: true + + /tapable@1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + /tape@4.16.2: + resolution: {integrity: sha512-TUChV+q0GxBBCEbfCYkGLkv8hDJYjMdSWdE0/Lr331sB389dsvFUHNV9ph5iQqKzt8Ss9drzcda/YeexclBFqg==} + hasBin: true + dependencies: + call-bind: 1.0.2 + deep-equal: 1.1.1 + defined: 1.0.1 + dotignore: 0.1.2 + for-each: 0.3.3 + glob: 7.2.3 + has: 1.0.3 + inherits: 2.0.4 + is-regex: 1.1.4 + minimist: 1.2.8 + object-inspect: 1.12.3 + resolve: 1.22.4 + resumer: 0.0.0 + string.prototype.trim: 1.2.8 + through: 2.3.8 + dev: false + + /tar-fs@1.16.3: + resolution: {integrity: sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==} + dependencies: + chownr: 1.1.4 + mkdirp: 0.5.6 + pump: 1.0.3 + tar-stream: 1.6.2 + dev: true + + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: true + + /tar-stream@1.6.2: + resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} + engines: {node: '>= 0.8.0'} + dependencies: + bl: 1.2.3 + buffer-alloc: 1.2.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + readable-stream: 2.3.8 + to-buffer: 1.1.1 + xtend: 4.0.2 + dev: true + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + dev: true + + /tempy@0.6.0: + resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} + engines: {node: '>=10'} + dependencies: + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + dev: true + + /term-size@1.2.0: + resolution: {integrity: sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==} + engines: {node: '>=4'} + dependencies: + execa: 0.7.0 + dev: true + + /terminal-link@1.3.0: + resolution: {integrity: sha512-nFaWG/gs3brGi3opgWU2+dyFGbQ7tueSRYOBOD8URdDXCbAGqDEZzuskCc+okCClYcJFDPwn8e2mbv4FqAnWFA==} + engines: {node: '>=6'} + dependencies: + ansi-escapes: 3.2.0 + supports-hyperlinks: 1.0.1 + dev: true + + /terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + dev: true + + /terser-webpack-plugin@5.3.9(webpack@5.88.2): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.19.4 + webpack: 5.88.2 + + /terser@5.14.2: + resolution: {integrity: sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.10.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + /terser@5.19.4: + resolution: {integrity: sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.10.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + /textextensions@2.6.0: + resolution: {integrity: sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ==} + engines: {node: '>=0.8'} + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + dev: true + + /throat@6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} + dev: true + + /throttle-debounce@3.0.1: + resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} + engines: {node: '>=10'} + dev: false + + /throttle-debounce@5.0.0: + resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} + engines: {node: '>=12.22'} + + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: true + + /through2@3.0.2: + resolution: {integrity: sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + /thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: true + + /timed-out@4.0.1: + resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} + engines: {node: '>=0.10.0'} + dev: true + + /timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + dependencies: + setimmediate: 1.0.5 + + /tiny-invariant@1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + + /tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + /tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + dev: false + + /tinyqueue@2.0.3: + resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} + dev: false + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-arraybuffer@1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} + + /to-buffer@1.1.1: + resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} + dev: true + + /to-fast-properties@1.0.3: + resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} + engines: {node: '>=0.10.0'} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: true + + /toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /topojson-client@3.1.0: + resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + + /toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + dev: false + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: false + + /tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + dev: true + + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + + /tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + dependencies: + punycode: 2.3.0 + dev: true + + /tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + dependencies: + punycode: 2.3.0 + dev: true + + /tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} + dependencies: + punycode: 2.3.0 + dev: true + + /trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: true + + /trim-repeated@1.0.0: + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /trim-right@1.0.1: + resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==} + engines: {node: '>=0.10.0'} + dev: true + + /trough@1.0.5: + resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + dev: true + + /tryer@1.0.1: + resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} + dev: true + + /ts-easing@0.2.0: + resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} + dev: false + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + /tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + dev: false + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /tsutils@3.21.0(typescript@4.9.5): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.9.5 + + /tty-browserify@0.0.0: + resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} + + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tween-functions@1.2.0: + resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} + dev: true + + /tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: true + + /type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: true + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.12 + + /typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: true + + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: true + + /typescript@3.9.10: + resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + /ua-parser-js@0.7.36: + resolution: {integrity: sha512-CPPLoCts2p7D8VbybttE3P2ylv0OBZEAy7a12DsulIEcAiMtWJy+PBgMXgWDI80D5UwqE8oQPHYnk13tm38M2Q==} + + /uglify-js@2.8.29: + resolution: {integrity: sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + source-map: 0.5.7 + yargs: 3.10.0 + optionalDependencies: + uglify-to-browserify: 1.0.2 + dev: false + + /uglify-to-browserify@1.0.2: + resolution: {integrity: sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==} + requiresBuild: true + dev: false + optional: true + + /umi-plugin-antd-icon-config@2.0.4(react-dom@17.0.2)(react@17.0.2)(umi@3.5.41): + resolution: {integrity: sha512-3OqH5KFiuVzhr8UwLO+KZHzHySAqgDBLQUTh8YrehHSs3wgNDYKt0Tk3DIx8SGA6+46bspaK4iIOpTIS7f7RXw==} + peerDependencies: + umi: 3.x + dependencies: + '@ant-design/icons': 4.8.1(react-dom@17.0.2)(react@17.0.2) + umi: 3.5.41(react-router@5.3.4) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /umi-plugin-pro-block@2.0.3(umi@3.5.41): + resolution: {integrity: sha512-eyB6rva3yvKCgEXqLCKytiXvEdIwgFExm2yoqareLz+BoppEzn7IcF0yrmOAwUCPsAOEpkwTawD0CYPG/TESgw==} + peerDependencies: + umi: 3.x + dependencies: + debug: 4.3.4 + umi: 3.5.41(react-router@5.3.4) + transitivePeerDependencies: + - supports-color + dev: true + + /umi-request@1.4.0: + resolution: {integrity: sha512-OknwtQZddZHi0Ggi+Vr/olJ7HNMx4AzlywyK0W3NZBT7B0stjeZ9lcztA85dBgdAj3KVk8uPJPZSnGaDjELhrA==} + dependencies: + isomorphic-fetch: 2.2.1 + qs: 6.11.2 + + /umi-utils@1.7.3: + resolution: {integrity: sha512-KLUGIKXkuPOq8LACQN57nj9rSPIjLz8eLbR4mZpihJ3BgL3f1bZFvmUV/VYHr9D7PfFH2Vb1Y6UAOuNkKL9g2g==} + dependencies: + chalk: 2.4.2 + dotenv: 8.6.0 + is-url: 1.2.4 + node-fetch: 2.6.0 + prettier: 1.15.3 + slash2: 2.0.0 + dev: true + + /umi@3.5.41(react-router@5.3.4): + resolution: {integrity: sha512-sjgfFGC3E5jG5Cn8pXdwODDgPW1hnlkn24f7+onNnNdq77syuc4s3R5z7BKQHbjiWtVVIV1VOFMYE9JsJYnOPQ==} + hasBin: true + dependencies: + '@umijs/bundler-webpack': 3.5.41(react-dom@16.14.0)(react-router@5.3.4)(react@16.14.0) + '@umijs/core': 3.5.41 + '@umijs/deps': 3.5.41 + '@umijs/preset-built-in': 3.5.41(react-dom@16.14.0)(react@16.14.0) + '@umijs/runtime': 3.5.41(react@16.14.0) + '@umijs/types': 3.5.41(react-dom@16.14.0)(react-router@5.3.4)(react@16.14.0) + '@umijs/utils': 3.5.41 + react: 16.14.0 + react-dom: 16.14.0(react@16.14.0) + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - react-router + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + /unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + dependencies: + buffer: 5.7.1 + through: 2.3.8 + dev: true + + /underscore@1.12.1: + resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==} + dev: true + + /underscore@1.7.0: + resolution: {integrity: sha512-cp0oQQyZhUM1kpJDLdGO1jPZHgS/MpzoWYfe9+CM2h/QGDZlqwT2T3YGukuBdaNJ/CAPoeyAZRRHz8JFo176vA==} + dev: true + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + + /unified@8.4.2: + resolution: {integrity: sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==} + dependencies: + '@types/unist': 2.0.8 + bail: 1.0.5 + extend: 3.0.2 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + dev: true + + /unified@9.2.2: + resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} + dependencies: + '@types/unist': 2.0.8 + bail: 1.0.5 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + dev: true + + /union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: true + + /uniq@1.0.1: + resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} + + /unique-filename@1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + dependencies: + unique-slug: 2.0.2 + dev: true + + /unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /unique-string@1.0.0: + resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} + engines: {node: '>=4'} + dependencies: + crypto-random-string: 1.0.0 + dev: true + + /unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + dependencies: + crypto-random-string: 2.0.0 + dev: true + + /unist-builder@2.0.3: + resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} + dev: true + + /unist-util-filter@2.0.3: + resolution: {integrity: sha512-8k6Jl/KLFqIRTHydJlHh6+uFgqYHq66pV75pZgr1JwfyFSjbWb12yfb0yitW/0TbHXjr9U4G9BQpOvMANB+ExA==} + dependencies: + unist-util-is: 4.1.0 + dev: true + + /unist-util-find-after@3.0.0: + resolution: {integrity: sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==} + dependencies: + unist-util-is: 4.1.0 + dev: true + + /unist-util-find-all-after@3.0.2: + resolution: {integrity: sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==} + dependencies: + unist-util-is: 4.1.0 + dev: true + + /unist-util-generated@1.1.6: + resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} + dev: true + + /unist-util-is@4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + dev: true + + /unist-util-position@3.1.0: + resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} + dev: true + + /unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.8 + dev: true + + /unist-util-visit-parents@3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + dependencies: + '@types/unist': 2.0.8 + unist-util-is: 4.1.0 + dev: true + + /unist-util-visit@2.0.3: + resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + dependencies: + '@types/unist': 2.0.8 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + dev: true + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + dev: true + + /unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: true + + /unstated-next@1.1.0: + resolution: {integrity: sha512-AAn47ZncPvgBGOvMcn8tSRxsrqwf2VdAPxLASTuLJvZt4rhKfDvUkmYZLGfclImSfTVMv7tF4ynaVxin0JjDCA==} + + /unzip-response@2.0.1: + resolution: {integrity: sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==} + engines: {node: '>=4'} + dev: true + + /upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + dev: true + + /update-browserslist-db@1.0.11(browserslist@4.21.10): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.10 + escalade: 3.1.1 + picocolors: 1.0.0 + + /update-notifier@2.5.0: + resolution: {integrity: sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==} + engines: {node: '>=4'} + dependencies: + boxen: 1.3.0 + chalk: 2.4.2 + configstore: 3.1.5 + import-lazy: 2.1.0 + is-ci: 1.2.1 + is-installed-globally: 0.1.0 + is-npm: 1.0.0 + latest-version: 3.1.0 + semver-diff: 2.1.0 + xdg-basedir: 3.0.0 + dev: true + + /uppercamelcase@3.0.0: + resolution: {integrity: sha512-zTWmRiOJACCdFGWjzye3L5cjSuVdZ/c8C0iHIwVbfORFD8IhGNAO6BOWkZ+fj+SI6/aFbdjGXE6gwPG780H4gQ==} + engines: {node: '>=4'} + dependencies: + camelcase: 4.1.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + + /urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: true + + /url-parse-lax@1.0.0: + resolution: {integrity: sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==} + engines: {node: '>=0.10.0'} + dependencies: + prepend-http: 1.0.4 + dev: true + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /url@0.11.2: + resolution: {integrity: sha512-7yIgNnrST44S7PJ5+jXbdIupfU1nWUdQJBFBeJRclPXiWgCvrSq5Frw8lr/i//n5sqDfzoKmBymMS81l4U/7cg==} + dependencies: + punycode: 1.4.1 + qs: 6.11.2 + + /use-json-comparison@1.0.6(react@17.0.2): + resolution: {integrity: sha512-xPadt5yMRbEmVfOSGFSMqjjICrq7nLbfSH3rYIXsrtcuFX7PmbYDN/ku8ObBn3v8o/yZelO1OxUS5+5TI3+fUw==} + peerDependencies: + react: '>=16.9.0' + dependencies: + react: 17.0.2 + + /use-media-antd-query@1.1.0(react@17.0.2): + resolution: {integrity: sha512-B6kKZwNV4R+l4Rl11sWO7HqOay9alzs1Vp1b4YJqjz33YxbltBCZtt/yxXxkXN9rc1S7OeEL/GbwC30Wmqhw6Q==} + peerDependencies: + react: '>=16.9.0' + dependencies: + react: 17.0.2 + + /use-subscription@1.5.1(react@16.14.0): + resolution: {integrity: sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + dependencies: + object-assign: 4.1.1 + react: 16.14.0 + + /use-subscription@1.5.1(react@17.0.2): + resolution: {integrity: sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + dependencies: + object-assign: 4.1.1 + react: 17.0.2 + dev: true + + /use-sync-external-store@1.2.0(react@17.0.2): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 17.0.2 + dev: false + + /use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /util.promisify@1.0.1: + resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.1 + has-symbols: 1.0.3 + object.getownpropertydescriptors: 2.1.7 + dev: true + + /util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + dependencies: + inherits: 2.0.3 + + /util@0.11.1: + resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} + dependencies: + inherits: 2.0.3 + + /utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + dev: true + + /utility-types@3.10.0: + resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} + engines: {node: '>= 4'} + dev: false + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: true + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /v8-compile-cache@2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + + /v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} + + /v8-to-istanbul@7.1.2: + resolution: {integrity: sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==} + engines: {node: '>=10.10.0'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + source-map: 0.7.4 + dev: true + + /v8-to-istanbul@8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + engines: {node: '>=10.12.0'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + source-map: 0.7.4 + dev: true + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /validate-npm-package-name@3.0.0: + resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} + dependencies: + builtins: 1.0.3 + dev: true + + /value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: true + + /vfile-location@3.2.0: + resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} + dev: true + + /vfile-message@2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} + dependencies: + '@types/unist': 2.0.8 + unist-util-stringify-position: 2.0.3 + dev: true + + /vfile@4.2.1: + resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + dependencies: + '@types/unist': 2.0.8 + is-buffer: 2.0.5 + unist-util-stringify-position: 2.0.3 + vfile-message: 2.0.4 + dev: true + + /viewport-mercator-project@6.2.3: + resolution: {integrity: sha512-QQb0/qCLlP4DdfbHHSWVYXpghB2wkLIiiZQnoelOB59mXKQSyZVxjreq1S+gaBJFpcGkWEcyVtre0+2y2DTl/Q==} + dependencies: + '@babel/runtime': 7.22.15 + gl-matrix: 3.4.3 + dev: false + + /vinyl-file@3.0.0: + resolution: {integrity: sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.11 + pify: 2.3.0 + strip-bom-buf: 1.0.0 + strip-bom-stream: 2.0.0 + vinyl: 2.2.1 + dev: true + + /vinyl@2.2.1: + resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} + engines: {node: '>= 0.10'} + dependencies: + clone: 2.1.2 + clone-buffer: 1.0.0 + clone-stats: 1.0.0 + cloneable-readable: 1.1.3 + remove-trailing-separator: 1.1.0 + replace-ext: 1.0.1 + dev: true + + /vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + + /vt-pbf@3.1.3: + resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + '@mapbox/vector-tile': 1.3.1 + pbf: 3.2.1 + dev: false + + /w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. + dependencies: + browser-process-hrtime: 1.0.0 + dev: true + + /w3c-xmlserializer@2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + dependencies: + xml-name-validator: 3.0.0 + dev: true + + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + dependencies: + xml-name-validator: 4.0.0 + dev: true + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /warning@3.0.0: + resolution: {integrity: sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==} + dependencies: + loose-envify: 1.4.0 + dev: true + + /warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + dependencies: + loose-envify: 1.4.0 + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + /wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + dev: true + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /web-namespaces@1.1.4: + resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} + dev: true + + /web-vitals@2.1.4: + resolution: {integrity: sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==} + dev: true + + /web-worker-helper@0.0.3: + resolution: {integrity: sha512-/TllNPjGenDwjE67M16TD9ALwuY847/zIoH7r+e5rSeG4kEa3HiMTAsUDj80yzIzhtshkv215KfsnQ/RXR3nVA==} + dev: false + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true + + /webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true + + /webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + dev: true + + /webidl-conversions@6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + dev: true + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /webpack-bundle-analyzer@4.9.1: + resolution: {integrity: sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==} + engines: {node: '>= 10.13.0'} + hasBin: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.10.0 + acorn-walk: 8.2.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.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /webpack-chain@6.5.1: + resolution: {integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==} + engines: {node: '>=8'} + dependencies: + deepmerge: 1.5.2 + javascript-stringify: 2.1.0 + + /webpack-dev-middleware@5.3.3(webpack@5.88.2): + resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.88.2 + dev: true + + /webpack-dev-server@4.15.1(webpack@5.88.2): + resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + dependencies: + '@types/bonjour': 3.5.10 + '@types/connect-history-api-fallback': 1.5.1 + '@types/express': 4.17.17 + '@types/serve-index': 1.9.1 + '@types/serve-static': 1.15.2 + '@types/sockjs': 0.3.33 + '@types/ws': 8.5.5 + ansi-html-community: 0.0.8 + bonjour-service: 1.1.1 + chokidar: 3.5.3 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.18.2 + graceful-fs: 4.2.11 + html-entities: 2.4.0 + http-proxy-middleware: 2.0.6(@types/express@4.17.17) + ipaddr.js: 2.1.0 + launch-editor: 2.6.0 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.1.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.88.2 + webpack-dev-middleware: 5.3.3(webpack@5.88.2) + ws: 8.14.1 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /webpack-manifest-plugin@4.1.1(webpack@5.88.2): + resolution: {integrity: sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==} + engines: {node: '>=12.22.0'} + peerDependencies: + webpack: ^4.44.2 || ^5.47.0 + dependencies: + tapable: 2.2.1 + webpack: 5.88.2 + webpack-sources: 2.3.1 + dev: true + + /webpack-sources@1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: true + + /webpack-sources@2.3.1: + resolution: {integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==} + engines: {node: '>=10.13.0'} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + /webpack@5.88.2: + resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.4 + '@types/estree': 1.0.1 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.21.10 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.3.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.9(webpack@5.88.2) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + /websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: true + + /websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: true + + /whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + dependencies: + iconv-lite: 0.4.24 + dev: true + + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-fetch@3.6.19: + resolution: {integrity: sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==} + + /whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + dev: true + + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} + dependencies: + tr46: 4.1.1 + webidl-conversions: 7.0.0 + dev: true + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + + /whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + + /whatwg-url@8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + dev: true + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.11 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: true + + /which-typed-array@1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + engines: {node: '>= 0.4'} + 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 + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /wicked-good-xpath@1.3.0: + resolution: {integrity: sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==} + dev: true + + /widest-line@2.0.1: + resolution: {integrity: sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==} + engines: {node: '>=4'} + dependencies: + string-width: 2.1.1 + dev: true + + /window-size@0.1.0: + resolution: {integrity: sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==} + engines: {node: '>= 0.8.0'} + dev: false + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wordwrap@0.0.2: + resolution: {integrity: sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==} + engines: {node: '>=0.4.0'} + dev: false + + /workbox-background-sync@6.6.1: + resolution: {integrity: sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg==} + deprecated: this package has been deprecated + dependencies: + idb: 7.1.1 + workbox-core: 6.6.1 + dev: true + + /workbox-broadcast-update@6.6.1: + resolution: {integrity: sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ==} + deprecated: this package has been deprecated + dependencies: + workbox-core: 6.6.1 + dev: true + + /workbox-build@6.6.1: + resolution: {integrity: sha512-INPgDx6aRycAugUixbKgiEQBWD0MPZqU5r0jyr24CehvNuLPSXp/wGOpdRJmts656lNiXwqV7dC2nzyrzWEDnw==} + engines: {node: '>=16.0.0'} + deprecated: this package has been deprecated + dependencies: + '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) + '@babel/core': 7.22.17 + '@babel/preset-env': 7.22.15(@babel/core@7.22.17) + '@babel/runtime': 7.22.15 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.22.17)(rollup@2.79.1) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) + '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) + '@surma/rollup-plugin-off-main-thread': 2.2.3 + ajv: 8.12.0 + common-tags: 1.8.2 + fast-json-stable-stringify: 2.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + lodash: 4.17.21 + pretty-bytes: 5.6.0 + rollup: 2.79.1 + rollup-plugin-terser: 7.0.2(rollup@2.79.1) + source-map: 0.8.0-beta.0 + stringify-object: 3.3.0 + strip-comments: 2.0.1 + tempy: 0.6.0 + upath: 1.2.0 + workbox-background-sync: 6.6.1 + workbox-broadcast-update: 6.6.1 + workbox-cacheable-response: 6.6.1 + workbox-core: 6.6.1 + workbox-expiration: 6.6.1 + workbox-google-analytics: 6.6.1 + workbox-navigation-preload: 6.6.1 + workbox-precaching: 6.6.1 + workbox-range-requests: 6.6.1 + workbox-recipes: 6.6.1 + workbox-routing: 6.6.1 + workbox-strategies: 6.6.1 + workbox-streams: 6.6.1 + workbox-sw: 6.6.1 + workbox-window: 6.6.1 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + dev: true + + /workbox-cacheable-response@6.6.1: + resolution: {integrity: sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag==} + deprecated: workbox-background-sync@6.6.1 + dependencies: + workbox-core: 6.6.1 + dev: true + + /workbox-core@6.6.1: + resolution: {integrity: sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw==} + deprecated: this package has been deprecated + dev: true + + /workbox-expiration@6.6.1: + resolution: {integrity: sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A==} + deprecated: this package has been deprecated + dependencies: + idb: 7.1.1 + workbox-core: 6.6.1 + dev: true + + /workbox-google-analytics@6.6.1: + resolution: {integrity: sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA==} + deprecated: this package has been deprecated + dependencies: + workbox-background-sync: 6.6.1 + workbox-core: 6.6.1 + workbox-routing: 6.6.1 + workbox-strategies: 6.6.1 + dev: true + + /workbox-navigation-preload@6.6.1: + resolution: {integrity: sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA==} + deprecated: this package has been deprecated + dependencies: + workbox-core: 6.6.1 + dev: true + + /workbox-precaching@6.6.1: + resolution: {integrity: sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A==} + deprecated: this package has been deprecated + dependencies: + workbox-core: 6.6.1 + workbox-routing: 6.6.1 + workbox-strategies: 6.6.1 + dev: true + + /workbox-range-requests@6.6.1: + resolution: {integrity: sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g==} + deprecated: this package has been deprecated + dependencies: + workbox-core: 6.6.1 + dev: true + + /workbox-recipes@6.6.1: + resolution: {integrity: sha512-/oy8vCSzromXokDA+X+VgpeZJvtuf8SkQ8KL0xmRivMgJZrjwM3c2tpKTJn6PZA6TsbxGs3Sc7KwMoZVamcV2g==} + deprecated: this package has been deprecated + dependencies: + workbox-cacheable-response: 6.6.1 + workbox-core: 6.6.1 + workbox-expiration: 6.6.1 + workbox-precaching: 6.6.1 + workbox-routing: 6.6.1 + workbox-strategies: 6.6.1 + dev: true + + /workbox-routing@6.6.1: + resolution: {integrity: sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg==} + deprecated: this package has been deprecated + dependencies: + workbox-core: 6.6.1 + dev: true + + /workbox-strategies@6.6.1: + resolution: {integrity: sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw==} + deprecated: this package has been deprecated + dependencies: + workbox-core: 6.6.1 + dev: true + + /workbox-streams@6.6.1: + resolution: {integrity: sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q==} + deprecated: this package has been deprecated + dependencies: + workbox-core: 6.6.1 + workbox-routing: 6.6.1 + dev: true + + /workbox-sw@6.6.1: + resolution: {integrity: sha512-R7whwjvU2abHH/lR6kQTTXLHDFU2izht9kJOvBRYK65FbwutT4VvnUAJIgHvfWZ/fokrOPhfoWYoPCMpSgUKHQ==} + deprecated: this package has been deprecated + dev: true + + /workbox-webpack-plugin@6.6.1(webpack@5.88.2): + resolution: {integrity: sha512-zpZ+ExFj9NmiI66cFEApyjk7hGsfJ1YMOaLXGXBoZf0v7Iu6hL0ZBe+83mnDq3YYWAfA3fnyFejritjOHkFcrA==} + engines: {node: '>=16.0.0'} + deprecated: this package has been deprecated + peerDependencies: + webpack: ^4.4.0 || ^5.9.0 + dependencies: + fast-json-stable-stringify: 2.1.0 + pretty-bytes: 5.6.0 + upath: 1.2.0 + webpack: 5.88.2 + webpack-sources: 1.4.3 + workbox-build: 6.6.1 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + dev: true + + /workbox-window@6.6.1: + resolution: {integrity: sha512-wil4nwOY58nTdCvif/KEZjQ2NP8uk3gGeRNy2jPBbzypU4BT4D9L8xiwbmDBpZlSgJd2xsT9FvSNU0gsxV51JQ==} + deprecated: this package has been deprecated + dependencies: + '@types/trusted-types': 2.0.4 + workbox-core: 6.6.1 + dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: true + + /ws@6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + dev: true + + /ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + 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 + + /ws@8.14.1: + resolution: {integrity: sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==} + 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 + dev: true + + /xdg-basedir@3.0.0: + resolution: {integrity: sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==} + engines: {node: '>=4'} + dev: true + + /xml-name-validator@3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + dev: true + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /xmldom-sre@0.1.31: + resolution: {integrity: sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==} + engines: {node: '>=0.1'} + dev: true + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + /y18n@3.2.2: + resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} + dev: true + + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + /yaml@2.3.2: + resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} + engines: {node: '>= 14'} + dev: true + + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: true + + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + dev: true + + /yargs@3.10.0: + resolution: {integrity: sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==} + dependencies: + camelcase: 1.2.1 + cliui: 2.1.0 + decamelize: 1.2.0 + window-size: 0.1.0 + dev: false + + /yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + /zrender@5.4.4: + resolution: {integrity: sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==} + dependencies: + tslib: 2.3.0 + dev: false + + /zscroller@0.4.8: + resolution: {integrity: sha512-G5NiNLKx2+QhhvZi2yV1jjVXY50otktxkseX2hG2N/eixohOUk0AY8ZpbAxNqS9oJS/NxItCsowupy2tsXxAMw==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /zwitch@1.0.5: + resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} + dev: true From 3fe726ac23202627ac1d0489d1e43e59298e9391 Mon Sep 17 00:00:00 2001 From: jolunoluo Date: Tue, 19 Sep 2023 21:13:39 +0800 Subject: [PATCH 03/11] (improvement)(semantic) support adding tag for metric --- .../main/resources/db/semantic-schema-h2.sql | 1 + .../src/main/resources/db/schema-h2.sql | 1 + .../src/main/resources/db/schema-mysql.sql | 1 + .../src/main/resources/db/sql-update.sql | 4 +- .../src/test/resources/db/schema-h2.sql | 1 + .../api/model/request/MetricBaseReq.java | 3 + .../api/model/request/PageMetricReq.java | 2 - .../api/model/request/PageSchemaItemReq.java | 1 + .../api/model/response/MetricResp.java | 14 ++ .../model/application/MetricServiceImpl.java | 13 +- .../semantic/model/domain/MetricService.java | 5 +- .../model/domain/dataobject/MetricDO.java | 161 +++++++++++++++++- .../domain/dataobject/MetricDOExample.java | 155 +++++++++++++---- .../semantic/model/domain/pojo/Metric.java | 13 +- .../model/domain/utils/MetricConverter.java | 25 ++- .../semantic/model/rest/MetricController.java | 6 + .../main/resources/mapper/MetricDOMapper.xml | 20 ++- .../mapper/custom/MetricDOCustomMapper.xml | 44 ++--- 18 files changed, 384 insertions(+), 86 deletions(-) diff --git a/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql b/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql index e27fcd725..34da654cc 100644 --- a/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql +++ b/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql @@ -108,6 +108,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, + `tags` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_metric IS 'metric information table'; diff --git a/launchers/standalone/src/main/resources/db/schema-h2.sql b/launchers/standalone/src/main/resources/db/schema-h2.sql index b8d090f07..556b19550 100644 --- a/launchers/standalone/src/main/resources/db/schema-h2.sql +++ b/launchers/standalone/src/main/resources/db/schema-h2.sql @@ -190,6 +190,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, + `tags` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_metric IS 'metric information table'; diff --git a/launchers/standalone/src/main/resources/db/schema-mysql.sql b/launchers/standalone/src/main/resources/db/schema-mysql.sql index da3579178..255f2967a 100644 --- a/launchers/standalone/src/main/resources/db/schema-mysql.sql +++ b/launchers/standalone/src/main/resources/db/schema-mysql.sql @@ -254,6 +254,7 @@ CREATE TABLE `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL COMMENT '数值类型', `data_format` varchar(500) DEFAULT NULL COMMENT '数值类型参数', `alias` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, + `tags` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='指标表'; diff --git a/launchers/standalone/src/main/resources/db/sql-update.sql b/launchers/standalone/src/main/resources/db/sql-update.sql index b56df3579..4ba811442 100644 --- a/launchers/standalone/src/main/resources/db/sql-update.sql +++ b/launchers/standalone/src/main/resources/db/sql-update.sql @@ -48,5 +48,7 @@ alter table s2_database drop column domain_id; alter table s2_chat add column agent_id int after chat_id; --20230907 +ALTER TABLE s2_model add alias varchar(200) default null after domain_id; -ALTER TABLE s2_model add alias varchar(200) default null after domain_id; \ No newline at end of file +--20230919 +alter table s2_metric add tags varchar(500) null; \ No newline at end of file diff --git a/launchers/standalone/src/test/resources/db/schema-h2.sql b/launchers/standalone/src/test/resources/db/schema-h2.sql index 64b84e38d..fd6a300f9 100644 --- a/launchers/standalone/src/test/resources/db/schema-h2.sql +++ b/launchers/standalone/src/test/resources/db/schema-h2.sql @@ -205,6 +205,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, + `tags` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_metric IS 'metric information table'; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java index 1540baeeb..7481d997d 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java @@ -4,6 +4,7 @@ package com.tencent.supersonic.semantic.api.model.request; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import com.tencent.supersonic.common.pojo.DataFormat; import lombok.Data; +import java.util.List; @Data @@ -17,4 +18,6 @@ public class MetricBaseReq extends SchemaItem { private DataFormat dataFormat; + private List tags; + } diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java index aad02b810..40edea0c2 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java @@ -9,6 +9,4 @@ public class PageMetricReq extends PageSchemaItemReq { private String type; - private String key; - } diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java index b2580779d..94e26026d 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java @@ -16,4 +16,5 @@ public class PageSchemaItemReq extends PageBaseReq { private List modelIds = Lists.newArrayList(); private Integer sensitiveLevel; private Integer status; + private String key; } diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java index 9afbe3368..08ff264e8 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java @@ -1,11 +1,15 @@ package com.tencent.supersonic.semantic.api.model.response; +import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.DataFormat; import com.tencent.supersonic.semantic.api.model.pojo.MetricTypeParams; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import lombok.Data; import lombok.ToString; +import org.apache.commons.lang3.StringUtils; +import java.util.Arrays; +import java.util.List; @Data @@ -14,6 +18,8 @@ public class MetricResp extends SchemaItem { private Long modelId; + private Long domainId; + private String modelName; //ATOMIC DERIVED @@ -27,5 +33,13 @@ public class MetricResp extends SchemaItem { private String alias; + private List tags; + public void setTag(String tag) { + if (StringUtils.isBlank(tag)) { + tags = Lists.newArrayList(); + } else { + tags = Arrays.asList(tag.split(",")); + } + } } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java index 6545e1b70..dec9d2b3f 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java @@ -28,6 +28,7 @@ import com.tencent.supersonic.semantic.model.domain.utils.MetricConverter; import com.tencent.supersonic.semantic.model.domain.MetricService; import com.tencent.supersonic.semantic.model.domain.pojo.Metric; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; @@ -250,6 +251,16 @@ public class MetricServiceImpl implements MetricService { }); } + @Override + public Set getMetricTags() { + List metricResps = getMetrics(); + if (CollectionUtils.isEmpty(metricResps)) { + return new HashSet<>(); + } + return metricResps.stream().flatMap(metricResp -> + metricResp.getTags().stream()).collect(Collectors.toSet()); + } + private void saveMetricBatch(List metrics, User user) { if (CollectionUtils.isEmpty(metrics)) { @@ -293,7 +304,7 @@ public class MetricServiceImpl implements MetricService { Map modelMap = modelService.getModelMap(); if (!CollectionUtils.isEmpty(metricDOS)) { metricDescs = metricDOS.stream() - .map(metricDO -> MetricConverter.convert2MetricDesc(metricDO, modelMap)) + .map(metricDO -> MetricConverter.convert2MetricResp(metricDO, modelMap)) .collect(Collectors.toList()); } return metricDescs; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java index 1b28e8e64..1071fe27d 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java @@ -7,6 +7,7 @@ import com.tencent.supersonic.semantic.api.model.request.PageMetricReq; import com.tencent.supersonic.semantic.api.model.response.MetricResp; import java.util.List; +import java.util.Set; public interface MetricService { @@ -22,7 +23,7 @@ public interface MetricService { void createMetricBatch(List metricReqs, User user) throws Exception; - PageInfo queryMetric(PageMetricReq pageMetrricReq); + PageInfo queryMetric(PageMetricReq pageMetricReq); MetricResp getMetric(Long modelId, String bizName); @@ -35,4 +36,6 @@ public interface MetricService { void deleteMetric(Long id) throws Exception; List mockAlias(MetricReq metricReq, String mockType, User user); + + Set getMetricTags(); } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java index ceb2fad56..098e63945 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java @@ -3,116 +3,247 @@ package com.tencent.supersonic.semantic.model.domain.dataobject; import java.util.Date; public class MetricDO { - + /** + * + */ private Long id; + /** + * 主体域ID + */ private Long modelId; + /** + * 指标名称 + */ private String name; + /** + * 字段名称 + */ private String bizName; + /** + * 描述 + */ private String description; + /** + * 指标状态,0正常,1下架,2删除 + */ private Integer status; + /** + * 敏感级别 + */ private Integer sensitiveLevel; + /** + * 指标类型 proxy,expr + */ private String type; + /** + * 创建时间 + */ private Date createdAt; + /** + * 创建人 + */ private String createdBy; + /** + * 更新时间 + */ private Date updatedAt; + /** + * 更新人 + */ private String updatedBy; + /** + * 数值类型 + */ private String dataFormatType; + /** + * 数值类型参数 + */ private String dataFormat; + /** + * + */ private String alias; + /** + * + */ + private String tags; + + /** + * 类型参数 + */ private String typeParams; - + /** + * + * @return id + */ public Long getId() { return id; } + /** + * + * @param id + */ public void setId(Long id) { this.id = id; } + /** + * 主体域ID + * @return model_id 主体域ID + */ public Long getModelId() { return modelId; } + /** + * 主体域ID + * @param modelId 主体域ID + */ public void setModelId(Long modelId) { this.modelId = modelId; } + /** + * 指标名称 + * @return name 指标名称 + */ public String getName() { return name; } + /** + * 指标名称 + * @param name 指标名称 + */ public void setName(String name) { this.name = name == null ? null : name.trim(); } + /** + * 字段名称 + * @return biz_name 字段名称 + */ public String getBizName() { return bizName; } + /** + * 字段名称 + * @param bizName 字段名称 + */ public void setBizName(String bizName) { this.bizName = bizName == null ? null : bizName.trim(); } + /** + * 描述 + * @return description 描述 + */ public String getDescription() { return description; } + /** + * 描述 + * @param description 描述 + */ public void setDescription(String description) { this.description = description == null ? null : description.trim(); } + /** + * 指标状态,0正常,1下架,2删除 + * @return status 指标状态,0正常,1下架,2删除 + */ public Integer getStatus() { return status; } + /** + * 指标状态,0正常,1下架,2删除 + * @param status 指标状态,0正常,1下架,2删除 + */ public void setStatus(Integer status) { this.status = status; } + /** + * 敏感级别 + * @return sensitive_level 敏感级别 + */ public Integer getSensitiveLevel() { return sensitiveLevel; } + /** + * 敏感级别 + * @param sensitiveLevel 敏感级别 + */ public void setSensitiveLevel(Integer sensitiveLevel) { this.sensitiveLevel = sensitiveLevel; } + /** + * 指标类型 proxy,expr + * @return type 指标类型 proxy,expr + */ public String getType() { return type; } + /** + * 指标类型 proxy,expr + * @param type 指标类型 proxy,expr + */ public void setType(String type) { this.type = type == null ? null : type.trim(); } + /** + * 创建时间 + * @return created_at 创建时间 + */ public Date getCreatedAt() { return createdAt; } + /** + * 创建时间 + * @param createdAt 创建时间 + */ public void setCreatedAt(Date createdAt) { this.createdAt = createdAt; } + /** + * 创建人 + * @return created_by 创建人 + */ public String getCreatedBy() { return createdBy; } + /** + * 创建人 + * @param createdBy 创建人 + */ public void setCreatedBy(String createdBy) { this.createdBy = createdBy == null ? null : createdBy.trim(); } @@ -182,21 +313,37 @@ public class MetricDO { } /** - * - * @return alias + * + * @return alias */ public String getAlias() { return alias; } /** - * - * @param alias + * + * @param alias */ public void setAlias(String alias) { this.alias = alias == null ? null : alias.trim(); } + /** + * + * @return tags + */ + public String getTags() { + return tags; + } + + /** + * + * @param tags + */ + public void setTags(String tags) { + this.tags = tags == null ? null : tags.trim(); + } + /** * 类型参数 * @return type_params 类型参数 @@ -212,4 +359,4 @@ public class MetricDO { public void setTypeParams(String typeParams) { this.typeParams = typeParams == null ? null : typeParams.trim(); } -} +} \ No newline at end of file diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java index a74ee01eb..d57855cfe 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java @@ -31,6 +31,7 @@ public class MetricDOExample { protected Integer limitEnd; /** + * * @mbg.generated */ public MetricDOExample() { @@ -38,6 +39,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setOrderByClause(String orderByClause) { @@ -45,6 +47,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public String getOrderByClause() { @@ -52,6 +55,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setDistinct(boolean distinct) { @@ -59,6 +63,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public boolean isDistinct() { @@ -66,6 +71,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public List getOredCriteria() { @@ -73,6 +79,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void or(Criteria criteria) { @@ -80,6 +87,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public Criteria or() { @@ -89,6 +97,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public Criteria createCriteria() { @@ -100,6 +109,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ protected Criteria createCriteriaInternal() { @@ -108,6 +118,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void clear() { @@ -117,13 +128,15 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setLimitStart(Integer limitStart) { - this.limitStart = limitStart; + this.limitStart=limitStart; } /** + * * @mbg.generated */ public Integer getLimitStart() { @@ -131,13 +144,15 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setLimitEnd(Integer limitEnd) { - this.limitEnd = limitEnd; + this.limitEnd=limitEnd; } /** + * * @mbg.generated */ public Integer getLimitEnd() { @@ -1177,6 +1192,76 @@ public class MetricDOExample { addCriterion("alias not between", value1, value2, "alias"); return (Criteria) this; } + + public Criteria andTagsIsNull() { + addCriterion("tags is null"); + return (Criteria) this; + } + + public Criteria andTagsIsNotNull() { + addCriterion("tags is not null"); + return (Criteria) this; + } + + public Criteria andTagsEqualTo(String value) { + addCriterion("tags =", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotEqualTo(String value) { + addCriterion("tags <>", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsGreaterThan(String value) { + addCriterion("tags >", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsGreaterThanOrEqualTo(String value) { + addCriterion("tags >=", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsLessThan(String value) { + addCriterion("tags <", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsLessThanOrEqualTo(String value) { + addCriterion("tags <=", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsLike(String value) { + addCriterion("tags like", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotLike(String value) { + addCriterion("tags not like", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsIn(List values) { + addCriterion("tags in", values, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotIn(List values) { + addCriterion("tags not in", values, "tags"); + return (Criteria) this; + } + + public Criteria andTagsBetween(String value1, String value2) { + addCriterion("tags between", value1, value2, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotBetween(String value1, String value2) { + addCriterion("tags not between", value1, value2, "tags"); + return (Criteria) this; + } } /** @@ -1209,6 +1294,38 @@ public class MetricDOExample { private String typeHandler; + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + protected Criterion(String condition) { super(); this.condition = condition; @@ -1244,37 +1361,5 @@ public class MetricDOExample { protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } - - public String getCondition() { - return condition; - } - - public Object getValue() { - return value; - } - - public Object getSecondValue() { - return secondValue; - } - - public boolean isNoValue() { - return noValue; - } - - public boolean isSingleValue() { - return singleValue; - } - - public boolean isBetweenValue() { - return betweenValue; - } - - public boolean isListValue() { - return listValue; - } - - public String getTypeHandler() { - return typeHandler; - } } -} +} \ No newline at end of file diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java index 771915de1..cfdc4917d 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java @@ -1,10 +1,12 @@ package com.tencent.supersonic.semantic.model.domain.pojo; - import com.tencent.supersonic.common.pojo.DataFormat; import com.tencent.supersonic.semantic.api.model.pojo.MetricTypeParams; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import lombok.Data; +import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; +import java.util.List; @Data public class Metric extends SchemaItem { @@ -23,4 +25,13 @@ public class Metric extends SchemaItem { private String alias; + private List tags; + + public String getTag() { + if (CollectionUtils.isEmpty(tags)) { + return ""; + } + return StringUtils.join(tags, ","); + } + } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java index 9b6513d3a..5573c7b87 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java @@ -37,6 +37,7 @@ public class MetricConverter { if (metric.getDataFormat() != null) { metricDO.setDataFormat(JSONObject.toJSONString(metric.getDataFormat())); } + metricDO.setTags(metric.getTag()); return metricDO; } @@ -51,27 +52,23 @@ public class MetricConverter { BeanUtils.copyProperties(metric, metricDO); metricDO.setTypeParams(JSONObject.toJSONString(metric.getTypeParams())); metricDO.setDataFormat(JSONObject.toJSONString(metric.getDataFormat())); + metricDO.setTags(metric.getTag()); return metricDO; } - public static MetricResp convert2MetricDesc(MetricDO metricDO, Map modelMap) { - MetricResp metricDesc = new MetricResp(); - BeanUtils.copyProperties(metricDO, metricDesc); - metricDesc.setTypeParams(JSONObject.parseObject(metricDO.getTypeParams(), MetricTypeParams.class)); - metricDesc.setDataFormat(JSONObject.parseObject(metricDO.getDataFormat(), DataFormat.class)); + public static MetricResp convert2MetricResp(MetricDO metricDO, Map modelMap) { + MetricResp metricResp = new MetricResp(); + BeanUtils.copyProperties(metricDO, metricResp); + metricResp.setTypeParams(JSONObject.parseObject(metricDO.getTypeParams(), MetricTypeParams.class)); + metricResp.setDataFormat(JSONObject.parseObject(metricDO.getDataFormat(), DataFormat.class)); ModelResp modelResp = modelMap.get(metricDO.getModelId()); if (modelResp != null) { - metricDesc.setModelName(modelResp.getName()); + metricResp.setModelName(modelResp.getName()); + metricResp.setDomainId(modelResp.getDomainId()); } - return metricDesc; - } - - public static Metric convert2Metric(MetricDO metricDO) { - Metric metric = new Metric(); - BeanUtils.copyProperties(metricDO, metric); - metric.setTypeParams(JSONObject.parseObject(metricDO.getTypeParams(), MetricTypeParams.class)); - return metric; + metricResp.setTag(metricDO.getTags()); + return metricResp; } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java index 99a164695..d72485009 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java @@ -9,6 +9,7 @@ import com.tencent.supersonic.semantic.api.model.request.PageMetricReq; import com.tencent.supersonic.semantic.api.model.response.MetricResp; import com.tencent.supersonic.semantic.model.domain.MetricService; import java.util.List; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -90,4 +91,9 @@ public class MetricController { } + @GetMapping("/getMetricTags") + public Set getMetricTags() { + return metricService.getMetricTags(); + } + } diff --git a/semantic/model/src/main/resources/mapper/MetricDOMapper.xml b/semantic/model/src/main/resources/mapper/MetricDOMapper.xml index 37f09c2b5..2d20f9ee8 100644 --- a/semantic/model/src/main/resources/mapper/MetricDOMapper.xml +++ b/semantic/model/src/main/resources/mapper/MetricDOMapper.xml @@ -17,6 +17,7 @@ + @@ -52,7 +53,7 @@ id, model_id, name, biz_name, description, status, sensitive_level, type, created_at, - created_by, updated_at, updated_by, data_format_type, data_format, alias + created_by, updated_at, updated_by, data_format_type, data_format, alias, tags type_params @@ -108,13 +109,13 @@ sensitive_level, type, created_at, created_by, updated_at, updated_by, data_format_type, data_format, alias, - type_params) + tags, type_params) values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{bizName,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{sensitiveLevel,jdbcType=INTEGER}, #{type,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, #{updatedBy,jdbcType=VARCHAR}, #{dataFormatType,jdbcType=VARCHAR}, #{dataFormat,jdbcType=VARCHAR}, #{alias,jdbcType=VARCHAR}, - #{typeParams,jdbcType=LONGVARCHAR}) + #{tags,jdbcType=VARCHAR}, #{typeParams,jdbcType=LONGVARCHAR}) insert into s2_metric @@ -164,6 +165,9 @@ alias, + + tags, + type_params, @@ -214,6 +218,9 @@ #{alias,jdbcType=VARCHAR}, + + #{tags,jdbcType=VARCHAR}, + #{typeParams,jdbcType=LONGVARCHAR}, @@ -270,6 +277,9 @@ alias = #{alias,jdbcType=VARCHAR}, + + tags = #{tags,jdbcType=VARCHAR}, + type_params = #{typeParams,jdbcType=LONGVARCHAR}, @@ -292,6 +302,7 @@ data_format_type = #{dataFormatType,jdbcType=VARCHAR}, data_format = #{dataFormat,jdbcType=VARCHAR}, alias = #{alias,jdbcType=VARCHAR}, + tags = #{tags,jdbcType=VARCHAR}, type_params = #{typeParams,jdbcType=LONGVARCHAR} where id = #{id,jdbcType=BIGINT} @@ -310,7 +321,8 @@ updated_by = #{updatedBy,jdbcType=VARCHAR}, data_format_type = #{dataFormatType,jdbcType=VARCHAR}, data_format = #{dataFormat,jdbcType=VARCHAR}, - alias = #{alias,jdbcType=VARCHAR} + alias = #{alias,jdbcType=VARCHAR}, + tags = #{tags,jdbcType=VARCHAR} where id = #{id,jdbcType=BIGINT} \ No newline at end of file diff --git a/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml b/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml index 67db20d9c..8546d856b 100644 --- a/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml +++ b/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml @@ -2,22 +2,26 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + @@ -51,12 +55,11 @@ - id - , model_id, name, biz_name, description, type, created_at, created_by, updated_at, - updated_by + id, model_id, name, biz_name, description, status, sensitive_level, type, created_at, + created_by, updated_at, updated_by, data_format_type, data_format, alias, tags - typeParams + type_params @@ -108,7 +111,8 @@ and ( id like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or biz_name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or - description like CONCAT('%',#{key , jdbcType=VARCHAR},'%') ) + description like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or + tags like CONCAT('%',#{key , jdbcType=VARCHAR},'%') ) and id like CONCAT('%',#{id , jdbcType=VARCHAR},'%') From c8ff37e3042f19b973f016d0c62d5c039ba5b497 Mon Sep 17 00:00:00 2001 From: codescracker Date: Wed, 20 Sep 2023 10:22:20 +0800 Subject: [PATCH 04/11] (improvement)(text2sql) add text2sql feature that only call LLM once, and add correponding configs and docs. (#102) Co-authored-by: shaoweigong --- chat/core/src/main/python/run_config.py | 1 + chat/core/src/main/python/sql/constructor.py | 32 ++----- .../main/python/sql/examples_reload_run.py | 12 ++- .../core/src/main/python/sql/output_parser.py | 34 ++++++- chat/core/src/main/python/sql/prompt_maker.py | 35 ++++++++ chat/core/src/main/python/sql/run.py | 85 +++++++++++++++--- .../src/main/python/supersonic_llmparser.py | 9 +- docs/images/text2sql_config.png | Bin 125579 -> 109487 bytes docs/userguides/text2sql_cn.md | 20 +++-- 9 files changed, 173 insertions(+), 55 deletions(-) diff --git a/chat/core/src/main/python/run_config.py b/chat/core/src/main/python/run_config.py index e0fe5f1aa..2d4cbaf53 100644 --- a/chat/core/src/main/python/run_config.py +++ b/chat/core/src/main/python/run_config.py @@ -15,6 +15,7 @@ CHROMA_DB_PERSIST_DIR = 'chm_db' PRESET_QUERY_COLLECTION_NAME = "preset_query_collection" TEXT2DSL_COLLECTION_NAME = "text2dsl_collection" TEXT2DSL_FEW_SHOTS_EXAMPLE_NUM = 15 +TEXT2DSL_IS_SHORTCUT = False CHROMA_DB_PERSIST_PATH = os.path.join(PROJECT_DIR_PATH, CHROMA_DB_PERSIST_DIR) diff --git a/chat/core/src/main/python/sql/constructor.py b/chat/core/src/main/python/sql/constructor.py index b844a84fe..2553e4eca 100644 --- a/chat/core/src/main/python/sql/constructor.py +++ b/chat/core/src/main/python/sql/constructor.py @@ -22,10 +22,8 @@ from util.text2vec import Text2VecEmbeddingFunction, hg_embedding from util.chromadb_instance import client as chromadb_client, empty_chroma_collection_2 from run_config import TEXT2DSL_COLLECTION_NAME, TEXT2DSL_FEW_SHOTS_EXAMPLE_NUM - def reload_sql_example_collection(vectorstore:Chroma, sql_examplars:List[Mapping[str, str]], - schema_linking_example_selector:SemanticSimilarityExampleSelector, sql_example_selector:SemanticSimilarityExampleSelector, example_nums:int ): @@ -35,20 +33,16 @@ def reload_sql_example_collection(vectorstore:Chroma, print("emptied sql_examples_collection size:", vectorstore._collection.count()) - schema_linking_example_selector = SemanticSimilarityExampleSelector(vectorstore=sql_examples_vectorstore, k=example_nums, - input_keys=["question"], - example_keys=["table_name", "fields_list", "prior_schema_links", "question", "analysis", "schema_links"]) - sql_example_selector = SemanticSimilarityExampleSelector(vectorstore=sql_examples_vectorstore, k=example_nums, - input_keys=["question"], - example_keys=["question", "current_date", "table_name", "schema_links", "sql"]) + input_keys=["question"], + example_keys=["table_name", "fields_list", "prior_schema_links", "question", "analysis", "schema_links", "current_date", "sql"]) for example in sql_examplars: - schema_linking_example_selector.add_example(example) + sql_example_selector.add_example(example) print("reloaded sql_examples_collection size:", vectorstore._collection.count()) - return vectorstore, schema_linking_example_selector, sql_example_selector + return vectorstore, sql_example_selector sql_examples_vectorstore = Chroma(collection_name=TEXT2DSL_COLLECTION_NAME, @@ -57,22 +51,14 @@ sql_examples_vectorstore = Chroma(collection_name=TEXT2DSL_COLLECTION_NAME, example_nums = TEXT2DSL_FEW_SHOTS_EXAMPLE_NUM -schema_linking_example_selector = SemanticSimilarityExampleSelector(vectorstore=sql_examples_vectorstore, k=example_nums, - input_keys=["question"], - example_keys=["table_name", "fields_list", "prior_schema_links", "question", "analysis", "schema_links"]) - sql_example_selector = SemanticSimilarityExampleSelector(vectorstore=sql_examples_vectorstore, k=example_nums, - input_keys=["question"], - example_keys=["question", "current_date", "table_name", "schema_links", "sql"]) + input_keys=["question"], + example_keys=["table_name", "fields_list", "prior_schema_links", "question", "analysis", "schema_links", "current_date", "sql"]) if sql_examples_vectorstore._collection.count() > 0: print("examples already in sql_vectorstore") print("init sql_vectorstore size:", sql_examples_vectorstore._collection.count()) - if sql_examples_vectorstore._collection.count() < len(sql_examplars): - print("sql_examplars size:", len(sql_examplars)) - sql_examples_vectorstore, schema_linking_example_selector, sql_example_selector = reload_sql_example_collection(sql_examples_vectorstore, sql_examplars, schema_linking_example_selector, sql_example_selector, example_nums) - print("added sql_vectorstore size:", sql_examples_vectorstore._collection.count()) -else: - sql_examples_vectorstore, schema_linking_example_selector, sql_example_selector = reload_sql_example_collection(sql_examples_vectorstore, sql_examplars, schema_linking_example_selector, sql_example_selector, example_nums) - print("added sql_vectorstore size:", sql_examples_vectorstore._collection.count()) +print("sql_examplars size:", len(sql_examplars)) +sql_examples_vectorstore, sql_example_selector = reload_sql_example_collection(sql_examples_vectorstore, sql_examplars, sql_example_selector, example_nums) +print("added sql_vectorstore size:", sql_examples_vectorstore._collection.count()) diff --git a/chat/core/src/main/python/sql/examples_reload_run.py b/chat/core/src/main/python/sql/examples_reload_run.py index 65f1e3bed..65df9087d 100644 --- a/chat/core/src/main/python/sql/examples_reload_run.py +++ b/chat/core/src/main/python/sql/examples_reload_run.py @@ -8,24 +8,22 @@ import json sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.append(os.path.dirname(os.path.abspath(__file__))) -from run_config import TEXT2DSL_FEW_SHOTS_EXAMPLE_NUM +from run_config import TEXT2DSL_FEW_SHOTS_EXAMPLE_NUM, TEXT2DSL_IS_SHORTCUT from few_shot_example.sql_exampler import examplars as sql_examplars -from run_config import LLMPARSER_HOST -from run_config import LLMPARSER_PORT +from run_config import LLMPARSER_HOST, LLMPARSER_PORT def text2dsl_setting_update(llm_parser_host:str, llm_parser_port:str, - sql_examplars:List[Mapping[str, str]], example_nums:int): + sql_examplars:List[Mapping[str, str]], example_nums:int, is_shortcut:bool): url = f"http://{llm_parser_host}:{llm_parser_port}/query2sql_setting_update/" print("url: ", url) - payload = {"sqlExamplars":sql_examplars, "exampleNums":example_nums} + payload = {"sqlExamplars":sql_examplars, "exampleNums":example_nums, "isShortcut":is_shortcut} headers = {'content-type': 'application/json'} response = requests.post(url, data=json.dumps(payload), headers=headers) print(response.text) if __name__ == "__main__": - arguments = sys.argv text2dsl_setting_update(LLMPARSER_HOST, LLMPARSER_PORT, - sql_examplars, TEXT2DSL_FEW_SHOTS_EXAMPLE_NUM) + sql_examplars, TEXT2DSL_FEW_SHOTS_EXAMPLE_NUM, TEXT2DSL_IS_SHORTCUT) diff --git a/chat/core/src/main/python/sql/output_parser.py b/chat/core/src/main/python/sql/output_parser.py index c90388850..aa0ff317f 100644 --- a/chat/core/src/main/python/sql/output_parser.py +++ b/chat/core/src/main/python/sql/output_parser.py @@ -10,4 +10,36 @@ def schema_link_parse(schema_link_output): print(e) schema_link_output = None - return schema_link_output \ No newline at end of file + return schema_link_output + +def combo_schema_link_parse(schema_linking_sql_combo_output: str): + try: + schema_linking_sql_combo_output = schema_linking_sql_combo_output.strip() + pattern = r'Schema_links:(\[.*?\])' + schema_links_match = re.search(pattern, schema_linking_sql_combo_output) + + if schema_links_match: + schema_links = schema_links_match.group(1) + else: + schema_links = None + except Exception as e: + print(e) + schema_links = None + + return schema_links + +def combo_sql_parse(schema_linking_sql_combo_output: str): + try: + schema_linking_sql_combo_output = schema_linking_sql_combo_output.strip() + pattern = r'SQL:(.*)' + sql_match = re.search(pattern, schema_linking_sql_combo_output) + + if sql_match: + sql = sql_match.group(1) + else: + sql = None + except Exception as e: + print(e) + sql = None + + return sql diff --git a/chat/core/src/main/python/sql/prompt_maker.py b/chat/core/src/main/python/sql/prompt_maker.py index 0cfed83b1..7c4f5fccc 100644 --- a/chat/core/src/main/python/sql/prompt_maker.py +++ b/chat/core/src/main/python/sql/prompt_maker.py @@ -73,3 +73,38 @@ def sql_exampler(user_query: str, schema_links=schema_link_str) return sql_example_prompt + + +def schema_linking_sql_combo_examplar(user_query: str, + domain_name: str, + data_date : str, + fields_list: List[str], + prior_schema_links: Mapping[str,str], + example_selector: SemanticSimilarityExampleSelector) -> str: + + prior_schema_links_str = '['+ ','.join(["""'{}'->{}""".format(k,v) for k,v in prior_schema_links.items()]) + ']' + + example_prompt_template = PromptTemplate(input_variables=["table_name", "fields_list", "prior_schema_links", "current_date", "question", "analysis", "schema_links", "sql"], + template="Table {table_name}, columns = {fields_list}, prior_schema_links = {prior_schema_links}\nCurrent_date:{current_date}\n问题:{question}\n分析:{analysis} 所以Schema_links是:\nSchema_links:{schema_links}\nSQL:{sql}") + + instruction = "# 根据数据库的表结构,参考先验信息,找出为每个问题生成SQL查询语句的schema_links,再根据schema_links为每个问题生成SQL查询语句" + + schema_linking_sql_combo_prompt = "Table {table_name}, columns = {fields_list}, prior_schema_links = {prior_schema_links}\nCurrent_date:{current_date}\n问题:{question}\n分析: 让我们一步一步地思考。" + + schema_linking_sql_combo_example_prompt_template = FewShotPromptTemplate( + example_selector=example_selector, + example_prompt=example_prompt_template, + example_separator="\n\n", + prefix=instruction, + input_variables=["table_name", "fields_list", "prior_schema_links", "current_date", "question"], + suffix=schema_linking_sql_combo_prompt + ) + + schema_linking_sql_combo_example_prompt = schema_linking_sql_combo_example_prompt_template.format(table_name=domain_name, + fields_list=fields_list, + prior_schema_links=prior_schema_links_str, + current_date=data_date, + question=user_query) + return schema_linking_sql_combo_example_prompt + + diff --git a/chat/core/src/main/python/sql/run.py b/chat/core/src/main/python/sql/run.py index a7ece82d8..02931b5c8 100644 --- a/chat/core/src/main/python/sql/run.py +++ b/chat/core/src/main/python/sql/run.py @@ -7,32 +7,37 @@ import sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.append(os.path.dirname(os.path.abspath(__file__))) -from sql.prompt_maker import schema_linking_exampler, sql_exampler -from sql.constructor import schema_linking_example_selector, sql_example_selector,sql_examples_vectorstore, reload_sql_example_collection -from sql.output_parser import schema_link_parse +from sql.prompt_maker import schema_linking_exampler, sql_exampler, schema_linking_sql_combo_examplar +from sql.constructor import sql_examples_vectorstore, sql_example_selector, reload_sql_example_collection +from sql.output_parser import schema_link_parse, combo_schema_link_parse, combo_sql_parse from util.llm_instance import llm - +from run_config import TEXT2DSL_IS_SHORTCUT class Text2DSLAgent(object): def __init__(self): self.schema_linking_exampler = schema_linking_exampler self.sql_exampler = sql_exampler + self.schema_linking_sql_combo_exampler = schema_linking_sql_combo_examplar + self.sql_examples_vectorstore = sql_examples_vectorstore - self.schema_linking_example_selector = schema_linking_example_selector self.sql_example_selector = sql_example_selector self.schema_link_parse = schema_link_parse + self.combo_schema_link_parse = combo_schema_link_parse + self.combo_sql_parse = combo_sql_parse self.llm = llm - def update_examples(self, sql_examplars, example_nums): - self.sql_examples_vectorstore, self.schema_linking_example_selector, self.sql_example_selector = reload_sql_example_collection(self.sql_examples_vectorstore, - sql_examplars, - self.schema_linking_example_selector, - self.sql_example_selector, - example_nums) + self.is_shortcut = TEXT2DSL_IS_SHORTCUT + + def update_examples(self, sql_examples, example_nums, is_shortcut): + self.sql_examples_vectorstore, self.sql_example_selector = reload_sql_example_collection(self.sql_examples_vectorstore, + sql_examples, + self.sql_example_selector, + example_nums) + self.is_shortcut = is_shortcut def query2sql(self, query_text: str, schema : Union[dict, None] = None, @@ -53,14 +58,14 @@ class Text2DSLAgent(object): model_name = schema['modelName'] fields_list = schema['fieldNameList'] - schema_linking_prompt = self.schema_linking_exampler(query_text, model_name, fields_list, prior_schema_links, self.schema_linking_example_selector) + schema_linking_prompt = self.schema_linking_exampler(query_text, model_name, fields_list, prior_schema_links, self.sql_example_selector) print("schema_linking_prompt->", schema_linking_prompt) schema_link_output = self.llm(schema_linking_prompt) schema_link_str = self.schema_link_parse(schema_link_output) sql_prompt = self.sql_exampler(query_text, model_name, schema_link_str, current_date, self.sql_example_selector) print("sql_prompt->", sql_prompt) - sql_output = llm(sql_prompt) + sql_output = self.llm(sql_prompt) resp = dict() resp['query'] = query_text @@ -69,7 +74,7 @@ class Text2DSLAgent(object): resp['priorSchemaLinking'] = linking resp['dataDate'] = current_date - resp['schemaLinkingOutput'] = schema_link_output + resp['analysisOutput'] = schema_link_output resp['schemaLinkStr'] = schema_link_str resp['sqlOutput'] = sql_output @@ -78,5 +83,57 @@ class Text2DSLAgent(object): return resp + def query2sqlcombo(self, query_text: str, + schema : Union[dict, None] = None, + current_date: str = None, + linking: Union[List[Mapping[str, str]], None] = None + ): + + print("query_text: ", query_text) + print("schema: ", schema) + print("current_date: ", current_date) + print("prior_schema_links: ", linking) + + if linking is not None: + prior_schema_links = {item['fieldValue']:item['fieldName'] for item in linking} + else: + prior_schema_links = {} + + model_name = schema['modelName'] + fields_list = schema['fieldNameList'] + + schema_linking_sql_combo_prompt = self.schema_linking_sql_combo_exampler(query_text, model_name, current_date, fields_list, + prior_schema_links, self.sql_example_selector) + print("schema_linking_sql_combo_prompt->", schema_linking_sql_combo_prompt) + schema_linking_sql_combo_output = self.llm(schema_linking_sql_combo_prompt) + + schema_linking_str = self.combo_schema_link_parse(schema_linking_sql_combo_output) + sql_str = self.combo_sql_parse(schema_linking_sql_combo_output) + + resp = dict() + resp['query'] = query_text + resp['model'] = model_name + resp['fields'] = fields_list + resp['priorSchemaLinking'] = prior_schema_links + resp['dataDate'] = current_date + + resp['analysisOutput'] = schema_linking_sql_combo_output + resp['schemaLinkStr'] = schema_linking_str + resp['sqlOutput'] = sql_str + + print("resp: ", resp) + + return resp + + def query2sql_run(self, query_text: str, + schema : Union[dict, None] = None, + current_date: str = None, + linking: Union[List[Mapping[str, str]], None] = None): + + if self.is_shortcut: + return self.query2sqlcombo(query_text, schema, current_date, linking) + else: + return self.query2sql(query_text, schema, current_date, linking) + text2sql_agent = Text2DSLAgent() diff --git a/chat/core/src/main/python/supersonic_llmparser.py b/chat/core/src/main/python/supersonic_llmparser.py index 963328a27..40ebfe613 100644 --- a/chat/core/src/main/python/supersonic_llmparser.py +++ b/chat/core/src/main/python/supersonic_llmparser.py @@ -51,7 +51,7 @@ async def din_query2sql(query_body: Mapping[str, Any]): else: linking = query_body['linking'] - resp = text2sql_agent.query2sql(query_text=query_text, + resp = text2sql_agent.query2sql_run(query_text=query_text, schema=schema, current_date=current_date, linking=linking) return resp @@ -70,7 +70,12 @@ async def query2sql_setting_update(query_body: Mapping[str, Any]): else: example_nums = query_body['exampleNums'] - text2sql_agent.update_examples(sql_examplars=sql_examplars, example_nums=example_nums) + if 'isShortcut' not in query_body: + raise HTTPException(status_code=400, detail="isShortcut is not in query_body") + else: + is_shortcut = query_body['isShortcut'] + + text2sql_agent.update_examples(sql_examples=sql_examplars, example_nums=example_nums, is_shortcut=is_shortcut) return "success" diff --git a/docs/images/text2sql_config.png b/docs/images/text2sql_config.png index af552aca34d9b37bcadc0c7becef7c01128c0cfa..d9f6414387fc4a0a12fbb910f97954b0d8f8518e 100644 GIT binary patch literal 109487 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 mMdtqRVP}0XO)X$<{Lg-7Q*Imc3PDE(An +3. SQL生成方式的配置 + - 在 supersonic/chat/core/src/main/python/run_config.py 中通过 TEXT2DSL_IS_SHORTCUT 变量进行配置。 + - 默认值为False;当为False时,会调用2次LLM生成SQL;当为True时,会只调用1次LLM生成SQL。相较于2次LLM调用生成的SQL,耗时会减少30-40%,token的消耗量会减少30%左右,但生成的SQL正确率会有所下降。 +

-3. 运行中更新配置的脚本。 - - 如果在启动项目后,用户需要对text2sql功能的相关配置进行调试,可以在修改相关配置文件后,通过脚本 supersonic/chat/core/src/main/python/bin/text2sql_resetting.sh 在项目运行中让配置生效。 - +### **运行中更新配置的脚本** +1. 如果在启动项目后,用户需要对text2sql功能的相关配置进行调试,可以在修改相关配置文件后,通过以下2种方式让配置在项目运行中让配置生效。 + - 执行 supersonic-daemon.sh reload llmparser + - 执行 python examples_reload_run.py ### **FAQ** 1. 生成一个SQL需要消耗的的LLM token数量太多了,按照openAI对token的收费标准,生成一个SQL太贵了,可以少用一些token吗? - - 可以。 用户可以根据自身需求,如配置方式1.中所示,修改样本池中的样本,选用一些更加简短的样本。如配置方式2.中所示,减少使用的样本数量。 + - 可以。 用户可以根据自身需求,如配置方式1.中所示,修改样本池中的样本,选用一些更加简短的样本。如配置方式2.中所示,减少使用的样本数量。配置方式3.中所示,只调用1次LLM生成SQL。 - 需要注意,样本和样本数量的选择对生成SQL的质量有很大的影响。过于激进的降低输入的token数量可能会降低生成SQL的质量。需要用户根据自身业务特点实测后进行平衡。 From 98656eb445afc04e1cf0d53fbda4972c4be6a5a9 Mon Sep 17 00:00:00 2001 From: lexluo09 <39718951+lexluo09@users.noreply.github.com> Date: Wed, 20 Sep 2023 11:21:50 +0800 Subject: [PATCH 05/11] (improvement)(project) dsl support get topN dimension/metric by useCount and fix semanticService get dimension/metric usrCount error (#105) --- .../chat/config/LLMParserConfig.java | 6 ++ .../chat/parser/llm/dsl/LLMDslParser.java | 35 +++++++-- .../semantic/DefaultSemanticConfig.java | 1 + .../semantic/LocalSemanticLayer.java | 5 +- .../knowledge/service/SchemaService.java | 2 +- .../semantic/api/model/pojo/QueryStat.java | 2 +- .../api/query/request/ItemUseReq.java | 6 ++ .../model/application/ModelServiceImpl.java | 41 +++++----- .../query/service/QueryServiceImpl.java | 5 +- .../query/service/SchemaServiceImpl.java | 5 +- .../semantic/query/utils/StatUtils.java | 78 +++++++++++++++++-- .../src/main/resources/mapper/StatMapper.xml | 6 ++ 12 files changed, 154 insertions(+), 38 deletions(-) diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/config/LLMParserConfig.java b/chat/core/src/main/java/com/tencent/supersonic/chat/config/LLMParserConfig.java index e44029538..6032b798c 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/config/LLMParserConfig.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/config/LLMParserConfig.java @@ -16,4 +16,10 @@ public class LLMParserConfig { @Value("${query2sql.path:/query2sql}") private String queryToSqlPath; + @Value("${dimension.topn:5}") + private Integer dimensionTopN; + + @Value("${metric.topn:5}") + private Integer metricTopN; + } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java index 9d486d6e9..6acceb3d0 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java @@ -39,6 +39,7 @@ import com.tencent.supersonic.semantic.api.model.enums.TimeDimensionEnum; import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum; import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -87,7 +88,7 @@ public class LLMDslParser implements SemanticParser { return; } - LLMReq llmReq = getLlmReq(queryCtx, modelId); + LLMReq llmReq = getLlmReq(queryCtx, modelId, llmParserConfig); LLMResp llmResp = requestLLM(llmReq, modelId, llmParserConfig); if (Objects.isNull(llmResp)) { @@ -340,22 +341,28 @@ public class LLMDslParser implements SemanticParser { return null; } - private LLMReq getLlmReq(QueryContext queryCtx, Long modelId) { + private LLMReq getLlmReq(QueryContext queryCtx, Long modelId, LLMParserConfig llmParserConfig) { SemanticSchema semanticSchema = ContextUtils.getBean(SchemaService.class).getSemanticSchema(); Map modelIdToName = semanticSchema.getModelIdToName(); String queryText = queryCtx.getRequest().getQueryText(); + LLMReq llmReq = new LLMReq(); llmReq.setQueryText(queryText); + LLMReq.LLMSchema llmSchema = new LLMReq.LLMSchema(); llmSchema.setModelName(modelIdToName.get(modelId)); llmSchema.setDomainName(modelIdToName.get(modelId)); - List fieldNameList = getFieldNameList(queryCtx, modelId, semanticSchema); + + List fieldNameList = getFieldNameList(queryCtx, modelId, semanticSchema, llmParserConfig); + fieldNameList.add(BaseSemanticCorrector.DATE_FIELD); llmSchema.setFieldNameList(fieldNameList); llmReq.setSchema(llmSchema); + List linking = new ArrayList<>(); linking.addAll(getValueList(queryCtx, modelId, semanticSchema)); llmReq.setLinking(linking); + String currentDate = DSLDateHelper.getReferenceDate(modelId); llmReq.setCurrentDate(currentDate); return llmReq; @@ -399,12 +406,27 @@ public class LLMDslParser implements SemanticParser { } - protected List getFieldNameList(QueryContext queryCtx, Long modelId, SemanticSchema semanticSchema) { + protected List getFieldNameList(QueryContext queryCtx, Long modelId, SemanticSchema semanticSchema, + LLMParserConfig llmParserConfig) { Map itemIdToName = getItemIdToName(modelId, semanticSchema); + Set results = semanticSchema.getDimensions().stream() + .sorted(Comparator.comparing(SchemaElement::getUseCnt).reversed()) + .limit(llmParserConfig.getDimensionTopN()) + .map(entry -> entry.getName()) + .collect(Collectors.toSet()); + + Set metrics = semanticSchema.getMetrics().stream() + .sorted(Comparator.comparing(SchemaElement::getUseCnt).reversed()) + .limit(llmParserConfig.getMetricTopN()) + .map(entry -> entry.getName()) + .collect(Collectors.toSet()); + + results.addAll(metrics); + List matchedElements = queryCtx.getMapInfo().getMatchedElements(modelId); if (CollectionUtils.isEmpty(matchedElements)) { - return new ArrayList<>(); + return new ArrayList<>(results); } Set fieldNameList = matchedElements.stream() .filter(schemaElementMatch -> { @@ -423,7 +445,8 @@ public class LLMDslParser implements SemanticParser { }) .filter(name -> StringUtils.isNotEmpty(name) && !name.contains("%")) .collect(Collectors.toSet()); - return new ArrayList<>(fieldNameList); + results.addAll(fieldNameList); + return new ArrayList<>(results); } protected Map getItemIdToName(Long modelId, SemanticSchema semanticSchema) { diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/DefaultSemanticConfig.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/DefaultSemanticConfig.java index 9038330cf..2152da0b7 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/DefaultSemanticConfig.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/DefaultSemanticConfig.java @@ -40,4 +40,5 @@ public class DefaultSemanticConfig { @Value("${explain.path:/api/semantic/query/explain}") private String explainPath; + } diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java index c675a7217..9d2d42ee3 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java @@ -81,8 +81,9 @@ public class LocalSemanticLayer extends BaseSemanticLayer { public List doFetchModelSchema(List ids) { ModelSchemaFilterReq filter = new ModelSchemaFilterReq(); filter.setModelIds(ids); - modelService = ContextUtils.getBean(ModelService.class); - return modelService.fetchModelSchema(filter); + schemaService = ContextUtils.getBean(SchemaService.class); + User user = User.getFakeUser(); + return schemaService.fetchModelSchema(filter, user); } @Override diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java index 57256c79b..6bc575e62 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java @@ -18,7 +18,7 @@ public class SchemaService { public static final String ALL_CACHE = "all"; - private static final Integer META_CACHE_TIME = 5; + private static final Integer META_CACHE_TIME = 2; private SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer(); private LoadingCache cache = CacheBuilder.newBuilder() diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/QueryStat.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/QueryStat.java index f08b126f9..b9819ac69 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/QueryStat.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/QueryStat.java @@ -79,7 +79,7 @@ public class QueryStat { return this; } - public QueryStat setClassId(Long modelId) { + public QueryStat setModelId(Long modelId) { this.modelId = modelId; return this; } diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/ItemUseReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/ItemUseReq.java index d1af76a40..f98a808dc 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/ItemUseReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/query/request/ItemUseReq.java @@ -1,5 +1,6 @@ package com.tencent.supersonic.semantic.api.query.request; +import java.util.List; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; @@ -11,6 +12,7 @@ public class ItemUseReq { private String startTime; private Long modelId; + private List modelIds; private Boolean cacheEnable = true; private String metric; @@ -18,4 +20,8 @@ public class ItemUseReq { this.startTime = startTime; this.modelId = modelId; } + public ItemUseReq(String startTime, List modelIds) { + this.startTime = startTime; + this.modelIds = modelIds; + } } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java index b10dd9704..e0aaafc76 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java @@ -4,44 +4,43 @@ import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.service.UserService; +import com.tencent.supersonic.common.pojo.enums.AuthType; import com.tencent.supersonic.common.util.BeanMapper; import com.tencent.supersonic.common.util.JsonUtil; -import com.tencent.supersonic.common.pojo.enums.AuthType; import com.tencent.supersonic.semantic.api.model.request.ModelReq; import com.tencent.supersonic.semantic.api.model.request.ModelSchemaFilterReq; import com.tencent.supersonic.semantic.api.model.response.DatabaseResp; -import com.tencent.supersonic.semantic.api.model.response.ModelResp; -import com.tencent.supersonic.semantic.api.model.response.DomainResp; -import com.tencent.supersonic.semantic.api.model.response.DimensionResp; -import com.tencent.supersonic.semantic.api.model.response.MetricResp; -import com.tencent.supersonic.semantic.api.model.response.DimSchemaResp; -import com.tencent.supersonic.semantic.api.model.response.ModelSchemaResp; -import com.tencent.supersonic.semantic.api.model.response.MetricSchemaResp; import com.tencent.supersonic.semantic.api.model.response.DatasourceResp; +import com.tencent.supersonic.semantic.api.model.response.DimSchemaResp; +import com.tencent.supersonic.semantic.api.model.response.DimensionResp; +import com.tencent.supersonic.semantic.api.model.response.DomainResp; +import com.tencent.supersonic.semantic.api.model.response.MetricResp; +import com.tencent.supersonic.semantic.api.model.response.MetricSchemaResp; +import com.tencent.supersonic.semantic.api.model.response.ModelResp; +import com.tencent.supersonic.semantic.api.model.response.ModelSchemaResp; import com.tencent.supersonic.semantic.model.domain.DatabaseService; -import com.tencent.supersonic.semantic.model.domain.ModelService; -import com.tencent.supersonic.semantic.model.domain.DomainService; -import com.tencent.supersonic.semantic.model.domain.DimensionService; -import com.tencent.supersonic.semantic.model.domain.MetricService; import com.tencent.supersonic.semantic.model.domain.DatasourceService; - +import com.tencent.supersonic.semantic.model.domain.DimensionService; +import com.tencent.supersonic.semantic.model.domain.DomainService; +import com.tencent.supersonic.semantic.model.domain.MetricService; +import com.tencent.supersonic.semantic.model.domain.ModelService; import com.tencent.supersonic.semantic.model.domain.dataobject.ModelDO; import com.tencent.supersonic.semantic.model.domain.pojo.Model; import com.tencent.supersonic.semantic.model.domain.repository.ModelRepository; import com.tencent.supersonic.semantic.model.domain.utils.ModelConvert; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.List; -import java.util.Objects; -import java.util.Date; -import java.util.Set; -import java.util.Map; -import java.util.HashSet; -import java.util.ArrayList; -import java.util.stream.Collectors; @Slf4j @Service diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryServiceImpl.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryServiceImpl.java index 3c0c0fc11..298a0e897 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryServiceImpl.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/QueryServiceImpl.java @@ -67,8 +67,11 @@ public class QueryServiceImpl implements QueryService { @Override public Object queryBySql(QueryDslReq querySqlCmd, User user) throws Exception { + statUtils.initStatInfo(querySqlCmd, user); QueryStatement queryStatement = convertToQueryStatement(querySqlCmd, user); - return semanticQueryEngine.execute(queryStatement); + QueryResultWithSchemaResp results = semanticQueryEngine.execute(queryStatement); + statUtils.statInfo2DbAsync(TaskStatusEnum.SUCCESS); + return results; } private QueryStatement convertToQueryStatement(QueryDslReq querySqlCmd, User user) throws Exception { diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java index 68058404b..485209c66 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java @@ -55,7 +55,10 @@ public class SchemaServiceImpl implements SchemaService { @Override public List fetchModelSchema(ModelSchemaFilterReq filter, User user) { List domainSchemaDescList = modelService.fetchModelSchema(filter); - List statInfos = queryService.getStatInfo(new ItemUseReq()); + ItemUseReq itemUseCommend = new ItemUseReq(); + itemUseCommend.setModelIds(filter.getModelIds()); + + List statInfos = queryService.getStatInfo(itemUseCommend); log.debug("statInfos:{}", statInfos); fillCnt(domainSchemaDescList, statInfos); return domainSchemaDescList; diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/StatUtils.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/StatUtils.java index 0a6c8a5ca..a009750a3 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/StatUtils.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/StatUtils.java @@ -4,22 +4,30 @@ import com.alibaba.ttl.TransmittableThreadLocal; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.tencent.supersonic.auth.api.authentication.pojo.User; +import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum; +import com.tencent.supersonic.common.util.jsqlparser.SqlParserSelectHelper; import com.tencent.supersonic.semantic.api.model.enums.QueryTypeBackEnum; import com.tencent.supersonic.semantic.api.model.enums.QueryTypeEnum; import com.tencent.supersonic.semantic.api.model.pojo.QueryStat; +import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; +import com.tencent.supersonic.semantic.api.model.response.ModelSchemaResp; import com.tencent.supersonic.semantic.api.query.request.ItemUseReq; +import com.tencent.supersonic.semantic.api.query.request.QueryDslReq; import com.tencent.supersonic.semantic.api.query.request.QueryStructReq; import com.tencent.supersonic.semantic.api.query.response.ItemUseResp; -import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum; +import com.tencent.supersonic.semantic.model.domain.ModelService; import com.tencent.supersonic.semantic.query.persistence.repository.StatRepository; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Set; import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import org.apache.logging.log4j.util.Strings; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; @Component @Slf4j @@ -28,13 +36,17 @@ public class StatUtils { private static final TransmittableThreadLocal STATS = new TransmittableThreadLocal<>(); private final StatRepository statRepository; private final SqlFilterUtils sqlFilterUtils; + + private final ModelService modelService; private final ObjectMapper objectMapper = new ObjectMapper(); public StatUtils(StatRepository statRepository, - SqlFilterUtils sqlFilterUtils) { + SqlFilterUtils sqlFilterUtils, + ModelService modelService) { this.statRepository = statRepository; this.sqlFilterUtils = sqlFilterUtils; + this.modelService = modelService; } public static QueryStat get() { @@ -69,6 +81,44 @@ public class StatUtils { return true; } + + public void initStatInfo(QueryDslReq queryDslReq, User facadeUser) { + QueryStat queryStatInfo = new QueryStat(); + List allFields = SqlParserSelectHelper.getAllFields(queryDslReq.getSql()); + queryStatInfo.setModelId(queryDslReq.getModelId()); + ModelSchemaResp modelSchemaResp = modelService.fetchSingleModelSchema(queryDslReq.getModelId()); + + List dimensions = new ArrayList<>(); + if (Objects.nonNull(modelSchemaResp)) { + dimensions = getFieldNames(allFields, modelSchemaResp.getDimensions()); + } + + List metrics = new ArrayList<>(); + if (Objects.nonNull(modelSchemaResp)) { + metrics = getFieldNames(allFields, modelSchemaResp.getMetrics()); + } + + String userName = getUserName(facadeUser); + try { + queryStatInfo.setTraceId("") + .setModelId(queryDslReq.getModelId()) + .setUser(userName) + .setQueryType(QueryTypeEnum.SQL.getValue()) + .setQueryTypeBack(QueryTypeBackEnum.NORMAL.getState()) + .setQuerySqlCmd(queryDslReq.toString()) + .setQuerySqlCmdMd5(DigestUtils.md5Hex(queryDslReq.toString())) + .setStartTime(System.currentTimeMillis()) + .setUseResultCache(true) + .setUseSqlCache(true) + .setMetrics(objectMapper.writeValueAsString(metrics)) + .setDimensions(objectMapper.writeValueAsString(dimensions)); + } catch (JsonProcessingException e) { + log.error("initStatInfo:{}", e); + } + StatUtils.set(queryStatInfo); + + } + public void initStatInfo(QueryStructReq queryStructCmd, User facadeUser) { QueryStat queryStatInfo = new QueryStat(); String traceId = ""; @@ -76,12 +126,11 @@ public class StatUtils { List metrics = new ArrayList<>(); queryStructCmd.getAggregators().stream().forEach(aggregator -> metrics.add(aggregator.getColumn())); - String user = (Objects.nonNull(facadeUser) && Strings.isNotEmpty(facadeUser.getName())) ? facadeUser.getName() - : "Admin"; + String user = getUserName(facadeUser); try { queryStatInfo.setTraceId(traceId) - .setClassId(queryStructCmd.getModelId()) + .setModelId(queryStructCmd.getModelId()) .setUser(user) .setQueryType(QueryTypeEnum.STRUCT.getValue()) .setQueryTypeBack(QueryTypeBackEnum.NORMAL.getState()) @@ -105,6 +154,25 @@ public class StatUtils { } + private List getFieldNames(List allFields, List schemaItems) { + Set fieldNames = schemaItems + .stream() + .map(dimSchemaResp -> dimSchemaResp.getBizName()) + .collect(Collectors.toSet()); + if (!CollectionUtils.isEmpty(fieldNames)) { + return allFields.stream().filter(fieldName -> fieldNames.contains(fieldName)) + .collect(Collectors.toList()); + } + return new ArrayList<>(); + } + + private String getUserName(User facadeUser) { + return (Objects.nonNull(facadeUser) && Strings.isNotEmpty(facadeUser.getName())) ? facadeUser.getName() + : "Admin"; + } + + + public List getStatInfo(ItemUseReq itemUseCommend) { return statRepository.getStatInfo(itemUseCommend); } diff --git a/semantic/query/src/main/resources/mapper/StatMapper.xml b/semantic/query/src/main/resources/mapper/StatMapper.xml index a67f1729d..dec96b377 100644 --- a/semantic/query/src/main/resources/mapper/StatMapper.xml +++ b/semantic/query/src/main/resources/mapper/StatMapper.xml @@ -64,6 +64,12 @@ and model_id = #{modelId} + + and model_id in + + #{id} + + and metrics like concat('%',#{metric},'%') From eee82dea077599d214c028ba722bafff3735a35d Mon Sep 17 00:00:00 2001 From: lexluo09 <39718951+lexluo09@users.noreply.github.com> Date: Wed, 20 Sep 2023 12:09:42 +0800 Subject: [PATCH 06/11] (improvement)(project) dsl support get topN dimension/metric filter by modelId (#106) --- .../tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java index 6acceb3d0..f286c1177 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java @@ -411,12 +411,14 @@ public class LLMDslParser implements SemanticParser { Map itemIdToName = getItemIdToName(modelId, semanticSchema); Set results = semanticSchema.getDimensions().stream() + .filter(schemaElement -> modelId.equals(schemaElement.getModel())) .sorted(Comparator.comparing(SchemaElement::getUseCnt).reversed()) .limit(llmParserConfig.getDimensionTopN()) .map(entry -> entry.getName()) .collect(Collectors.toSet()); Set metrics = semanticSchema.getMetrics().stream() + .filter(schemaElement -> modelId.equals(schemaElement.getModel())) .sorted(Comparator.comparing(SchemaElement::getUseCnt).reversed()) .limit(llmParserConfig.getMetricTopN()) .map(entry -> entry.getName()) From b824cd8ce7bcf50e4193211028d89cbaa5617b5d Mon Sep 17 00:00:00 2001 From: jolunoluo Date: Wed, 20 Sep 2023 11:08:40 +0800 Subject: [PATCH 07/11] (improvement)(auth) support super admin configuration --- .../constant/UserConstants.java | 2 + .../auth/api/authentication/pojo/User.java | 11 +- .../authentication/pojo/UserWithPassword.java | 9 +- .../adaptor/DefaultUserAdaptor.java | 2 +- .../persistence/dataobject/UserDO.java | 62 ++++-- .../persistence/dataobject/UserDOExample.java | 178 ++++++++++++------ .../authentication/utils/UserTokenUtils.java | 11 +- .../main/resources/mapper/UserDOMapper.xml | 53 ++---- .../src/main/resources/db/chat-data-h2.sql | 2 +- .../src/main/resources/db/chat-schema-h2.sql | 1 + .../main/resources/db/semantic-data-h2.sql | 2 +- .../main/resources/db/semantic-schema-h2.sql | 1 + .../src/main/resources/db/data-h2.sql | 4 +- .../src/main/resources/db/schema-h2.sql | 1 + .../src/main/resources/db/schema-mysql.sql | 3 +- .../src/main/resources/db/sql-update.sql | 5 +- .../tencent/supersonic/util/DataUtils.java | 2 +- .../src/test/resources/db/data-h2.sql | 2 +- .../src/test/resources/db/schema-h2.sql | 1 + .../application/DatabaseServiceImpl.java | 6 +- .../model/application/DomainServiceImpl.java | 29 +-- .../model/application/ModelServiceImpl.java | 30 +-- .../semantic/model/domain/DomainService.java | 2 +- .../semantic/model/domain/ModelService.java | 4 +- .../semantic/model/rest/ModelController.java | 2 +- .../query/service/SchemaServiceImpl.java | 2 +- .../query/utils/DataPermissionAOP.java | 4 +- 27 files changed, 273 insertions(+), 158 deletions(-) diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/constant/UserConstants.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/constant/UserConstants.java index 116629f19..3f582d2c5 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/constant/UserConstants.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/constant/UserConstants.java @@ -12,6 +12,8 @@ public class UserConstants { public static final String TOKEN_USER_EMAIL = "token_user_email"; + public static final String TOKEN_IS_ADMIN = "token_is_admin"; + public static final String TOKEN_ALGORITHM = "HS512"; public static final String TOKEN_CREATE_TIME = "token_create_time"; diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/User.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/User.java index 28241eb14..4cf2b526d 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/User.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/User.java @@ -18,17 +18,22 @@ public class User { private String email; - public static User get(Long id, String name, String displayName, String email) { - return new User(id, name, displayName, email); + private Integer isAdmin; + + public static User get(Long id, String name, String displayName, String email, Integer isAdmin) { + return new User(id, name, displayName, email, isAdmin); } public static User getFakeUser() { - return new User(1L, "admin", "admin", "admin@email"); + return new User(1L, "admin", "admin", "admin@email", 1); } public String getDisplayName() { return StringUtils.isBlank(displayName) ? name : displayName; } + public boolean isSuperAdmin() { + return isAdmin != null && isAdmin == 1; + } } diff --git a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/UserWithPassword.java b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/UserWithPassword.java index c7384c1e5..36f77eae2 100644 --- a/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/UserWithPassword.java +++ b/auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/pojo/UserWithPassword.java @@ -9,13 +9,14 @@ public class UserWithPassword extends User { private String password; - public UserWithPassword(Long id, String name, String displayName, String email, String password) { - super(id, name, displayName, email); + public UserWithPassword(Long id, String name, String displayName, String email, String password, Integer isAdmin) { + super(id, name, displayName, email, isAdmin); this.password = password; } - public static UserWithPassword get(Long id, String name, String displayName, String email, String password) { - return new UserWithPassword(id, name, displayName, email, password); + public static UserWithPassword get(Long id, String name, String displayName, + String email, String password, Integer isAdmin) { + return new UserWithPassword(id, name, displayName, email, password, isAdmin); } } diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java index e762ca9a3..9d5893343 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/adaptor/DefaultUserAdaptor.java @@ -71,7 +71,7 @@ public class DefaultUserAdaptor implements UserAdaptor { } if (userDO.getPassword().equals(userReq.getPassword())) { UserWithPassword user = UserWithPassword.get(userDO.getId(), userDO.getName(), userDO.getDisplayName(), - userDO.getEmail(), userDO.getPassword()); + userDO.getEmail(), userDO.getPassword(), userDO.getIsAdmin()); return userTokenUtils.generateToken(user); } throw new RuntimeException("password not correct, please try again"); diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDO.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDO.java index 77b4ae9e7..af32a9aff 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDO.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDO.java @@ -1,99 +1,129 @@ package com.tencent.supersonic.auth.authentication.persistence.dataobject; public class UserDO { - /** - * + * */ private Long id; /** - * + * */ private String name; /** - * + * */ private String password; /** - * + * */ private String displayName; /** - * + * */ private String email; /** - * @return id + * + */ + private Integer isAdmin; + + /** + * + * @return id */ public Long getId() { return id; } /** - * @param id + * + * @param id */ public void setId(Long id) { this.id = id; } /** - * @return name + * + * @return name */ public String getName() { return name; } /** - * @param name + * + * @param name */ public void setName(String name) { this.name = name == null ? null : name.trim(); } /** - * @return password + * + * @return password */ public String getPassword() { return password; } /** - * @param password + * + * @param password */ public void setPassword(String password) { this.password = password == null ? null : password.trim(); } /** - * @return display_name + * + * @return display_name */ public String getDisplayName() { return displayName; } /** - * @param displayName + * + * @param displayName */ public void setDisplayName(String displayName) { this.displayName = displayName == null ? null : displayName.trim(); } /** - * @return email + * + * @return email */ public String getEmail() { return email; } /** - * @param email + * + * @param email */ public void setEmail(String email) { this.email = email == null ? null : email.trim(); } + + /** + * + * @return is_admin + */ + public Integer getIsAdmin() { + return isAdmin; + } + + /** + * + * @param isAdmin + */ + public void setIsAdmin(Integer isAdmin) { + this.isAdmin = isAdmin; + } } \ No newline at end of file diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDOExample.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDOExample.java index 21f01f4ca..96d8fafdd 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDOExample.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/persistence/dataobject/UserDOExample.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; public class UserDOExample { - /** * s2_user */ @@ -31,6 +30,7 @@ public class UserDOExample { protected Integer limitEnd; /** + * * @mbg.generated */ public UserDOExample() { @@ -38,13 +38,7 @@ public class UserDOExample { } /** - * @mbg.generated - */ - public String getOrderByClause() { - return orderByClause; - } - - /** + * * @mbg.generated */ public void setOrderByClause(String orderByClause) { @@ -52,13 +46,15 @@ public class UserDOExample { } /** + * * @mbg.generated */ - public boolean isDistinct() { - return distinct; + public String getOrderByClause() { + return orderByClause; } /** + * * @mbg.generated */ public void setDistinct(boolean distinct) { @@ -66,6 +62,15 @@ public class UserDOExample { } /** + * + * @mbg.generated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * * @mbg.generated */ public List getOredCriteria() { @@ -73,6 +78,7 @@ public class UserDOExample { } /** + * * @mbg.generated */ public void or(Criteria criteria) { @@ -80,6 +86,7 @@ public class UserDOExample { } /** + * * @mbg.generated */ public Criteria or() { @@ -89,6 +96,7 @@ public class UserDOExample { } /** + * * @mbg.generated */ public Criteria createCriteria() { @@ -100,6 +108,7 @@ public class UserDOExample { } /** + * * @mbg.generated */ protected Criteria createCriteriaInternal() { @@ -108,6 +117,7 @@ public class UserDOExample { } /** + * * @mbg.generated */ public void clear() { @@ -117,6 +127,15 @@ public class UserDOExample { } /** + * + * @mbg.generated + */ + public void setLimitStart(Integer limitStart) { + this.limitStart=limitStart; + } + + /** + * * @mbg.generated */ public Integer getLimitStart() { @@ -124,31 +143,25 @@ public class UserDOExample { } /** + * * @mbg.generated */ - public void setLimitStart(Integer limitStart) { - this.limitStart = limitStart; + public void setLimitEnd(Integer limitEnd) { + this.limitEnd=limitEnd; } /** + * * @mbg.generated */ public Integer getLimitEnd() { return limitEnd; } - /** - * @mbg.generated - */ - public void setLimitEnd(Integer limitEnd) { - this.limitEnd = limitEnd; - } - /** * s2_user null */ protected abstract static class GeneratedCriteria { - protected List criteria; protected GeneratedCriteria() { @@ -528,6 +541,66 @@ public class UserDOExample { addCriterion("email not between", value1, value2, "email"); return (Criteria) this; } + + public Criteria andIsAdminIsNull() { + addCriterion("is_admin is null"); + return (Criteria) this; + } + + public Criteria andIsAdminIsNotNull() { + addCriterion("is_admin is not null"); + return (Criteria) this; + } + + public Criteria andIsAdminEqualTo(Integer value) { + addCriterion("is_admin =", value, "isAdmin"); + return (Criteria) this; + } + + public Criteria andIsAdminNotEqualTo(Integer value) { + addCriterion("is_admin <>", value, "isAdmin"); + return (Criteria) this; + } + + public Criteria andIsAdminGreaterThan(Integer value) { + addCriterion("is_admin >", value, "isAdmin"); + return (Criteria) this; + } + + public Criteria andIsAdminGreaterThanOrEqualTo(Integer value) { + addCriterion("is_admin >=", value, "isAdmin"); + return (Criteria) this; + } + + public Criteria andIsAdminLessThan(Integer value) { + addCriterion("is_admin <", value, "isAdmin"); + return (Criteria) this; + } + + public Criteria andIsAdminLessThanOrEqualTo(Integer value) { + addCriterion("is_admin <=", value, "isAdmin"); + return (Criteria) this; + } + + public Criteria andIsAdminIn(List values) { + addCriterion("is_admin in", values, "isAdmin"); + return (Criteria) this; + } + + public Criteria andIsAdminNotIn(List values) { + addCriterion("is_admin not in", values, "isAdmin"); + return (Criteria) this; + } + + public Criteria andIsAdminBetween(Integer value1, Integer value2) { + addCriterion("is_admin between", value1, value2, "isAdmin"); + return (Criteria) this; + } + + public Criteria andIsAdminNotBetween(Integer value1, Integer value2) { + addCriterion("is_admin not between", value1, value2, "isAdmin"); + return (Criteria) this; + } } /** @@ -544,7 +617,6 @@ public class UserDOExample { * s2_user null */ public static class Criterion { - private String condition; private Object value; @@ -561,6 +633,38 @@ public class UserDOExample { private String typeHandler; + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + protected Criterion(String condition) { super(); this.condition = condition; @@ -596,37 +700,5 @@ public class UserDOExample { protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } - - public String getCondition() { - return condition; - } - - public Object getValue() { - return value; - } - - public Object getSecondValue() { - return secondValue; - } - - public boolean isNoValue() { - return noValue; - } - - public boolean isSingleValue() { - return singleValue; - } - - public boolean isBetweenValue() { - return betweenValue; - } - - public boolean isListValue() { - return listValue; - } - - public String getTypeHandler() { - return typeHandler; - } } } \ No newline at end of file diff --git a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/utils/UserTokenUtils.java b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/utils/UserTokenUtils.java index c8749ad43..82e93bcf3 100644 --- a/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/utils/UserTokenUtils.java +++ b/auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/utils/UserTokenUtils.java @@ -2,6 +2,7 @@ package com.tencent.supersonic.auth.authentication.utils; import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_ALGORITHM; import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_CREATE_TIME; +import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_IS_ADMIN; import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_PREFIX; import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_TIME_OUT; import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_USER_DISPLAY_NAME; @@ -42,6 +43,7 @@ public class UserTokenUtils { claims.put(TOKEN_USER_PASSWORD, StringUtils.isEmpty(user.getPassword()) ? "" : user.getPassword()); claims.put(TOKEN_USER_DISPLAY_NAME, user.getDisplayName()); claims.put(TOKEN_CREATE_TIME, System.currentTimeMillis()); + claims.put(TOKEN_IS_ADMIN, user.getIsAdmin()); return generate(claims); } @@ -52,6 +54,7 @@ public class UserTokenUtils { claims.put(TOKEN_USER_PASSWORD, "admin"); claims.put(TOKEN_USER_DISPLAY_NAME, "admin"); claims.put(TOKEN_CREATE_TIME, System.currentTimeMillis()); + claims.put(TOKEN_IS_ADMIN, 1); return generate(claims); } @@ -63,7 +66,9 @@ public class UserTokenUtils { String userName = String.valueOf(claims.get(TOKEN_USER_NAME)); String email = String.valueOf(claims.get(TOKEN_USER_EMAIL)); String displayName = String.valueOf(claims.get(TOKEN_USER_DISPLAY_NAME)); - return User.get(userId, userName, displayName, email); + Integer isAdmin = claims.get(TOKEN_IS_ADMIN) == null + ? 0 : Integer.parseInt(claims.get(TOKEN_IS_ADMIN).toString()); + return User.get(userId, userName, displayName, email, isAdmin); } public UserWithPassword getUserWithPassword(HttpServletRequest request) { @@ -79,7 +84,9 @@ public class UserTokenUtils { String email = String.valueOf(claims.get(TOKEN_USER_EMAIL)); String displayName = String.valueOf(claims.get(TOKEN_USER_DISPLAY_NAME)); String password = String.valueOf(claims.get(TOKEN_USER_PASSWORD)); - return UserWithPassword.get(userId, userName, displayName, email, password); + Integer isAdmin = claims.get(TOKEN_IS_ADMIN) == null + ? 0 : Integer.parseInt(claims.get(TOKEN_IS_ADMIN).toString()); + return UserWithPassword.get(userId, userName, displayName, email, password, isAdmin); } private Claims getClaims(String token) { diff --git a/auth/authentication/src/main/resources/mapper/UserDOMapper.xml b/auth/authentication/src/main/resources/mapper/UserDOMapper.xml index 15eb2b49c..c1933db89 100644 --- a/auth/authentication/src/main/resources/mapper/UserDOMapper.xml +++ b/auth/authentication/src/main/resources/mapper/UserDOMapper.xml @@ -2,11 +2,12 @@ - + + @@ -38,7 +39,7 @@ - id, name, password, display_name, email + id, name, password, display_name, email, is_admin - - - delete from s2_user - where id = #{id,jdbcType=BIGINT} - insert into s2_user (id, name, password, - display_name, email) + display_name, email, is_admin + ) values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, - #{displayName,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}) + #{displayName,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{isAdmin,jdbcType=INTEGER} + ) insert into s2_user @@ -91,6 +84,9 @@ email, + + is_admin, + @@ -108,6 +104,9 @@ #{email,jdbcType=VARCHAR}, + + #{isAdmin,jdbcType=INTEGER}, + - - update s2_user - - - name = #{name,jdbcType=VARCHAR}, - - - password = #{password,jdbcType=VARCHAR}, - - - display_name = #{displayName,jdbcType=VARCHAR}, - - - email = #{email,jdbcType=VARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_user - set name = #{name,jdbcType=VARCHAR}, - password = #{password,jdbcType=VARCHAR}, - display_name = #{displayName,jdbcType=VARCHAR}, - email = #{email,jdbcType=VARCHAR} - where id = #{id,jdbcType=BIGINT} - \ No newline at end of file diff --git a/launchers/chat/src/main/resources/db/chat-data-h2.sql b/launchers/chat/src/main/resources/db/chat-data-h2.sql index a5207a41c..47989554b 100644 --- a/launchers/chat/src/main/resources/db/chat-data-h2.sql +++ b/launchers/chat/src/main/resources/db/chat-data-h2.sql @@ -1,4 +1,4 @@ -insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (1, 'admin','admin','admin','admin@xx.com', 1); insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); diff --git a/launchers/chat/src/main/resources/db/chat-schema-h2.sql b/launchers/chat/src/main/resources/db/chat-schema-h2.sql index 8e28d349e..20e5c3bab 100644 --- a/launchers/chat/src/main/resources/db/chat-schema-h2.sql +++ b/launchers/chat/src/main/resources/db/chat-schema-h2.sql @@ -87,6 +87,7 @@ create table s2_user display_name varchar(100) null, password varchar(100) null, email varchar(100) null, + is_admin INT null, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_user IS 'user information table'; diff --git a/launchers/semantic/src/main/resources/db/semantic-data-h2.sql b/launchers/semantic/src/main/resources/db/semantic-data-h2.sql index b9904da13..c11f8e64d 100644 --- a/launchers/semantic/src/main/resources/db/semantic-data-h2.sql +++ b/launchers/semantic/src/main/resources/db/semantic-data-h2.sql @@ -36,7 +36,7 @@ insert into s2_auth_groups (group_id, config) values (2, '{"domainId":"1","name":"tom_sales_permission","groupId":2,"authRules":[{"metrics":["stay_hours"],"dimensions":["page"]}],"dimensionFilters":["department in (''sales'')"],"dimensionFilterDescription":"开通 tom sales部门权限", "authorizedUsers":["tom"],"authorizedDepartmentIds":[]}'); -insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (1, 'admin','admin','admin','admin@xx.com', 1); insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); diff --git a/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql b/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql index 34da654cc..2c846cead 100644 --- a/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql +++ b/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql @@ -80,6 +80,7 @@ create table s2_user display_name varchar(100) null, password varchar(100) null, email varchar(100) null, + is_admin INT null, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_user IS 'user information table'; diff --git a/launchers/standalone/src/main/resources/db/data-h2.sql b/launchers/standalone/src/main/resources/db/data-h2.sql index 0ba57383b..68709c0c2 100644 --- a/launchers/standalone/src/main/resources/db/data-h2.sql +++ b/launchers/standalone/src/main/resources/db/data-h2.sql @@ -1,8 +1,8 @@ -- sample user -insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (1, 'admin','admin','admin','admin@xx.com', 1); insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); -insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (4, 'lucy','123456','lucy','lucy@xx.com', 1); insert into s2_user (id, `name`, password, display_name, email) values (5, 'alice','123456','alice','alice@xx.com'); -- sample models diff --git a/launchers/standalone/src/main/resources/db/schema-h2.sql b/launchers/standalone/src/main/resources/db/schema-h2.sql index 556b19550..1370bc82d 100644 --- a/launchers/standalone/src/main/resources/db/schema-h2.sql +++ b/launchers/standalone/src/main/resources/db/schema-h2.sql @@ -87,6 +87,7 @@ create table s2_user display_name varchar(100) null, password varchar(100) null, email varchar(100) null, + is_admin INT null, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_user IS 'user information table'; diff --git a/launchers/standalone/src/main/resources/db/schema-mysql.sql b/launchers/standalone/src/main/resources/db/schema-mysql.sql index 255f2967a..266c67ff6 100644 --- a/launchers/standalone/src/main/resources/db/schema-mysql.sql +++ b/launchers/standalone/src/main/resources/db/schema-mysql.sql @@ -369,7 +369,8 @@ create table s2_user display_name varchar(100) null, password varchar(100) null, email varchar(100) null, + is_admin int(11) null, PRIMARY KEY (`id`) ); -insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (1, 'admin','admin','admin','admin@xx.com', 1); diff --git a/launchers/standalone/src/main/resources/db/sql-update.sql b/launchers/standalone/src/main/resources/db/sql-update.sql index 4ba811442..7799b3656 100644 --- a/launchers/standalone/src/main/resources/db/sql-update.sql +++ b/launchers/standalone/src/main/resources/db/sql-update.sql @@ -51,4 +51,7 @@ alter table s2_chat add column agent_id int after chat_id; ALTER TABLE s2_model add alias varchar(200) default null after domain_id; --20230919 -alter table s2_metric add tags varchar(500) null; \ No newline at end of file +alter table s2_metric add tags varchar(500) null; + +--20230920 +alter table s2_user add is_admin int null; \ No newline at end of file diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java b/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java index 0bb34a21c..50938af67 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java @@ -23,7 +23,7 @@ import static java.time.LocalDate.now; public class DataUtils { - private static final User user_test = new User(1L, "admin", "admin", "admin@email"); + private static final User user_test = User.getFakeUser(); public static User getUser() { return user_test; diff --git a/launchers/standalone/src/test/resources/db/data-h2.sql b/launchers/standalone/src/test/resources/db/data-h2.sql index c2ee76401..10f6a3ef5 100644 --- a/launchers/standalone/src/test/resources/db/data-h2.sql +++ b/launchers/standalone/src/test/resources/db/data-h2.sql @@ -1,5 +1,5 @@ -- sample user -insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (1, 'admin','admin','admin','admin@xx.com', 1); insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); diff --git a/launchers/standalone/src/test/resources/db/schema-h2.sql b/launchers/standalone/src/test/resources/db/schema-h2.sql index fd6a300f9..33429ca0b 100644 --- a/launchers/standalone/src/test/resources/db/schema-h2.sql +++ b/launchers/standalone/src/test/resources/db/schema-h2.sql @@ -102,6 +102,7 @@ create table s2_user display_name varchar(100) null, password varchar(100) null, email varchar(100) null, + is_admin INT null, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_user IS 'user information table'; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java index 6c4e731a3..e1a23c908 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java @@ -72,7 +72,8 @@ public class DatabaseServiceImpl implements DatabaseService { private void fillPermission(List databaseResps, User user) { databaseResps.forEach(databaseResp -> { if (databaseResp.getAdmins().contains(user.getName()) - || user.getName().equalsIgnoreCase(databaseResp.getCreatedBy())) { + || user.getName().equalsIgnoreCase(databaseResp.getCreatedBy()) + || user.isSuperAdmin()) { databaseResp.setHasPermission(true); databaseResp.setHasEditPermission(true); databaseResp.setHasUsePermission(true); @@ -111,7 +112,8 @@ public class DatabaseServiceImpl implements DatabaseService { List viewers = databaseResp.getViewers(); if (!admins.contains(user.getName()) && !viewers.contains(user.getName()) - && !databaseResp.getCreatedBy().equalsIgnoreCase(user.getName())) { + && !databaseResp.getCreatedBy().equalsIgnoreCase(user.getName()) + && !user.isSuperAdmin()) { String message = String.format("您暂无当前数据库%s权限, 请联系数据库管理员%s开通", databaseResp.getName(), String.join(",", admins)); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java index fd51d9496..ebc629b8d 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java @@ -96,12 +96,12 @@ public class DomainServiceImpl implements DomainService { @Override public List getDomainListWithAdminAuth(User user) { - Set domainWithAuthAll = getDomainAuthSet(user.getName(), AuthType.ADMIN); + Set domainWithAuthAll = getDomainAuthSet(user, AuthType.ADMIN); if (!CollectionUtils.isEmpty(domainWithAuthAll)) { List domainIds = domainWithAuthAll.stream().map(DomainResp::getId).collect(Collectors.toList()); domainWithAuthAll.addAll(getParentDomain(domainIds)); } - List modelResps = modelService.getModelAuthList(user.getName(), AuthType.ADMIN); + List modelResps = modelService.getModelAuthList(user, AuthType.ADMIN); if (!CollectionUtils.isEmpty(modelResps)) { List domainIds = modelResps.stream().map(ModelResp::getDomainId).collect(Collectors.toList()); domainWithAuthAll.addAll(getParentDomain(domainIds)); @@ -111,18 +111,18 @@ public class DomainServiceImpl implements DomainService { } @Override - public Set getDomainAuthSet(String userName, AuthType authTypeEnum) { + public Set getDomainAuthSet(User user, AuthType authTypeEnum) { List domainResps = getDomainList(); - Set orgIds = userService.getUserAllOrgId(userName); + Set orgIds = userService.getUserAllOrgId(user.getName()); List domainWithAuth = Lists.newArrayList(); if (authTypeEnum.equals(AuthType.ADMIN)) { domainWithAuth = domainResps.stream() - .filter(domainResp -> checkAdminPermission(orgIds, userName, domainResp)) + .filter(domainResp -> checkAdminPermission(orgIds, user, domainResp)) .collect(Collectors.toList()); } if (authTypeEnum.equals(AuthType.VISIBLE)) { domainWithAuth = domainResps.stream() - .filter(domainResp -> checkViewerPermission(orgIds, userName, domainResp)) + .filter(domainResp -> checkViewerPermission(orgIds, user, domainResp)) .collect(Collectors.toList()); } List domainIds = domainWithAuth.stream().map(DomainResp::getId) @@ -240,11 +240,13 @@ public class DomainServiceImpl implements DomainService { } - private boolean checkAdminPermission(Set orgIds, String userName, DomainResp domainResp) { - + private boolean checkAdminPermission(Set orgIds, User user, DomainResp domainResp) { List admins = domainResp.getAdmins(); List adminOrgs = domainResp.getAdminOrgs(); - if (admins.contains(userName) || domainResp.getCreatedBy().equals(userName)) { + if (user.isSuperAdmin()) { + return true; + } + if (admins.contains(user.getName()) || domainResp.getCreatedBy().equals(user.getName())) { return true; } if (CollectionUtils.isEmpty(adminOrgs)) { @@ -258,12 +260,17 @@ public class DomainServiceImpl implements DomainService { return false; } - private boolean checkViewerPermission(Set orgIds, String userName, DomainResp domainDesc) { + private boolean checkViewerPermission(Set orgIds, User user, DomainResp domainDesc) { List admins = domainDesc.getAdmins(); List viewers = domainDesc.getViewers(); List adminOrgs = domainDesc.getAdminOrgs(); List viewOrgs = domainDesc.getViewOrgs(); - if (admins.contains(userName) || viewers.contains(userName) || domainDesc.getCreatedBy().equals(userName)) { + if (user.isSuperAdmin()) { + return true; + } + if (admins.contains(user.getName()) + || viewers.contains(user.getName()) + || domainDesc.getCreatedBy().equals(user.getName())) { return true; } if (CollectionUtils.isEmpty(adminOrgs) && CollectionUtils.isEmpty(viewOrgs)) { diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java index b10dd9704..8d28a26c0 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java @@ -97,10 +97,10 @@ public class ModelServiceImpl implements ModelService { } @Override - public List getModelListWithAuth(String userName, Long domainId, AuthType authType) { - List modelResps = getModelAuthList(userName, authType); + public List getModelListWithAuth(User user, Long domainId, AuthType authType) { + List modelResps = getModelAuthList(user, authType); Set modelRespSet = new HashSet<>(modelResps); - List modelRespsAuthInheritDomain = getModelRespAuthInheritDomain(userName, authType); + List modelRespsAuthInheritDomain = getModelRespAuthInheritDomain(user, authType); modelRespSet.addAll(modelRespsAuthInheritDomain); if (domainId != null && domainId > 0) { modelRespSet = modelRespSet.stream().filter(modelResp -> @@ -109,8 +109,8 @@ public class ModelServiceImpl implements ModelService { return fillMetricInfo(new ArrayList<>(modelRespSet)); } - public List getModelRespAuthInheritDomain(String userName, AuthType authType) { - Set domainResps = domainService.getDomainAuthSet(userName, authType); + public List getModelRespAuthInheritDomain(User user, AuthType authType) { + Set domainResps = domainService.getDomainAuthSet(user, authType); if (CollectionUtils.isEmpty(domainResps)) { return Lists.newArrayList(); } @@ -121,18 +121,18 @@ public class ModelServiceImpl implements ModelService { } @Override - public List getModelAuthList(String userName, AuthType authTypeEnum) { + public List getModelAuthList(User user, AuthType authTypeEnum) { List modelResps = getModelList(); - Set orgIds = userService.getUserAllOrgId(userName); + Set orgIds = userService.getUserAllOrgId(user.getName()); List modelWithAuth = Lists.newArrayList(); if (authTypeEnum.equals(AuthType.ADMIN)) { modelWithAuth = modelResps.stream() - .filter(modelResp -> checkAdminPermission(orgIds, userName, modelResp)) + .filter(modelResp -> checkAdminPermission(orgIds, user, modelResp)) .collect(Collectors.toList()); } if (authTypeEnum.equals(AuthType.VISIBLE)) { modelWithAuth = modelResps.stream() - .filter(domainResp -> checkViewerPermission(orgIds, userName, domainResp)) + .filter(domainResp -> checkViewerPermission(orgIds, user, domainResp)) .collect(Collectors.toList()); } return modelWithAuth; @@ -325,9 +325,13 @@ public class ModelServiceImpl implements ModelService { return new ArrayList<>(getModelMap().keySet()); } - public static boolean checkAdminPermission(Set orgIds, String userName, ModelResp modelResp) { + public static boolean checkAdminPermission(Set orgIds, User user, ModelResp modelResp) { List admins = modelResp.getAdmins(); List adminOrgs = modelResp.getAdminOrgs(); + if (user.isSuperAdmin()) { + return true; + } + String userName = user.getName(); if (admins.contains(userName) || modelResp.getCreatedBy().equals(userName)) { return true; } @@ -342,14 +346,18 @@ public class ModelServiceImpl implements ModelService { return false; } - public static boolean checkViewerPermission(Set orgIds, String userName, ModelResp modelResp) { + public static boolean checkViewerPermission(Set orgIds, User user, ModelResp modelResp) { List admins = modelResp.getAdmins(); List viewers = modelResp.getViewers(); List adminOrgs = modelResp.getAdminOrgs(); List viewOrgs = modelResp.getViewOrgs(); + if (user.isSuperAdmin()) { + return true; + } if (modelResp.openToAll()) { return true; } + String userName = user.getName(); if (admins.contains(userName) || viewers.contains(userName) || modelResp.getCreatedBy().equals(userName)) { return true; } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java index 565167b8a..6a72d2adf 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java @@ -30,7 +30,7 @@ public interface DomainService { List getDomainListWithAdminAuth(User user); - Set getDomainAuthSet(String userName, AuthType authTypeEnum); + Set getDomainAuthSet(User user, AuthType authTypeEnum); Set getDomainChildren(List domainId); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java index 7e05fa38e..f4458d8ba 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java @@ -13,9 +13,9 @@ import java.util.Map; public interface ModelService { - List getModelListWithAuth(String userName, Long domainId, AuthType authType); + List getModelListWithAuth(User user, Long domainId, AuthType authType); - List getModelAuthList(String userName, AuthType authTypeEnum); + List getModelAuthList(User user, AuthType authTypeEnum); List getModelByDomainIds(List domainIds); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ModelController.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ModelController.java index 0eb0b5175..3c3ec3624 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ModelController.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ModelController.java @@ -60,7 +60,7 @@ public class ModelController { HttpServletRequest request, HttpServletResponse response) { User user = UserHolder.findUser(request, response); - return modelService.getModelListWithAuth(user.getName(), domainId, AuthType.ADMIN); + return modelService.getModelListWithAuth(user, domainId, AuthType.ADMIN); } diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java index 68058404b..2658fc84c 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java @@ -126,7 +126,7 @@ public class SchemaServiceImpl implements SchemaService { @Override public List getModelList(User user, AuthType authTypeEnum, Long domainId) { - return modelService.getModelListWithAuth(user.getName(), domainId, authTypeEnum); + return modelService.getModelListWithAuth(user, domainId, authTypeEnum); } } diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/DataPermissionAOP.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/DataPermissionAOP.java index 36afdef4e..dd0637795 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/DataPermissionAOP.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/DataPermissionAOP.java @@ -140,7 +140,7 @@ public class DataPermissionAOP { private boolean doModelAdmin(User user, QueryStructReq queryStructReq) { Long modelId = queryStructReq.getModelId(); - List modelListAdmin = modelService.getModelListWithAuth(user.getName(), null, AuthType.ADMIN); + List modelListAdmin = modelService.getModelListWithAuth(user, null, AuthType.ADMIN); if (CollectionUtils.isEmpty(modelListAdmin)) { return false; } else { @@ -153,7 +153,7 @@ public class DataPermissionAOP { private void doModelVisible(User user, QueryStructReq queryStructReq) { Boolean visible = true; Long modelId = queryStructReq.getModelId(); - List modelListVisible = modelService.getModelListWithAuth(user.getName(), null, AuthType.VISIBLE); + List modelListVisible = modelService.getModelListWithAuth(user, null, AuthType.VISIBLE); if (CollectionUtils.isEmpty(modelListVisible)) { visible = false; } else { From 63eff5c62a58719be7fcb5fce31581bde3717819 Mon Sep 17 00:00:00 2001 From: jolunoluo Date: Wed, 20 Sep 2023 16:08:53 +0800 Subject: [PATCH 08/11] (improvement)(semantic) add admin auth check in metric market --- .../chat/api/component/SemanticLayer.java | 2 +- .../chat/rest/ChatConfigController.java | 9 ++++---- .../semantic/LocalSemanticLayer.java | 4 ++-- .../semantic/RemoteSemanticLayer.java | 2 +- .../api/model/response/MetricResp.java | 2 ++ .../model/application/MetricServiceImpl.java | 22 +++++++++++++++++-- .../semantic/model/domain/MetricService.java | 2 +- .../semantic/model/rest/MetricController.java | 7 ++++-- .../query/service/SchemaServiceImpl.java | 2 +- 9 files changed, 38 insertions(+), 14 deletions(-) diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java index 12d336ed2..a6be0a0ab 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java @@ -49,7 +49,7 @@ public interface SemanticLayer { PageInfo getDimensionPage(PageDimensionReq pageDimensionCmd); - PageInfo getMetricPage(PageMetricReq pageMetricCmd); + PageInfo getMetricPage(PageMetricReq pageMetricCmd, User user); List getDomainList(User user); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java index 88612800a..d8521e73a 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java @@ -110,17 +110,18 @@ public class ChatConfigController { } @PostMapping("/dimension/page") - public PageInfo getDimension(@RequestBody PageDimensionReq pageDimensionCmd, + public PageInfo getDimension(@RequestBody PageDimensionReq pageDimensionReq, HttpServletRequest request, HttpServletResponse response) { - return semanticLayer.getDimensionPage(pageDimensionCmd); + return semanticLayer.getDimensionPage(pageDimensionReq); } @PostMapping("/metric/page") - public PageInfo getMetric(@RequestBody PageMetricReq pageMetrricCmd, + public PageInfo getMetric(@RequestBody PageMetricReq pageMetricReq, HttpServletRequest request, HttpServletResponse response) { - return semanticLayer.getMetricPage(pageMetrricCmd); + User user = UserHolder.findUser(request, response); + return semanticLayer.getMetricPage(pageMetricReq, user); } diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java index c675a7217..e9a9676f3 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java @@ -110,9 +110,9 @@ public class LocalSemanticLayer extends BaseSemanticLayer { } @Override - public PageInfo getMetricPage(PageMetricReq pageMetricReq) { + public PageInfo getMetricPage(PageMetricReq pageMetricReq, User user) { metricService = ContextUtils.getBean(MetricService.class); - return metricService.queryMetric(pageMetricReq); + return metricService.queryMetric(pageMetricReq, user); } } diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java index 723dc6a40..c18479162 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java @@ -258,7 +258,7 @@ public class RemoteSemanticLayer extends BaseSemanticLayer { } @Override - public PageInfo getMetricPage(PageMetricReq pageMetricCmd) { + public PageInfo getMetricPage(PageMetricReq pageMetricCmd, User user) { String body = JsonUtil.toString(pageMetricCmd); DefaultSemanticConfig defaultSemanticConfig = ContextUtils.getBean(DefaultSemanticConfig.class); log.info("url:{}", defaultSemanticConfig.getSemanticUrl() + defaultSemanticConfig.getFetchMetricPagePath()); diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java index 08ff264e8..0a2aecd24 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java @@ -35,6 +35,8 @@ public class MetricResp extends SchemaItem { private List tags; + private boolean hasAdminRes = false; + public void setTag(String tag) { if (StringUtils.isBlank(tag)) { tags = Lists.newArrayList(); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java index dec9d2b3f..327e9017d 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java @@ -9,6 +9,7 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.common.pojo.DataAddEvent; import com.tencent.supersonic.common.pojo.DataDeleteEvent; import com.tencent.supersonic.common.pojo.DataUpdateEvent; +import com.tencent.supersonic.common.pojo.enums.AuthType; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.common.util.ChatGptHelper; import com.tencent.supersonic.semantic.api.model.pojo.Measure; @@ -124,7 +125,7 @@ public class MetricServiceImpl implements MetricService { } @Override - public PageInfo queryMetric(PageMetricReq pageMetricReq) { + public PageInfo queryMetric(PageMetricReq pageMetricReq, User user) { MetricFilter metricFilter = new MetricFilter(); BeanUtils.copyProperties(pageMetricReq, metricFilter); Set domainResps = domainService.getDomainChildren(pageMetricReq.getDomainIds()); @@ -138,7 +139,9 @@ public class MetricServiceImpl implements MetricService { .doSelectPageInfo(() -> queryMetric(metricFilter)); PageInfo pageInfo = new PageInfo<>(); BeanUtils.copyProperties(metricDOPageInfo, pageInfo); - pageInfo.setList(convertList(metricDOPageInfo.getList())); + List metricResps = convertList(metricDOPageInfo.getList()); + fillAdminRes(metricResps, user); + pageInfo.setList(metricResps); return pageInfo; } @@ -146,6 +149,21 @@ public class MetricServiceImpl implements MetricService { return metricRepository.getMetric(metricFilter); } + + private void fillAdminRes(List metricResps, User user) { + List modelResps = modelService.getModelListWithAuth(user, null, AuthType.ADMIN); + if (CollectionUtils.isEmpty(modelResps)) { + return; + } + Set modelIdSet = modelResps.stream().map(ModelResp::getId).collect(Collectors.toSet()); + for (MetricResp metricResp : metricResps) { + if (modelIdSet.contains(metricResp.getModelId())) { + metricResp.setHasAdminRes(true); + } + } + + } + @Override public MetricResp getMetric(Long modelId, String bizName) { List metricDescs = getMetricByModelId(modelId); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java index 1071fe27d..969b935e5 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java @@ -23,7 +23,7 @@ public interface MetricService { void createMetricBatch(List metricReqs, User user) throws Exception; - PageInfo queryMetric(PageMetricReq pageMetricReq); + PageInfo queryMetric(PageMetricReq pageMetricReq, User user); MetricResp getMetric(Long modelId, String bizName); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java index d72485009..4b60bfab2 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java @@ -69,8 +69,11 @@ public class MetricController { @PostMapping("/queryMetric") - public PageInfo queryMetric(@RequestBody PageMetricReq pageMetrricReq) { - return metricService.queryMetric(pageMetrricReq); + public PageInfo queryMetric(@RequestBody PageMetricReq pageMetricReq, + HttpServletRequest request, + HttpServletResponse response) { + User user = UserHolder.findUser(request, response); + return metricService.queryMetric(pageMetricReq, user); } @GetMapping("getMetric/{modelId}/{bizName}") diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java index 2658fc84c..6049b4efe 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java @@ -116,7 +116,7 @@ public class SchemaServiceImpl implements SchemaService { @Override public PageInfo queryMetric(PageMetricReq pageMetricCmd, User user) { - return metricService.queryMetric(pageMetricCmd); + return metricService.queryMetric(pageMetricCmd, user); } @Override From 057a7c9c6db09de6b74fe14d0e6a66446a4cf640 Mon Sep 17 00:00:00 2001 From: Scott Date: Wed, 20 Sep 2023 16:26:03 +0800 Subject: [PATCH 09/11] fix:set script file executable (#107) --- assembly/bin/supersonic-build.sh | 0 assembly/bin/supersonic-daemon.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 assembly/bin/supersonic-build.sh mode change 100644 => 100755 assembly/bin/supersonic-daemon.sh diff --git a/assembly/bin/supersonic-build.sh b/assembly/bin/supersonic-build.sh old mode 100644 new mode 100755 diff --git a/assembly/bin/supersonic-daemon.sh b/assembly/bin/supersonic-daemon.sh old mode 100644 new mode 100755 From 5a42ff4b78121bcb8752989a052166ac43691f1c Mon Sep 17 00:00:00 2001 From: tristanliu <37809633+sevenliu1896@users.noreply.github.com> Date: Wed, 20 Sep 2023 16:58:57 +0800 Subject: [PATCH 10/11] [improvement][semantic-fe] metric market experience optimization (#109) * [improvement][semantic-fe] Add model alias setting & Add view permission restrictions to the model permission management tab. [improvement][semantic-fe] Add permission control to the action buttons for the main domain; apply high sensitivity filtering to the authorization of metrics/dimensions. [improvement][semantic-fe] Optimize the editing mode in the dimension/metric/datasource components to use the modelId stored in the database for data, instead of relying on the data from the state manager. * [improvement][semantic-fe] Add time granularity setting in the data source configuration. * [improvement][semantic-fe] Dictionary import for dimension values supported in Q&A visibility * [improvement][semantic-fe] Modification of data source creation prompt wording" * [improvement][semantic-fe] metric market experience optimization --- .../Metric/components/MetricFilter.tsx | 2 +- .../src/pages/SemanticModel/Metric/index.tsx | 105 ++++++++++++------ .../src/pages/SemanticModel/Metric/style.less | 2 +- .../components/ClassMetricTable.tsx | 23 +++- .../components/MetricInfoCreateForm.tsx | 32 +++++- .../Permission/PermissionAdminForm.tsx | 15 ++- .../src/pages/SemanticModel/service.ts | 4 + 7 files changed, 142 insertions(+), 41 deletions(-) diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/components/MetricFilter.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/components/MetricFilter.tsx index fde5dc890..c83e22c1d 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/components/MetricFilter.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/components/MetricFilter.tsx @@ -81,7 +81,7 @@ const MetricFilter: React.FC = ({ filterValues = {}, onFiltersChange }) =
} onSearch={(value) => { onSearch(value); diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/index.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/index.tsx index ca089637d..609dbd756 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/index.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/index.tsx @@ -1,9 +1,9 @@ import type { ActionType, ProColumns } from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table'; -import { message, Space, Popconfirm } from 'antd'; +import { message, Space, Popconfirm, Tag } from 'antd'; import React, { useRef, useState, useEffect } from 'react'; import type { Dispatch } from 'umi'; -import { connect } from 'umi'; +import { connect, history } from 'umi'; import type { StateType } from '../model'; import { SENSITIVE_LEVEL_ENUM } from '../constant'; import { queryMetric, deleteMetric } from '../service'; @@ -89,6 +89,20 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { { dataIndex: 'name', title: '指标名称', + render: (_, record: any) => { + if (record.hasAdminRes) { + return ( + { + history.replace(`/model/${record.domainId}/${record.modelId}/metric`); + }} + > + {record.name} + + ); + } + return <> {record.name}; + }, }, // { // dataIndex: 'alias', @@ -113,6 +127,25 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { title: '创建人', search: false, }, + { + dataIndex: 'tags', + title: '标签', + search: false, + render: (tags) => { + if (Array.isArray(tags)) { + return ( + + {tags.map((tag) => ( + + {tag} + + ))} + + ); + } + return <>--; + }, + }, { dataIndex: 'description', title: '描述', @@ -140,43 +173,47 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { dataIndex: 'x', valueType: 'option', render: (_, record) => { - return ( - - { - setMetricItem(record); - setCreateModalVisible(true); - }} - > - 编辑 - - - { - const { code, msg } = await deleteMetric(record.id); - if (code === 200) { - setMetricItem(undefined); - actionRef.current?.reload(); - } else { - message.error(msg); - } - }} - > + if (record.hasAdminRes) { + return ( + { setMetricItem(record); + setCreateModalVisible(true); }} > - 删除 + 编辑 - - - ); + + { + const { code, msg } = await deleteMetric(record.id); + if (code === 200) { + setMetricItem(undefined); + queryMetricList(); + } else { + message.error(msg); + } + }} + > + { + setMetricItem(record); + }} + > + 删除 + + + + ); + } else { + return <>; + } }, }, ]; @@ -239,7 +276,7 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { metricItem={metricItem} onSubmit={() => { setCreateModalVisible(false); - actionRef?.current?.reload(); + queryMetricList(); dispatch({ type: 'domainManger/queryMetricList', payload: { diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/style.less b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/style.less index df680eae5..df11043b0 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/style.less +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/Metric/style.less @@ -15,7 +15,7 @@ // margin-bottom: 12px; background: #fff; border-radius: 10px; - width: 500px; + width: 540px; margin: 0 auto; .searchInput { width: 100%; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/ClassMetricTable.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/ClassMetricTable.tsx index 1826d83b3..65a447aca 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/ClassMetricTable.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/ClassMetricTable.tsx @@ -1,6 +1,6 @@ import type { ActionType, ProColumns } from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table'; -import { message, Button, Space, Popconfirm, Input } from 'antd'; +import { message, Button, Space, Popconfirm, Input, Tag } from 'antd'; import React, { useRef, useState } from 'react'; import type { Dispatch } from 'umi'; import { connect } from 'umi'; @@ -76,7 +76,7 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { dataIndex: 'key', title: '指标搜索', hideInTable: true, - renderFormItem: () => , + renderFormItem: () => , }, { dataIndex: 'alias', @@ -101,6 +101,25 @@ const ClassMetricTable: React.FC = ({ domainManger, dispatch }) => { title: '创建人', search: false, }, + { + dataIndex: 'tags', + title: '标签', + search: false, + render: (tags) => { + if (Array.isArray(tags)) { + return ( + + {tags.map((tag) => ( + + {tag} + + ))} + + ); + } + return <>--; + }, + }, { dataIndex: 'description', title: '描述', diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricInfoCreateForm.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricInfoCreateForm.tsx index 130780a2b..95777067b 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricInfoCreateForm.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/MetricInfoCreateForm.tsx @@ -24,7 +24,7 @@ import FormItemTitle from '@/components/FormHelper/FormItemTitle'; import styles from './style.less'; import { getMeasureListByModelId } from '../service'; import TableTitleTooltips from '../components/TableTitleTooltips'; -import { creatExprMetric, updateExprMetric, mockMetricAlias } from '../service'; +import { creatExprMetric, updateExprMetric, mockMetricAlias, getMetricTags } from '../service'; import { ISemantic } from '../data'; import { history } from 'umi'; @@ -75,6 +75,8 @@ const MetricInfoCreateForm: React.FC = ({ const [hasMeasuresState, setHasMeasuresState] = useState(true); const [llmLoading, setLlmLoading] = useState(false); + const [tagOptions, setTagOptions] = useState<{ label: string; value: string }[]>([]); + const forward = () => setCurrentStep(currentStep + 1); const backward = () => setCurrentStep(currentStep - 1); @@ -95,6 +97,7 @@ const MetricInfoCreateForm: React.FC = ({ useEffect(() => { queryClassMeasureList(); + queryMetricTags(); }, []); const handleNext = async () => { @@ -126,6 +129,7 @@ const MetricInfoCreateForm: React.FC = ({ dataFormat, dataFormatType, alias, + tags, } = metricItem as any; const isPercent = dataFormatType === 'percent'; const isDecimal = dataFormatType === 'decimal'; @@ -135,6 +139,7 @@ const MetricInfoCreateForm: React.FC = ({ bizName, sensitiveLevel, description, + tags, // isPercent, dataFormatType: dataFormatType || '', alias: alias && alias.trim() ? alias.split(',') : [], @@ -204,6 +209,22 @@ const MetricInfoCreateForm: React.FC = ({ } }; + const queryMetricTags = async () => { + const { code, data } = await getMetricTags(); + if (code === 200) { + // form.setFieldValue('alias', Array.from(new Set([...formAlias, ...data]))); + setTagOptions( + Array.isArray(data) + ? data.map((tag: string) => { + return { label: tag, value: tag }; + }) + : [], + ); + } else { + message.error('获取指标标签失败'); + } + }; + const renderContent = () => { if (currentStep === 1) { return ( @@ -277,6 +298,15 @@ const MetricInfoCreateForm: React.FC = ({ )} + + select @@ -57,21 +58,13 @@ limit #{limitStart} , #{limitEnd} - - - delete from s2_user - where id = #{id,jdbcType=BIGINT} - insert into s2_user (id, name, password, - display_name, email) + display_name, email, is_admin + ) values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, - #{displayName,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}) + #{displayName,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{isAdmin,jdbcType=INTEGER} + ) insert into s2_user @@ -91,6 +84,9 @@ email, + + is_admin, + @@ -108,6 +104,9 @@ #{email,jdbcType=VARCHAR}, + + #{isAdmin,jdbcType=INTEGER}, + - - update s2_user - - - name = #{name,jdbcType=VARCHAR}, - - - password = #{password,jdbcType=VARCHAR}, - - - display_name = #{displayName,jdbcType=VARCHAR}, - - - email = #{email,jdbcType=VARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update s2_user - set name = #{name,jdbcType=VARCHAR}, - password = #{password,jdbcType=VARCHAR}, - display_name = #{displayName,jdbcType=VARCHAR}, - email = #{email,jdbcType=VARCHAR} - where id = #{id,jdbcType=BIGINT} - \ No newline at end of file diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java index 12d336ed2..a6be0a0ab 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java @@ -49,7 +49,7 @@ public interface SemanticLayer { PageInfo getDimensionPage(PageDimensionReq pageDimensionCmd); - PageInfo getMetricPage(PageMetricReq pageMetricCmd); + PageInfo getMetricPage(PageMetricReq pageMetricCmd, User user); List getDomainList(User user); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java index 88612800a..d8521e73a 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java @@ -110,17 +110,18 @@ public class ChatConfigController { } @PostMapping("/dimension/page") - public PageInfo getDimension(@RequestBody PageDimensionReq pageDimensionCmd, + public PageInfo getDimension(@RequestBody PageDimensionReq pageDimensionReq, HttpServletRequest request, HttpServletResponse response) { - return semanticLayer.getDimensionPage(pageDimensionCmd); + return semanticLayer.getDimensionPage(pageDimensionReq); } @PostMapping("/metric/page") - public PageInfo getMetric(@RequestBody PageMetricReq pageMetrricCmd, + public PageInfo getMetric(@RequestBody PageMetricReq pageMetricReq, HttpServletRequest request, HttpServletResponse response) { - return semanticLayer.getMetricPage(pageMetrricCmd); + User user = UserHolder.findUser(request, response); + return semanticLayer.getMetricPage(pageMetricReq, user); } diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java index 9d2d42ee3..81a445afc 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java @@ -111,9 +111,9 @@ public class LocalSemanticLayer extends BaseSemanticLayer { } @Override - public PageInfo getMetricPage(PageMetricReq pageMetricReq) { + public PageInfo getMetricPage(PageMetricReq pageMetricReq, User user) { metricService = ContextUtils.getBean(MetricService.class); - return metricService.queryMetric(pageMetricReq); + return metricService.queryMetric(pageMetricReq, user); } } diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java index 723dc6a40..c18479162 100644 --- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java +++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java @@ -258,7 +258,7 @@ public class RemoteSemanticLayer extends BaseSemanticLayer { } @Override - public PageInfo getMetricPage(PageMetricReq pageMetricCmd) { + public PageInfo getMetricPage(PageMetricReq pageMetricCmd, User user) { String body = JsonUtil.toString(pageMetricCmd); DefaultSemanticConfig defaultSemanticConfig = ContextUtils.getBean(DefaultSemanticConfig.class); log.info("url:{}", defaultSemanticConfig.getSemanticUrl() + defaultSemanticConfig.getFetchMetricPagePath()); diff --git a/launchers/chat/src/main/resources/db/chat-data-h2.sql b/launchers/chat/src/main/resources/db/chat-data-h2.sql index a5207a41c..47989554b 100644 --- a/launchers/chat/src/main/resources/db/chat-data-h2.sql +++ b/launchers/chat/src/main/resources/db/chat-data-h2.sql @@ -1,4 +1,4 @@ -insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (1, 'admin','admin','admin','admin@xx.com', 1); insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); diff --git a/launchers/chat/src/main/resources/db/chat-schema-h2.sql b/launchers/chat/src/main/resources/db/chat-schema-h2.sql index 8e28d349e..20e5c3bab 100644 --- a/launchers/chat/src/main/resources/db/chat-schema-h2.sql +++ b/launchers/chat/src/main/resources/db/chat-schema-h2.sql @@ -87,6 +87,7 @@ create table s2_user display_name varchar(100) null, password varchar(100) null, email varchar(100) null, + is_admin INT null, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_user IS 'user information table'; diff --git a/launchers/semantic/src/main/resources/db/semantic-data-h2.sql b/launchers/semantic/src/main/resources/db/semantic-data-h2.sql index b9904da13..c11f8e64d 100644 --- a/launchers/semantic/src/main/resources/db/semantic-data-h2.sql +++ b/launchers/semantic/src/main/resources/db/semantic-data-h2.sql @@ -36,7 +36,7 @@ insert into s2_auth_groups (group_id, config) values (2, '{"domainId":"1","name":"tom_sales_permission","groupId":2,"authRules":[{"metrics":["stay_hours"],"dimensions":["page"]}],"dimensionFilters":["department in (''sales'')"],"dimensionFilterDescription":"开通 tom sales部门权限", "authorizedUsers":["tom"],"authorizedDepartmentIds":[]}'); -insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (1, 'admin','admin','admin','admin@xx.com', 1); insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); diff --git a/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql b/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql index e27fcd725..2c846cead 100644 --- a/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql +++ b/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql @@ -80,6 +80,7 @@ create table s2_user display_name varchar(100) null, password varchar(100) null, email varchar(100) null, + is_admin INT null, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_user IS 'user information table'; @@ -108,6 +109,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, + `tags` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_metric IS 'metric information table'; diff --git a/launchers/standalone/src/main/resources/db/data-h2.sql b/launchers/standalone/src/main/resources/db/data-h2.sql index 0ba57383b..68709c0c2 100644 --- a/launchers/standalone/src/main/resources/db/data-h2.sql +++ b/launchers/standalone/src/main/resources/db/data-h2.sql @@ -1,8 +1,8 @@ -- sample user -insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (1, 'admin','admin','admin','admin@xx.com', 1); insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); -insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (4, 'lucy','123456','lucy','lucy@xx.com', 1); insert into s2_user (id, `name`, password, display_name, email) values (5, 'alice','123456','alice','alice@xx.com'); -- sample models diff --git a/launchers/standalone/src/main/resources/db/schema-h2.sql b/launchers/standalone/src/main/resources/db/schema-h2.sql index b8d090f07..1370bc82d 100644 --- a/launchers/standalone/src/main/resources/db/schema-h2.sql +++ b/launchers/standalone/src/main/resources/db/schema-h2.sql @@ -87,6 +87,7 @@ create table s2_user display_name varchar(100) null, password varchar(100) null, email varchar(100) null, + is_admin INT null, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_user IS 'user information table'; @@ -190,6 +191,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, + `tags` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_metric IS 'metric information table'; diff --git a/launchers/standalone/src/main/resources/db/schema-mysql.sql b/launchers/standalone/src/main/resources/db/schema-mysql.sql index da3579178..266c67ff6 100644 --- a/launchers/standalone/src/main/resources/db/schema-mysql.sql +++ b/launchers/standalone/src/main/resources/db/schema-mysql.sql @@ -254,6 +254,7 @@ CREATE TABLE `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL COMMENT '数值类型', `data_format` varchar(500) DEFAULT NULL COMMENT '数值类型参数', `alias` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, + `tags` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='指标表'; @@ -368,7 +369,8 @@ create table s2_user display_name varchar(100) null, password varchar(100) null, email varchar(100) null, + is_admin int(11) null, PRIMARY KEY (`id`) ); -insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (1, 'admin','admin','admin','admin@xx.com', 1); diff --git a/launchers/standalone/src/main/resources/db/sql-update.sql b/launchers/standalone/src/main/resources/db/sql-update.sql index b56df3579..7799b3656 100644 --- a/launchers/standalone/src/main/resources/db/sql-update.sql +++ b/launchers/standalone/src/main/resources/db/sql-update.sql @@ -48,5 +48,10 @@ alter table s2_database drop column domain_id; alter table s2_chat add column agent_id int after chat_id; --20230907 +ALTER TABLE s2_model add alias varchar(200) default null after domain_id; -ALTER TABLE s2_model add alias varchar(200) default null after domain_id; \ No newline at end of file +--20230919 +alter table s2_metric add tags varchar(500) null; + +--20230920 +alter table s2_user add is_admin int null; \ No newline at end of file diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java b/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java index 0bb34a21c..50938af67 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/util/DataUtils.java @@ -23,7 +23,7 @@ import static java.time.LocalDate.now; public class DataUtils { - private static final User user_test = new User(1L, "admin", "admin", "admin@email"); + private static final User user_test = User.getFakeUser(); public static User getUser() { return user_test; diff --git a/launchers/standalone/src/test/resources/db/data-h2.sql b/launchers/standalone/src/test/resources/db/data-h2.sql index c2ee76401..10f6a3ef5 100644 --- a/launchers/standalone/src/test/resources/db/data-h2.sql +++ b/launchers/standalone/src/test/resources/db/data-h2.sql @@ -1,5 +1,5 @@ -- sample user -insert into s2_user (id, `name`, password, display_name, email) values (1, 'admin','admin','admin','admin@xx.com'); +insert into s2_user (id, `name`, password, display_name, email, is_admin) values (1, 'admin','admin','admin','admin@xx.com', 1); insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack','123456','jack','jack@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); diff --git a/launchers/standalone/src/test/resources/db/schema-h2.sql b/launchers/standalone/src/test/resources/db/schema-h2.sql index 64b84e38d..33429ca0b 100644 --- a/launchers/standalone/src/test/resources/db/schema-h2.sql +++ b/launchers/standalone/src/test/resources/db/schema-h2.sql @@ -102,6 +102,7 @@ create table s2_user display_name varchar(100) null, password varchar(100) null, email varchar(100) null, + is_admin INT null, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_user IS 'user information table'; @@ -205,6 +206,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, + `tags` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_metric IS 'metric information table'; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java index 1540baeeb..7481d997d 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java @@ -4,6 +4,7 @@ package com.tencent.supersonic.semantic.api.model.request; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import com.tencent.supersonic.common.pojo.DataFormat; import lombok.Data; +import java.util.List; @Data @@ -17,4 +18,6 @@ public class MetricBaseReq extends SchemaItem { private DataFormat dataFormat; + private List tags; + } diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java index aad02b810..40edea0c2 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java @@ -9,6 +9,4 @@ public class PageMetricReq extends PageSchemaItemReq { private String type; - private String key; - } diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java index b2580779d..94e26026d 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java @@ -16,4 +16,5 @@ public class PageSchemaItemReq extends PageBaseReq { private List modelIds = Lists.newArrayList(); private Integer sensitiveLevel; private Integer status; + private String key; } diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java index 9afbe3368..0a2aecd24 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java @@ -1,11 +1,15 @@ package com.tencent.supersonic.semantic.api.model.response; +import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.DataFormat; import com.tencent.supersonic.semantic.api.model.pojo.MetricTypeParams; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import lombok.Data; import lombok.ToString; +import org.apache.commons.lang3.StringUtils; +import java.util.Arrays; +import java.util.List; @Data @@ -14,6 +18,8 @@ public class MetricResp extends SchemaItem { private Long modelId; + private Long domainId; + private String modelName; //ATOMIC DERIVED @@ -27,5 +33,15 @@ public class MetricResp extends SchemaItem { private String alias; + private List tags; + private boolean hasAdminRes = false; + + public void setTag(String tag) { + if (StringUtils.isBlank(tag)) { + tags = Lists.newArrayList(); + } else { + tags = Arrays.asList(tag.split(",")); + } + } } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java index 6c4e731a3..e1a23c908 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DatabaseServiceImpl.java @@ -72,7 +72,8 @@ public class DatabaseServiceImpl implements DatabaseService { private void fillPermission(List databaseResps, User user) { databaseResps.forEach(databaseResp -> { if (databaseResp.getAdmins().contains(user.getName()) - || user.getName().equalsIgnoreCase(databaseResp.getCreatedBy())) { + || user.getName().equalsIgnoreCase(databaseResp.getCreatedBy()) + || user.isSuperAdmin()) { databaseResp.setHasPermission(true); databaseResp.setHasEditPermission(true); databaseResp.setHasUsePermission(true); @@ -111,7 +112,8 @@ public class DatabaseServiceImpl implements DatabaseService { List viewers = databaseResp.getViewers(); if (!admins.contains(user.getName()) && !viewers.contains(user.getName()) - && !databaseResp.getCreatedBy().equalsIgnoreCase(user.getName())) { + && !databaseResp.getCreatedBy().equalsIgnoreCase(user.getName()) + && !user.isSuperAdmin()) { String message = String.format("您暂无当前数据库%s权限, 请联系数据库管理员%s开通", databaseResp.getName(), String.join(",", admins)); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java index fd51d9496..ebc629b8d 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/DomainServiceImpl.java @@ -96,12 +96,12 @@ public class DomainServiceImpl implements DomainService { @Override public List getDomainListWithAdminAuth(User user) { - Set domainWithAuthAll = getDomainAuthSet(user.getName(), AuthType.ADMIN); + Set domainWithAuthAll = getDomainAuthSet(user, AuthType.ADMIN); if (!CollectionUtils.isEmpty(domainWithAuthAll)) { List domainIds = domainWithAuthAll.stream().map(DomainResp::getId).collect(Collectors.toList()); domainWithAuthAll.addAll(getParentDomain(domainIds)); } - List modelResps = modelService.getModelAuthList(user.getName(), AuthType.ADMIN); + List modelResps = modelService.getModelAuthList(user, AuthType.ADMIN); if (!CollectionUtils.isEmpty(modelResps)) { List domainIds = modelResps.stream().map(ModelResp::getDomainId).collect(Collectors.toList()); domainWithAuthAll.addAll(getParentDomain(domainIds)); @@ -111,18 +111,18 @@ public class DomainServiceImpl implements DomainService { } @Override - public Set getDomainAuthSet(String userName, AuthType authTypeEnum) { + public Set getDomainAuthSet(User user, AuthType authTypeEnum) { List domainResps = getDomainList(); - Set orgIds = userService.getUserAllOrgId(userName); + Set orgIds = userService.getUserAllOrgId(user.getName()); List domainWithAuth = Lists.newArrayList(); if (authTypeEnum.equals(AuthType.ADMIN)) { domainWithAuth = domainResps.stream() - .filter(domainResp -> checkAdminPermission(orgIds, userName, domainResp)) + .filter(domainResp -> checkAdminPermission(orgIds, user, domainResp)) .collect(Collectors.toList()); } if (authTypeEnum.equals(AuthType.VISIBLE)) { domainWithAuth = domainResps.stream() - .filter(domainResp -> checkViewerPermission(orgIds, userName, domainResp)) + .filter(domainResp -> checkViewerPermission(orgIds, user, domainResp)) .collect(Collectors.toList()); } List domainIds = domainWithAuth.stream().map(DomainResp::getId) @@ -240,11 +240,13 @@ public class DomainServiceImpl implements DomainService { } - private boolean checkAdminPermission(Set orgIds, String userName, DomainResp domainResp) { - + private boolean checkAdminPermission(Set orgIds, User user, DomainResp domainResp) { List admins = domainResp.getAdmins(); List adminOrgs = domainResp.getAdminOrgs(); - if (admins.contains(userName) || domainResp.getCreatedBy().equals(userName)) { + if (user.isSuperAdmin()) { + return true; + } + if (admins.contains(user.getName()) || domainResp.getCreatedBy().equals(user.getName())) { return true; } if (CollectionUtils.isEmpty(adminOrgs)) { @@ -258,12 +260,17 @@ public class DomainServiceImpl implements DomainService { return false; } - private boolean checkViewerPermission(Set orgIds, String userName, DomainResp domainDesc) { + private boolean checkViewerPermission(Set orgIds, User user, DomainResp domainDesc) { List admins = domainDesc.getAdmins(); List viewers = domainDesc.getViewers(); List adminOrgs = domainDesc.getAdminOrgs(); List viewOrgs = domainDesc.getViewOrgs(); - if (admins.contains(userName) || viewers.contains(userName) || domainDesc.getCreatedBy().equals(userName)) { + if (user.isSuperAdmin()) { + return true; + } + if (admins.contains(user.getName()) + || viewers.contains(user.getName()) + || domainDesc.getCreatedBy().equals(user.getName())) { return true; } if (CollectionUtils.isEmpty(adminOrgs) && CollectionUtils.isEmpty(viewOrgs)) { diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java index 6545e1b70..327e9017d 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java @@ -9,6 +9,7 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.common.pojo.DataAddEvent; import com.tencent.supersonic.common.pojo.DataDeleteEvent; import com.tencent.supersonic.common.pojo.DataUpdateEvent; +import com.tencent.supersonic.common.pojo.enums.AuthType; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.common.util.ChatGptHelper; import com.tencent.supersonic.semantic.api.model.pojo.Measure; @@ -28,6 +29,7 @@ import com.tencent.supersonic.semantic.model.domain.utils.MetricConverter; import com.tencent.supersonic.semantic.model.domain.MetricService; import com.tencent.supersonic.semantic.model.domain.pojo.Metric; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; @@ -123,7 +125,7 @@ public class MetricServiceImpl implements MetricService { } @Override - public PageInfo queryMetric(PageMetricReq pageMetricReq) { + public PageInfo queryMetric(PageMetricReq pageMetricReq, User user) { MetricFilter metricFilter = new MetricFilter(); BeanUtils.copyProperties(pageMetricReq, metricFilter); Set domainResps = domainService.getDomainChildren(pageMetricReq.getDomainIds()); @@ -137,7 +139,9 @@ public class MetricServiceImpl implements MetricService { .doSelectPageInfo(() -> queryMetric(metricFilter)); PageInfo pageInfo = new PageInfo<>(); BeanUtils.copyProperties(metricDOPageInfo, pageInfo); - pageInfo.setList(convertList(metricDOPageInfo.getList())); + List metricResps = convertList(metricDOPageInfo.getList()); + fillAdminRes(metricResps, user); + pageInfo.setList(metricResps); return pageInfo; } @@ -145,6 +149,21 @@ public class MetricServiceImpl implements MetricService { return metricRepository.getMetric(metricFilter); } + + private void fillAdminRes(List metricResps, User user) { + List modelResps = modelService.getModelListWithAuth(user, null, AuthType.ADMIN); + if (CollectionUtils.isEmpty(modelResps)) { + return; + } + Set modelIdSet = modelResps.stream().map(ModelResp::getId).collect(Collectors.toSet()); + for (MetricResp metricResp : metricResps) { + if (modelIdSet.contains(metricResp.getModelId())) { + metricResp.setHasAdminRes(true); + } + } + + } + @Override public MetricResp getMetric(Long modelId, String bizName) { List metricDescs = getMetricByModelId(modelId); @@ -250,6 +269,16 @@ public class MetricServiceImpl implements MetricService { }); } + @Override + public Set getMetricTags() { + List metricResps = getMetrics(); + if (CollectionUtils.isEmpty(metricResps)) { + return new HashSet<>(); + } + return metricResps.stream().flatMap(metricResp -> + metricResp.getTags().stream()).collect(Collectors.toSet()); + } + private void saveMetricBatch(List metrics, User user) { if (CollectionUtils.isEmpty(metrics)) { @@ -293,7 +322,7 @@ public class MetricServiceImpl implements MetricService { Map modelMap = modelService.getModelMap(); if (!CollectionUtils.isEmpty(metricDOS)) { metricDescs = metricDOS.stream() - .map(metricDO -> MetricConverter.convert2MetricDesc(metricDO, modelMap)) + .map(metricDO -> MetricConverter.convert2MetricResp(metricDO, modelMap)) .collect(Collectors.toList()); } return metricDescs; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java index e0aaafc76..5c5cf2bca 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/ModelServiceImpl.java @@ -96,10 +96,10 @@ public class ModelServiceImpl implements ModelService { } @Override - public List getModelListWithAuth(String userName, Long domainId, AuthType authType) { - List modelResps = getModelAuthList(userName, authType); + public List getModelListWithAuth(User user, Long domainId, AuthType authType) { + List modelResps = getModelAuthList(user, authType); Set modelRespSet = new HashSet<>(modelResps); - List modelRespsAuthInheritDomain = getModelRespAuthInheritDomain(userName, authType); + List modelRespsAuthInheritDomain = getModelRespAuthInheritDomain(user, authType); modelRespSet.addAll(modelRespsAuthInheritDomain); if (domainId != null && domainId > 0) { modelRespSet = modelRespSet.stream().filter(modelResp -> @@ -108,8 +108,8 @@ public class ModelServiceImpl implements ModelService { return fillMetricInfo(new ArrayList<>(modelRespSet)); } - public List getModelRespAuthInheritDomain(String userName, AuthType authType) { - Set domainResps = domainService.getDomainAuthSet(userName, authType); + public List getModelRespAuthInheritDomain(User user, AuthType authType) { + Set domainResps = domainService.getDomainAuthSet(user, authType); if (CollectionUtils.isEmpty(domainResps)) { return Lists.newArrayList(); } @@ -120,18 +120,18 @@ public class ModelServiceImpl implements ModelService { } @Override - public List getModelAuthList(String userName, AuthType authTypeEnum) { + public List getModelAuthList(User user, AuthType authTypeEnum) { List modelResps = getModelList(); - Set orgIds = userService.getUserAllOrgId(userName); + Set orgIds = userService.getUserAllOrgId(user.getName()); List modelWithAuth = Lists.newArrayList(); if (authTypeEnum.equals(AuthType.ADMIN)) { modelWithAuth = modelResps.stream() - .filter(modelResp -> checkAdminPermission(orgIds, userName, modelResp)) + .filter(modelResp -> checkAdminPermission(orgIds, user, modelResp)) .collect(Collectors.toList()); } if (authTypeEnum.equals(AuthType.VISIBLE)) { modelWithAuth = modelResps.stream() - .filter(domainResp -> checkViewerPermission(orgIds, userName, domainResp)) + .filter(domainResp -> checkViewerPermission(orgIds, user, domainResp)) .collect(Collectors.toList()); } return modelWithAuth; @@ -324,9 +324,13 @@ public class ModelServiceImpl implements ModelService { return new ArrayList<>(getModelMap().keySet()); } - public static boolean checkAdminPermission(Set orgIds, String userName, ModelResp modelResp) { + public static boolean checkAdminPermission(Set orgIds, User user, ModelResp modelResp) { List admins = modelResp.getAdmins(); List adminOrgs = modelResp.getAdminOrgs(); + if (user.isSuperAdmin()) { + return true; + } + String userName = user.getName(); if (admins.contains(userName) || modelResp.getCreatedBy().equals(userName)) { return true; } @@ -341,14 +345,18 @@ public class ModelServiceImpl implements ModelService { return false; } - public static boolean checkViewerPermission(Set orgIds, String userName, ModelResp modelResp) { + public static boolean checkViewerPermission(Set orgIds, User user, ModelResp modelResp) { List admins = modelResp.getAdmins(); List viewers = modelResp.getViewers(); List adminOrgs = modelResp.getAdminOrgs(); List viewOrgs = modelResp.getViewOrgs(); + if (user.isSuperAdmin()) { + return true; + } if (modelResp.openToAll()) { return true; } + String userName = user.getName(); if (admins.contains(userName) || viewers.contains(userName) || modelResp.getCreatedBy().equals(userName)) { return true; } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java index 565167b8a..6a72d2adf 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/DomainService.java @@ -30,7 +30,7 @@ public interface DomainService { List getDomainListWithAdminAuth(User user); - Set getDomainAuthSet(String userName, AuthType authTypeEnum); + Set getDomainAuthSet(User user, AuthType authTypeEnum); Set getDomainChildren(List domainId); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java index 1b28e8e64..969b935e5 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java @@ -7,6 +7,7 @@ import com.tencent.supersonic.semantic.api.model.request.PageMetricReq; import com.tencent.supersonic.semantic.api.model.response.MetricResp; import java.util.List; +import java.util.Set; public interface MetricService { @@ -22,7 +23,7 @@ public interface MetricService { void createMetricBatch(List metricReqs, User user) throws Exception; - PageInfo queryMetric(PageMetricReq pageMetrricReq); + PageInfo queryMetric(PageMetricReq pageMetricReq, User user); MetricResp getMetric(Long modelId, String bizName); @@ -35,4 +36,6 @@ public interface MetricService { void deleteMetric(Long id) throws Exception; List mockAlias(MetricReq metricReq, String mockType, User user); + + Set getMetricTags(); } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java index 7e05fa38e..f4458d8ba 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/ModelService.java @@ -13,9 +13,9 @@ import java.util.Map; public interface ModelService { - List getModelListWithAuth(String userName, Long domainId, AuthType authType); + List getModelListWithAuth(User user, Long domainId, AuthType authType); - List getModelAuthList(String userName, AuthType authTypeEnum); + List getModelAuthList(User user, AuthType authTypeEnum); List getModelByDomainIds(List domainIds); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java index ceb2fad56..098e63945 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java @@ -3,116 +3,247 @@ package com.tencent.supersonic.semantic.model.domain.dataobject; import java.util.Date; public class MetricDO { - + /** + * + */ private Long id; + /** + * 主体域ID + */ private Long modelId; + /** + * 指标名称 + */ private String name; + /** + * 字段名称 + */ private String bizName; + /** + * 描述 + */ private String description; + /** + * 指标状态,0正常,1下架,2删除 + */ private Integer status; + /** + * 敏感级别 + */ private Integer sensitiveLevel; + /** + * 指标类型 proxy,expr + */ private String type; + /** + * 创建时间 + */ private Date createdAt; + /** + * 创建人 + */ private String createdBy; + /** + * 更新时间 + */ private Date updatedAt; + /** + * 更新人 + */ private String updatedBy; + /** + * 数值类型 + */ private String dataFormatType; + /** + * 数值类型参数 + */ private String dataFormat; + /** + * + */ private String alias; + /** + * + */ + private String tags; + + /** + * 类型参数 + */ private String typeParams; - + /** + * + * @return id + */ public Long getId() { return id; } + /** + * + * @param id + */ public void setId(Long id) { this.id = id; } + /** + * 主体域ID + * @return model_id 主体域ID + */ public Long getModelId() { return modelId; } + /** + * 主体域ID + * @param modelId 主体域ID + */ public void setModelId(Long modelId) { this.modelId = modelId; } + /** + * 指标名称 + * @return name 指标名称 + */ public String getName() { return name; } + /** + * 指标名称 + * @param name 指标名称 + */ public void setName(String name) { this.name = name == null ? null : name.trim(); } + /** + * 字段名称 + * @return biz_name 字段名称 + */ public String getBizName() { return bizName; } + /** + * 字段名称 + * @param bizName 字段名称 + */ public void setBizName(String bizName) { this.bizName = bizName == null ? null : bizName.trim(); } + /** + * 描述 + * @return description 描述 + */ public String getDescription() { return description; } + /** + * 描述 + * @param description 描述 + */ public void setDescription(String description) { this.description = description == null ? null : description.trim(); } + /** + * 指标状态,0正常,1下架,2删除 + * @return status 指标状态,0正常,1下架,2删除 + */ public Integer getStatus() { return status; } + /** + * 指标状态,0正常,1下架,2删除 + * @param status 指标状态,0正常,1下架,2删除 + */ public void setStatus(Integer status) { this.status = status; } + /** + * 敏感级别 + * @return sensitive_level 敏感级别 + */ public Integer getSensitiveLevel() { return sensitiveLevel; } + /** + * 敏感级别 + * @param sensitiveLevel 敏感级别 + */ public void setSensitiveLevel(Integer sensitiveLevel) { this.sensitiveLevel = sensitiveLevel; } + /** + * 指标类型 proxy,expr + * @return type 指标类型 proxy,expr + */ public String getType() { return type; } + /** + * 指标类型 proxy,expr + * @param type 指标类型 proxy,expr + */ public void setType(String type) { this.type = type == null ? null : type.trim(); } + /** + * 创建时间 + * @return created_at 创建时间 + */ public Date getCreatedAt() { return createdAt; } + /** + * 创建时间 + * @param createdAt 创建时间 + */ public void setCreatedAt(Date createdAt) { this.createdAt = createdAt; } + /** + * 创建人 + * @return created_by 创建人 + */ public String getCreatedBy() { return createdBy; } + /** + * 创建人 + * @param createdBy 创建人 + */ public void setCreatedBy(String createdBy) { this.createdBy = createdBy == null ? null : createdBy.trim(); } @@ -182,21 +313,37 @@ public class MetricDO { } /** - * - * @return alias + * + * @return alias */ public String getAlias() { return alias; } /** - * - * @param alias + * + * @param alias */ public void setAlias(String alias) { this.alias = alias == null ? null : alias.trim(); } + /** + * + * @return tags + */ + public String getTags() { + return tags; + } + + /** + * + * @param tags + */ + public void setTags(String tags) { + this.tags = tags == null ? null : tags.trim(); + } + /** * 类型参数 * @return type_params 类型参数 @@ -212,4 +359,4 @@ public class MetricDO { public void setTypeParams(String typeParams) { this.typeParams = typeParams == null ? null : typeParams.trim(); } -} +} \ No newline at end of file diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java index a74ee01eb..d57855cfe 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java @@ -31,6 +31,7 @@ public class MetricDOExample { protected Integer limitEnd; /** + * * @mbg.generated */ public MetricDOExample() { @@ -38,6 +39,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setOrderByClause(String orderByClause) { @@ -45,6 +47,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public String getOrderByClause() { @@ -52,6 +55,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setDistinct(boolean distinct) { @@ -59,6 +63,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public boolean isDistinct() { @@ -66,6 +71,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public List getOredCriteria() { @@ -73,6 +79,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void or(Criteria criteria) { @@ -80,6 +87,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public Criteria or() { @@ -89,6 +97,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public Criteria createCriteria() { @@ -100,6 +109,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ protected Criteria createCriteriaInternal() { @@ -108,6 +118,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void clear() { @@ -117,13 +128,15 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setLimitStart(Integer limitStart) { - this.limitStart = limitStart; + this.limitStart=limitStart; } /** + * * @mbg.generated */ public Integer getLimitStart() { @@ -131,13 +144,15 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setLimitEnd(Integer limitEnd) { - this.limitEnd = limitEnd; + this.limitEnd=limitEnd; } /** + * * @mbg.generated */ public Integer getLimitEnd() { @@ -1177,6 +1192,76 @@ public class MetricDOExample { addCriterion("alias not between", value1, value2, "alias"); return (Criteria) this; } + + public Criteria andTagsIsNull() { + addCriterion("tags is null"); + return (Criteria) this; + } + + public Criteria andTagsIsNotNull() { + addCriterion("tags is not null"); + return (Criteria) this; + } + + public Criteria andTagsEqualTo(String value) { + addCriterion("tags =", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotEqualTo(String value) { + addCriterion("tags <>", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsGreaterThan(String value) { + addCriterion("tags >", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsGreaterThanOrEqualTo(String value) { + addCriterion("tags >=", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsLessThan(String value) { + addCriterion("tags <", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsLessThanOrEqualTo(String value) { + addCriterion("tags <=", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsLike(String value) { + addCriterion("tags like", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotLike(String value) { + addCriterion("tags not like", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsIn(List values) { + addCriterion("tags in", values, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotIn(List values) { + addCriterion("tags not in", values, "tags"); + return (Criteria) this; + } + + public Criteria andTagsBetween(String value1, String value2) { + addCriterion("tags between", value1, value2, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotBetween(String value1, String value2) { + addCriterion("tags not between", value1, value2, "tags"); + return (Criteria) this; + } } /** @@ -1209,6 +1294,38 @@ public class MetricDOExample { private String typeHandler; + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + protected Criterion(String condition) { super(); this.condition = condition; @@ -1244,37 +1361,5 @@ public class MetricDOExample { protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } - - public String getCondition() { - return condition; - } - - public Object getValue() { - return value; - } - - public Object getSecondValue() { - return secondValue; - } - - public boolean isNoValue() { - return noValue; - } - - public boolean isSingleValue() { - return singleValue; - } - - public boolean isBetweenValue() { - return betweenValue; - } - - public boolean isListValue() { - return listValue; - } - - public String getTypeHandler() { - return typeHandler; - } } -} +} \ No newline at end of file diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java index 771915de1..cfdc4917d 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java @@ -1,10 +1,12 @@ package com.tencent.supersonic.semantic.model.domain.pojo; - import com.tencent.supersonic.common.pojo.DataFormat; import com.tencent.supersonic.semantic.api.model.pojo.MetricTypeParams; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import lombok.Data; +import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; +import java.util.List; @Data public class Metric extends SchemaItem { @@ -23,4 +25,13 @@ public class Metric extends SchemaItem { private String alias; + private List tags; + + public String getTag() { + if (CollectionUtils.isEmpty(tags)) { + return ""; + } + return StringUtils.join(tags, ","); + } + } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java index 9b6513d3a..5573c7b87 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java @@ -37,6 +37,7 @@ public class MetricConverter { if (metric.getDataFormat() != null) { metricDO.setDataFormat(JSONObject.toJSONString(metric.getDataFormat())); } + metricDO.setTags(metric.getTag()); return metricDO; } @@ -51,27 +52,23 @@ public class MetricConverter { BeanUtils.copyProperties(metric, metricDO); metricDO.setTypeParams(JSONObject.toJSONString(metric.getTypeParams())); metricDO.setDataFormat(JSONObject.toJSONString(metric.getDataFormat())); + metricDO.setTags(metric.getTag()); return metricDO; } - public static MetricResp convert2MetricDesc(MetricDO metricDO, Map modelMap) { - MetricResp metricDesc = new MetricResp(); - BeanUtils.copyProperties(metricDO, metricDesc); - metricDesc.setTypeParams(JSONObject.parseObject(metricDO.getTypeParams(), MetricTypeParams.class)); - metricDesc.setDataFormat(JSONObject.parseObject(metricDO.getDataFormat(), DataFormat.class)); + public static MetricResp convert2MetricResp(MetricDO metricDO, Map modelMap) { + MetricResp metricResp = new MetricResp(); + BeanUtils.copyProperties(metricDO, metricResp); + metricResp.setTypeParams(JSONObject.parseObject(metricDO.getTypeParams(), MetricTypeParams.class)); + metricResp.setDataFormat(JSONObject.parseObject(metricDO.getDataFormat(), DataFormat.class)); ModelResp modelResp = modelMap.get(metricDO.getModelId()); if (modelResp != null) { - metricDesc.setModelName(modelResp.getName()); + metricResp.setModelName(modelResp.getName()); + metricResp.setDomainId(modelResp.getDomainId()); } - return metricDesc; - } - - public static Metric convert2Metric(MetricDO metricDO) { - Metric metric = new Metric(); - BeanUtils.copyProperties(metricDO, metric); - metric.setTypeParams(JSONObject.parseObject(metricDO.getTypeParams(), MetricTypeParams.class)); - return metric; + metricResp.setTag(metricDO.getTags()); + return metricResp; } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java index 99a164695..4b60bfab2 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java @@ -9,6 +9,7 @@ import com.tencent.supersonic.semantic.api.model.request.PageMetricReq; import com.tencent.supersonic.semantic.api.model.response.MetricResp; import com.tencent.supersonic.semantic.model.domain.MetricService; import java.util.List; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -68,8 +69,11 @@ public class MetricController { @PostMapping("/queryMetric") - public PageInfo queryMetric(@RequestBody PageMetricReq pageMetrricReq) { - return metricService.queryMetric(pageMetrricReq); + public PageInfo queryMetric(@RequestBody PageMetricReq pageMetricReq, + HttpServletRequest request, + HttpServletResponse response) { + User user = UserHolder.findUser(request, response); + return metricService.queryMetric(pageMetricReq, user); } @GetMapping("getMetric/{modelId}/{bizName}") @@ -90,4 +94,9 @@ public class MetricController { } + @GetMapping("/getMetricTags") + public Set getMetricTags() { + return metricService.getMetricTags(); + } + } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ModelController.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ModelController.java index 0eb0b5175..3c3ec3624 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ModelController.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/ModelController.java @@ -60,7 +60,7 @@ public class ModelController { HttpServletRequest request, HttpServletResponse response) { User user = UserHolder.findUser(request, response); - return modelService.getModelListWithAuth(user.getName(), domainId, AuthType.ADMIN); + return modelService.getModelListWithAuth(user, domainId, AuthType.ADMIN); } diff --git a/semantic/model/src/main/resources/mapper/MetricDOMapper.xml b/semantic/model/src/main/resources/mapper/MetricDOMapper.xml index 37f09c2b5..2d20f9ee8 100644 --- a/semantic/model/src/main/resources/mapper/MetricDOMapper.xml +++ b/semantic/model/src/main/resources/mapper/MetricDOMapper.xml @@ -17,6 +17,7 @@ + @@ -52,7 +53,7 @@ id, model_id, name, biz_name, description, status, sensitive_level, type, created_at, - created_by, updated_at, updated_by, data_format_type, data_format, alias + created_by, updated_at, updated_by, data_format_type, data_format, alias, tags type_params @@ -108,13 +109,13 @@ sensitive_level, type, created_at, created_by, updated_at, updated_by, data_format_type, data_format, alias, - type_params) + tags, type_params) values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{bizName,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{sensitiveLevel,jdbcType=INTEGER}, #{type,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, #{updatedBy,jdbcType=VARCHAR}, #{dataFormatType,jdbcType=VARCHAR}, #{dataFormat,jdbcType=VARCHAR}, #{alias,jdbcType=VARCHAR}, - #{typeParams,jdbcType=LONGVARCHAR}) + #{tags,jdbcType=VARCHAR}, #{typeParams,jdbcType=LONGVARCHAR}) insert into s2_metric @@ -164,6 +165,9 @@ alias, + + tags, + type_params, @@ -214,6 +218,9 @@ #{alias,jdbcType=VARCHAR}, + + #{tags,jdbcType=VARCHAR}, + #{typeParams,jdbcType=LONGVARCHAR}, @@ -270,6 +277,9 @@ alias = #{alias,jdbcType=VARCHAR}, + + tags = #{tags,jdbcType=VARCHAR}, + type_params = #{typeParams,jdbcType=LONGVARCHAR}, @@ -292,6 +302,7 @@ data_format_type = #{dataFormatType,jdbcType=VARCHAR}, data_format = #{dataFormat,jdbcType=VARCHAR}, alias = #{alias,jdbcType=VARCHAR}, + tags = #{tags,jdbcType=VARCHAR}, type_params = #{typeParams,jdbcType=LONGVARCHAR} where id = #{id,jdbcType=BIGINT} @@ -310,7 +321,8 @@ updated_by = #{updatedBy,jdbcType=VARCHAR}, data_format_type = #{dataFormatType,jdbcType=VARCHAR}, data_format = #{dataFormat,jdbcType=VARCHAR}, - alias = #{alias,jdbcType=VARCHAR} + alias = #{alias,jdbcType=VARCHAR}, + tags = #{tags,jdbcType=VARCHAR} where id = #{id,jdbcType=BIGINT} \ No newline at end of file diff --git a/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml b/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml index 67db20d9c..8546d856b 100644 --- a/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml +++ b/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml @@ -2,22 +2,26 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + @@ -51,12 +55,11 @@ - id - , model_id, name, biz_name, description, type, created_at, created_by, updated_at, - updated_by + id, model_id, name, biz_name, description, status, sensitive_level, type, created_at, + created_by, updated_at, updated_by, data_format_type, data_format, alias, tags - typeParams + type_params @@ -108,7 +111,8 @@ and ( id like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or biz_name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or - description like CONCAT('%',#{key , jdbcType=VARCHAR},'%') ) + description like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or + tags like CONCAT('%',#{key , jdbcType=VARCHAR},'%') ) and id like CONCAT('%',#{id , jdbcType=VARCHAR},'%') diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java index 485209c66..109aa779c 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/service/SchemaServiceImpl.java @@ -119,7 +119,7 @@ public class SchemaServiceImpl implements SchemaService { @Override public PageInfo queryMetric(PageMetricReq pageMetricCmd, User user) { - return metricService.queryMetric(pageMetricCmd); + return metricService.queryMetric(pageMetricCmd, user); } @Override @@ -129,7 +129,7 @@ public class SchemaServiceImpl implements SchemaService { @Override public List getModelList(User user, AuthType authTypeEnum, Long domainId) { - return modelService.getModelListWithAuth(user.getName(), domainId, authTypeEnum); + return modelService.getModelListWithAuth(user, domainId, authTypeEnum); } } diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/DataPermissionAOP.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/DataPermissionAOP.java index 36afdef4e..dd0637795 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/DataPermissionAOP.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/utils/DataPermissionAOP.java @@ -140,7 +140,7 @@ public class DataPermissionAOP { private boolean doModelAdmin(User user, QueryStructReq queryStructReq) { Long modelId = queryStructReq.getModelId(); - List modelListAdmin = modelService.getModelListWithAuth(user.getName(), null, AuthType.ADMIN); + List modelListAdmin = modelService.getModelListWithAuth(user, null, AuthType.ADMIN); if (CollectionUtils.isEmpty(modelListAdmin)) { return false; } else { @@ -153,7 +153,7 @@ public class DataPermissionAOP { private void doModelVisible(User user, QueryStructReq queryStructReq) { Boolean visible = true; Long modelId = queryStructReq.getModelId(); - List modelListVisible = modelService.getModelListWithAuth(user.getName(), null, AuthType.VISIBLE); + List modelListVisible = modelService.getModelListWithAuth(user, null, AuthType.VISIBLE); if (CollectionUtils.isEmpty(modelListVisible)) { visible = false; } else {

di6l*DDsR@`^DzzbhLoxL(v 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 literal 125579 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