diff --git a/controllers/account/api/v1/debt_webhook.go b/controllers/account/api/v1/debt_webhook.go index b9428a25635..15af2638419 100644 --- a/controllers/account/api/v1/debt_webhook.go +++ b/controllers/account/api/v1/debt_webhook.go @@ -150,7 +150,7 @@ func checkOption(ctx context.Context, logger logr.Logger, c client.Client, nsNam return admission.Allowed("namespace not found") } // Check if it is a user namespace - user, ok := ns.Annotations[userv1.UserAnnotationOwnerKey] + user, ok := ns.Annotations[userv1.UserAnnotationCreatorKey] logger.V(1).Info("check user namespace", "ns.name", ns.Name, "ns", ns) if !ok { return admission.ValidationResponse(true, fmt.Sprintf("this namespace is not user namespace %s,or have not create", ns.Name)) diff --git a/controllers/account/config/rbac/role.yaml b/controllers/account/config/rbac/role.yaml index c81c4f98b5d..60c758c0f03 100644 --- a/controllers/account/config/rbac/role.yaml +++ b/controllers/account/config/rbac/role.yaml @@ -5,6 +5,18 @@ metadata: creationTimestamp: null name: manager-role rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - create + - delete + - get + - list + - patch + - update + - watch - apiGroups: - account.sealos.io resources: diff --git a/controllers/account/controllers/account_controller.go b/controllers/account/controllers/account_controller.go index beb101335ce..3e50a229b22 100644 --- a/controllers/account/controllers/account_controller.go +++ b/controllers/account/controllers/account_controller.go @@ -21,8 +21,10 @@ import ( "fmt" "os" "strconv" + "strings" "time" + "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/event" "sigs.k8s.io/controller-runtime/pkg/predicate" @@ -85,6 +87,7 @@ type AccountReconciler struct { //+kubebuilder:rbac:groups=account.sealos.io,resources=accountbalances/status,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=rolebindings,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=roles,verbs=get;list;watch;create;update;patch;delete +//+kubebuilder:rbac:groups="",resources=configmaps,verbs=get;list;watch;create;update;patch;delete func (r *AccountReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { //It should not stop the normal process for the failure to delete the payment @@ -100,6 +103,11 @@ func (r *AccountReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct return ctrl.Result{}, err } + configMap := &corev1.ConfigMap{} + if err := r.Client.Get(ctx, types.NamespacedName{Name: "recharge-gift", Namespace: "sealos"}, configMap); err != nil { + r.Logger.Error(err, "get recharge-gift ConfigMap failed") + } + accountBalance := accountv1.AccountBalance{} if err := r.Get(ctx, req.NamespacedName, &accountBalance); err == nil { err = retry2.RetryOnConflict(retry2.DefaultBackoff, func() error { @@ -153,7 +161,11 @@ func (r *AccountReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct now := time.Now().UTC() payAmount := *orderResp.Amount.Total * 10000 //1¥ = 100WechatPayAmount; 1 WechatPayAmount = 10000 SealosAmount - err = crypto.RechargeBalance(account.Status.EncryptBalance, giveGift(payAmount)) + gift, err := giveGift(payAmount, configMap) + if err != nil { + r.Logger.Error(err, "get gift error") + } + err = crypto.RechargeBalance(account.Status.EncryptBalance, gift) if err != nil { return ctrl.Result{}, fmt.Errorf("recharge encrypt balance failed: %v", err) } @@ -493,36 +505,30 @@ func (p *NamespaceFilterPredicate) Generic(e event.GenericEvent) bool { return e.Object.GetNamespace() == p.Namespace } -const ( - BaseUnit = 1_000_000 - Threshold1 = 299 * BaseUnit - Threshold2 = 599 * BaseUnit - Threshold3 = 1999 * BaseUnit - Threshold4 = 4999 * BaseUnit - Threshold5 = 19999 * BaseUnit - Ratio0 int64 = 0 - Ratio1 int64 = 10 - Ratio2 int64 = 15 - Ratio3 int64 = 20 - Ratio4 int64 = 25 - Ratio5 int64 = 30 -) +const BaseUnit = 1_000_000 + +func giveGift(amount int64, configMap *corev1.ConfigMap) (int64, error) { + if configMap.Data == nil { + return amount, fmt.Errorf("configMap's data is nil") + } + stepsStr := strings.Split(configMap.Data["steps"], ",") + ratiosStr := strings.Split(configMap.Data["ratios"], ",") -func giveGift(amount int64) int64 { var ratio int64 - switch { - case amount < Threshold1: - ratio = Ratio0 - case amount < Threshold2: - ratio = Ratio1 - case amount < Threshold3: - ratio = Ratio2 - case amount < Threshold4: - ratio = Ratio3 - case amount < Threshold5: - ratio = Ratio4 - default: - ratio = Ratio5 + + for i, stepStr := range stepsStr { + step, err := strconv.ParseInt(stepStr, 10, 64) + if err != nil { + return amount, fmt.Errorf("steps format error :%s", err) + } + if amount >= step*BaseUnit { + ratio, err = strconv.ParseInt(ratiosStr[i], 10, 64) + if err != nil { + return amount, fmt.Errorf("ratios format error :%s", err) + } + } else { + break + } } - return (amount * ratio / 100) + amount + return (amount * ratio / 100) + amount, nil } diff --git a/controllers/account/controllers/account_controller_test.go b/controllers/account/controllers/account_controller_test.go index e667b266273..f4b5e2e5cf2 100644 --- a/controllers/account/controllers/account_controller_test.go +++ b/controllers/account/controllers/account_controller_test.go @@ -16,7 +16,11 @@ limitations under the License. package controllers -import "testing" +import ( + "testing" + + corev1 "k8s.io/api/core/v1" +) func Test_giveGift(t *testing.T) { type args struct { @@ -43,9 +47,15 @@ func Test_giveGift(t *testing.T) { {name: "30% more than 19999", args: args{amount: 99999 * BaseUnit}, want: 29999_700_000 + 99999*BaseUnit}, {"0% less than 299", args{amount: 1 * BaseUnit}, 1 * BaseUnit}, } + + configMap := &corev1.ConfigMap{} + configMap.Data = make(map[string]string) + configMap.Data["steps"] = "299,599,1999,4999,19999" + configMap.Data["ratios"] = "10,15,20,25,30" + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := giveGift(tt.args.amount); got != tt.want { + if got, _ := giveGift(tt.args.amount, configMap); got != tt.want { t.Errorf("giveGift() = %v, want %v", got, tt.want) } }) diff --git a/controllers/account/controllers/billing_controller.go b/controllers/account/controllers/billing_controller.go index fb72f463e29..c488b8c8e6a 100644 --- a/controllers/account/controllers/billing_controller.go +++ b/controllers/account/controllers/billing_controller.go @@ -98,7 +98,7 @@ func (r *BillingReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct return ctrl.Result{}, nil } - own := ns.Annotations[v1.UserAnnotationOwnerKey] + own := ns.Annotations[v1.UserAnnotationCreatorKey] if own == "" { r.Logger.V(1).Info("billing namespace not found owner annotation", "namespace", ns.Name) return ctrl.Result{}, nil @@ -119,7 +119,7 @@ func (r *BillingReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct // return ctrl.Result{}, err //} //for _, namespace := range nsList.Items { - // if namespace.Annotations[v1.UserAnnotationOwnerKey] != own { + // if namespace.Annotations[v1.UserAnnotationCreatorKey] != own { // continue // } // if err = r.syncResourceQuota(ctx, namespace.Name); err != nil { @@ -270,7 +270,7 @@ func (r *BillingReconciler) SetupWithManager(mgr ctrl.Manager, rateOpts controll return ctrl.NewControllerManagedBy(mgr). For(&corev1.Namespace{}, builder.WithPredicates(predicate.Funcs{ CreateFunc: func(createEvent event.CreateEvent) bool { - _, ok := createEvent.Object.GetAnnotations()[v1.UserAnnotationOwnerKey] + _, ok := createEvent.Object.GetAnnotations()[v1.UserAnnotationCreatorKey] return ok }, UpdateFunc: func(updateEvent event.UpdateEvent) bool { diff --git a/controllers/account/deploy/manifests/deploy.yaml b/controllers/account/deploy/manifests/deploy.yaml index 10343617b9f..72b61ac3aa7 100644 --- a/controllers/account/deploy/manifests/deploy.yaml +++ b/controllers/account/deploy/manifests/deploy.yaml @@ -636,6 +636,18 @@ metadata: creationTimestamp: null name: account-manager-role rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - create + - delete + - get + - list + - patch + - update + - watch - apiGroups: - account.sealos.io resources: diff --git a/controllers/resources/controllers/monitor_controller.go b/controllers/resources/controllers/monitor_controller.go index 4e0ef2eb003..ac1a3a0715a 100644 --- a/controllers/resources/controllers/monitor_controller.go +++ b/controllers/resources/controllers/monitor_controller.go @@ -272,7 +272,7 @@ func (r *MonitorReconciler) podResourceUsage(ctx context.Context, dbClient datab if client.IgnoreNotFound(err) != nil { return err } - if _, ok := namespace.GetAnnotations()[v1.UserAnnotationOwnerKey]; ok { + if _, ok := namespace.GetAnnotations()[v1.UserAnnotationCreatorKey]; ok { //+kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=rolebindings,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=roles,verbs=get;list;watch;create;update;patch;delete //if err = r.syncResourceQuota(ctx, namespace.Name); err != nil { diff --git a/controllers/user/api/v1/groupversion_info.go b/controllers/user/api/v1/groupversion_info.go index 4ba1c452b09..cfdf8b01360 100644 --- a/controllers/user/api/v1/groupversion_info.go +++ b/controllers/user/api/v1/groupversion_info.go @@ -39,7 +39,11 @@ var ( ) const ( - UserAnnotationOwnerKey = "user.sealos.io/creator" + // UserAnnotationCreatorKey refers to the user who created the resource + UserAnnotationCreatorKey = "user.sealos.io/creator" + // UserAnnotationOwnerKey refers to the user who owns the resource + UserAnnotationOwnerKey = "user.sealos.io/owner" + UserLabelOwnerKey = "user.sealos.io/owner" UserAnnotationDisplayKey = "user.sealos.io/display-name" ) diff --git a/controllers/user/api/v1/user_webhook.go b/controllers/user/api/v1/user_webhook.go index bb51f715306..956fb92435d 100644 --- a/controllers/user/api/v1/user_webhook.go +++ b/controllers/user/api/v1/user_webhook.go @@ -48,6 +48,9 @@ func (r *User) Default() { if r.Annotations[UserAnnotationDisplayKey] == "" { r.Annotations[UserAnnotationDisplayKey] = r.Name } + if r.Annotations[UserAnnotationOwnerKey] == "" { + r.Annotations[UserAnnotationOwnerKey] = r.Name + } } // TODO(user): change verbs to "verbs=create;update;delete" if you want to enable deletion validation. diff --git a/controllers/user/controllers/user_controller.go b/controllers/user/controllers/user_controller.go index f874c74044e..fe88e0477e8 100644 --- a/controllers/user/controllers/user_controller.go +++ b/controllers/user/controllers/user_controller.go @@ -58,7 +58,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ) +var userAnnotationCreatorKey = userv1.UserAnnotationCreatorKey var userAnnotationOwnerKey = userv1.UserAnnotationOwnerKey +var userLabelOwnerKey = userv1.UserLabelOwnerKey // UserReconciler reconciles a User object type UserReconciler struct { @@ -134,7 +136,7 @@ func (r *UserReconciler) SetupWithManager(mgr ctrl.Manager, opts utilcontroller. owner := &handler.EnqueueRequestForOwner{OwnerType: &userv1.User{}, IsController: true} return ctrl.NewControllerManagedBy(mgr). For(&userv1.User{}, builder.WithPredicates( - predicate.Or(predicate.GenerationChangedPredicate{}))). + predicate.Or(predicate.GenerationChangedPredicate{}, predicate.AnnotationChangedPredicate{}))). Watches(&source.Kind{Type: &v1.ServiceAccount{}}, owner). Watches(&source.Kind{Type: &v12.Role{}}, owner). Watches(&source.Kind{Type: &v12.RoleBinding{}}, owner). @@ -233,8 +235,13 @@ func (r *UserReconciler) syncNamespace(ctx context.Context, user *userv1.User) c r.Logger.V(1).Info("define namespace User namespace is created", "isCreated", isCreated, "namespace", ns.Name) } if change, err = controllerutil.CreateOrUpdate(ctx, r.Client, ns, func() error { - ns.Annotations = map[string]string{userAnnotationOwnerKey: user.Name} + ns.Annotations = map[string]string{ + userAnnotationCreatorKey: user.Name, + userAnnotationOwnerKey: user.Annotations[userAnnotationOwnerKey], + } ns.Labels = config.SetPodSecurity(ns.Labels) + // add label for namespace to filter + ns.Labels[userLabelOwnerKey] = user.Annotations[userAnnotationOwnerKey] ns.SetOwnerReferences([]metav1.OwnerReference{}) return controllerutil.SetControllerReference(user, ns, r.Scheme) }); err != nil { @@ -274,7 +281,10 @@ func (r *UserReconciler) syncRole(ctx context.Context, user *userv1.User) contex role.Namespace = config.GetUsersNamespace(user.Name) role.Labels = map[string]string{} if change, err = controllerutil.CreateOrUpdate(ctx, r.Client, role, func() error { - role.Annotations = map[string]string{userAnnotationOwnerKey: user.Name} + role.Annotations = map[string]string{ + userAnnotationCreatorKey: user.Name, + userAnnotationOwnerKey: user.Annotations[userAnnotationOwnerKey], + } role.Rules = config.GetUserRole() return controllerutil.SetControllerReference(user, role, r.Scheme) }); err != nil { @@ -313,7 +323,10 @@ func (r *UserReconciler) syncRoleBinding(ctx context.Context, user *userv1.User) roleBinding.Namespace = config.GetUsersNamespace(user.Name) roleBinding.Labels = map[string]string{} if change, err = controllerutil.CreateOrUpdate(ctx, r.Client, roleBinding, func() error { - roleBinding.Annotations = map[string]string{userAnnotationOwnerKey: user.Name} + roleBinding.Annotations = map[string]string{ + userAnnotationCreatorKey: user.Name, + userAnnotationOwnerKey: user.Annotations[userAnnotationOwnerKey], + } roleBinding.RoleRef = v12.RoleRef{ APIGroup: v12.GroupName, Kind: "Role", @@ -379,7 +392,10 @@ func (r *UserReconciler) syncServiceAccount(ctx context.Context, user *userv1.Us } secretName := kubeconfig.SecretName(user.Name) if change, err = controllerutil.CreateOrUpdate(ctx, r.Client, sa, func() error { - sa.Annotations = map[string]string{userAnnotationOwnerKey: user.Name} + sa.Annotations = map[string]string{ + userAnnotationCreatorKey: user.Name, + userAnnotationOwnerKey: user.Annotations[userAnnotationOwnerKey], + } if len(sa.Secrets) == 0 { sa.Secrets = []v1.ObjectReference{ { diff --git a/deploy/cloud-deprecated/README.md b/deploy/cloud-deprecated/README.md deleted file mode 100644 index e77ec3037f2..00000000000 --- a/deploy/cloud-deprecated/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Sealos cloud cluster image - -## usage - -### prepare - -1. A cloud domain and dns to your k8s cluster. Suppose your domain name is `cloud.example.io`. -2. A TLS cert that resolves `cloud.example.io` and `*.cloud.example.io` - -### save your cert file to a sealos config file - -```yaml -# tls-secret.yaml -apiVersion: apps.sealos.io/v1beta1 -kind: Config -metadata: - name: secret -spec: - path: manifests/tls-secret.yaml - match: ghcr.io/labring/sealos-cloud:latest - strategy: merge - data: | - data: - tls.crt: - tls.key: -``` - -### run sealos cloud cluster image -```shell -sealos run ghcr.io/labring/sealos-cloud:latest --config-file tls-secret.yaml --env cloudDomain="cloud.example.com" -``` diff --git a/deploy/cloud/README.md b/deploy/cloud/README.md index cea2dd50df2..f2105a2950a 100644 --- a/deploy/cloud/README.md +++ b/deploy/cloud/README.md @@ -46,13 +46,15 @@ sealos gen labring/kubernetes:v1.25.6\ labring/zot:v1.4.3\ labring/kubeblocks:v0.5.3\ --env policy=anonymousPolicy\ - --masters 10.140.0.16 > Clusterfile + --masters 10.140.0.16 \ + --nodes 10.140.0.17, 10.140.0.18 > Clusterfile sealos apply -f Clusterfile ``` Note: if you want to change pod cidr, please edit the `Clusterfile` before run `sealos apply` + ### Ingress-nginx setup We use ingress-nginx to expose our services. You can install ingress-nginx by using sealos: @@ -82,10 +84,16 @@ Install ingress-nginx and switch to NodePort mode sealos run docker.io/labring/ingress-nginx:v1.5.1 --config-file ingress-nginx-config.yaml ``` +Note: if your domain is resolved to the master ip, you may need patch ingress-nginx DaemonSet to run on master node: + +```shell +kubectl -n ingress-nginx patch ds ingress-nginx-controller -p '{"spec":{"template":{"spec":{"tolerations":[{"key":"node-role.kubernetes.io/master","operator":"Exists","effect":"NoSchedule"}]}}}}' +```` + ## run sealos cloud cluster image ### Generate TLS config file -You can skip this step if you use the self-signed cert that we provide by default. +You can skip this step if you use the self-signed cert which we provided by default. Please make sure `spec.match` is the same as the image you want to run and the registry name such as ghcr.io/docker.io can diff --git a/deploy/cloud/manifests/mock-cert.yaml.tmpl b/deploy/cloud/manifests/mock-cert.yaml.tmpl new file mode 100644 index 00000000000..8224d5c34f4 --- /dev/null +++ b/deploy/cloud/manifests/mock-cert.yaml.tmpl @@ -0,0 +1,27 @@ +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: selfsigned-issuer +spec: + selfSigned: {} +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: sealos-cloud + namespace: sealos-system +spec: + secretName: wildcard-cert + issuerRef: + name: selfsigned-issuer + kind: ClusterIssuer + commonName: {{ .cloudDomain }} + dnsNames: + - '{{ .cloudDomain }}' + - '*.{{ .cloudDomain }}' + secretTemplate: + annotations: + reflector.v1.k8s.emberstack.com/reflection-allowed: "true" + reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: sealos,\w+-system,\w+-frontend,ns-[\-a-z0-9]* + reflector.v1.k8s.emberstack.com/reflection-auto-enabled: "true" + reflector.v1.k8s.emberstack.com/reflection-auto-namespaces: sealos,\w+-system,\w+-frontend,ns-[\-a-z0-9]* diff --git a/deploy/cloud/scripts/init.sh b/deploy/cloud/scripts/init.sh index 5d0dec7eccc..2577f13f583 100644 --- a/deploy/cloud/scripts/init.sh +++ b/deploy/cloud/scripts/init.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -e +set -ex cloudDomain="127.0.0.1.nip.io" tlsCrtPlaceholder="" @@ -10,17 +10,15 @@ function read_env { source $1 } -function mock_tls { +function create_tls_secret { if grep -q $tlsCrtPlaceholder manifests/tls-secret.yaml; then echo "mock tls secret" + kubectl apply -f manifests/mock-cert.yaml + echo "mock tls cert has been created successfully." else echo "tls secret is already set" - return + kubectl apply -f manifests/tls-secret.yaml fi - - mkdir -p etc/tls - openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout etc/tls/tls.key -out etc/tls/tls.crt -subj "/CN=$1" -addext "subjectAltName=DNS:$1,DNS:*.$1" >/dev/null 2>&1 - sed -i -e "s;$tlsCrtPlaceholder;$(base64 -w 0 etc/tls/tls.crt);" -e "s;$tlsKeyPlaceholder;$(base64 -w 0 etc/tls/tls.key);" manifests/tls-secret.yaml } function sealos_run_controller { @@ -94,11 +92,11 @@ function install { # read env read_env etc/sealos/cloud.env - # mock tls - mock_tls $cloudDomain - # kubectl apply namespace, secret and mongodb - kubectl apply -f manifests/namespace.yaml -f manifests/tls-secret.yaml + kubectl apply -f manifests/namespace.yaml + + # create tls secret + create_tls_secret $cloudDomain # gen mongodb uri gen_mongodb_uri diff --git a/frontend/providers/applaunchpad/public/locales/en/common.json b/frontend/providers/applaunchpad/public/locales/en/common.json index dd198aa940b..c7cae85d1f2 100644 --- a/frontend/providers/applaunchpad/public/locales/en/common.json +++ b/frontend/providers/applaunchpad/public/locales/en/common.json @@ -3,6 +3,7 @@ "Create Application": "Create Application", "Cancel": "Cancel", "Confirm": "Confirm", + "To Confirm": "to confirm", "Name": "Name", "Status": "Status", "Creation Time": "Creation Time", @@ -20,12 +21,13 @@ "Update": "Update", "Application Type": "Type", "Basic Information": "Basic", + "Basic Config": "Basic", "Deployment Mode": "Instance", "Advanced Configuration": "Advanced", "Command": "Command", "Parameters": "Parameters", "Not Configured": "Not Configured", - "Accessible to the Public": "Accessible to the Public", + "External Access": "External Access", "Configuration File": "Configmap", "Storage": "Storage", "Environment Variables": "Environment", @@ -54,19 +56,19 @@ "Abnormality Detected": "Abnormality Detected", "Update Application": "Update Application", "Deploy Application": "Deploy Application", - "Confirm Deploy Application?": "Confirm Deploy Application?", + "Confirm Deploy Application?": "Deploy Application?", "Deployment Successful": "Deployment Successful", "Deployment Failed": "Deployment Failed", - "Confirm Update Application?": "Confirm Update Application?", + "Confirm Update Application?": "Update Application?", "Update Successful": "Update Successful", "Update Failed": "Update Failed", - "Prompt": "Prompt", + "Warning": "Warning", "jump_prompt": "Jump prompt", "jump_message": "This application cannot be used independently. Please click 'OK' to proceed to Sealos Desktop.", "pause_message": "The resources occupied by storage will continue to be charged.", "Confirm to restart this application?": "Confirm to restart this application?", "You haven't created any application yet.": "You haven't created any application yet.", - "Confirm deletion": "Confirm deletion", + "Confirm deletion": "Yes", "Deletion warning": "Deletion warning", "Are you sure you want to delete this application? If you proceed, all data for this project will be deleted.": "Are you sure you want to delete this application? If you proceed, all data for this project will be deleted.", "Please enter": "Please enter", @@ -87,7 +89,7 @@ "Config Form": "Form", "file": "file", "Image": "Image", - "App Name": "App Name", + "App Name": "Name", "YAML File": "YAML", "filename": "Filename", "file value": "File Value", @@ -98,12 +100,12 @@ "Container Ports": "Container Ports", "CPU target is the CPU utilization rate of any container": "CPU target is the CPU utilization rate of any container", "protocol": "protocol", - "Export Domain": "Export Domain", + "Export Domain": " Domain", "Custom domain": "Custom domain", "Please CNAME your custom domain to": "Please CNAME your custom domain to", "Option": "Option", - "Run command": "Run command", - "Command parameters": "Command parameters", + "Run command": "Command", + "Command parameters": "Parameters", "Add": "Add", "Add volume": "Add volume", "Separated by spaces": "Separated by spaces, such as: ", @@ -134,5 +136,6 @@ "Max Storage Value": "Max Storage Value", "Can not change storage path": "Can not change storage path", "Perday": "Perday", - "Submit Error": "Submit Error" + "Submit Error": "Submit Error", + "Env Placeholder": "Can be colon or equal sign, delimited by newline. For example :\nmongoUrl=127.0.0.1:8000\nredisUrl:127.0.0.0:8001\n-env1 =test" } diff --git a/frontend/providers/applaunchpad/public/locales/zh/common.json b/frontend/providers/applaunchpad/public/locales/zh/common.json index 1cb2ca535a2..e8f0b76e9f4 100644 --- a/frontend/providers/applaunchpad/public/locales/zh/common.json +++ b/frontend/providers/applaunchpad/public/locales/zh/common.json @@ -3,6 +3,8 @@ "Create Application": "新建应用", "Cancel": "取消", "Confirm": "确认", + "To Confirm": "确认", + "Yes": "确认", "Name": "名字", "Status": "状态", "Creation Time": "创建时间", @@ -27,7 +29,7 @@ "Command": "启动命令", "Parameters": "运行参数", "Not Configured": "未配置", - "Accessible to the Public": "可外网访问", + "External Access": "可外网访问", "Configuration File": "配置文件", "Storage": "存储卷", "Environment Variables": "环境变量", @@ -52,15 +54,14 @@ "Application Deployment": "应用部署", "Creating": "创建中", "Abnormality Detected": "有异常", - "Update Application": "变更应用", - "Deploy Application": "部署应用", + "Deploy": "部署", "Confirm Deploy Application?": "确认部署应用?", "Deployment Successful": "部署成功", "Deployment Failed": "部署失败", "Confirm Update Application?": "确认更新应用?", "Update Successful": "更新成功", "Update Failed": "更新失败", - "Prompt": "提示", + "Warning": "提示", "jump_prompt": "跳转提示", "jump_message": "该应用不允许单独使用,点击确认前往 Sealos Desktop 使用。", "pause_message": "请注意,暂停状态下无法变更应用,并且如果您使用了存储卷,存储券仍会收费,请确认!", @@ -148,5 +149,6 @@ "Start Failed": "启动应用出现了意外", "Start Successful": "应用已启动", "Total": "总共", - "Waiting": "获取中" + "Waiting": "获取中", + "Env Placeholder": "环境变量,可用冒号或等号,换行分隔。例如:\nmongoUrl=127.0.0.1:8000\nredisUrl:127.0.0.0:8001\n- env1=test" } diff --git a/frontend/providers/applaunchpad/src/constants/app.ts b/frontend/providers/applaunchpad/src/constants/app.ts index 32ca1e28b8b..558c4e78a5b 100644 --- a/frontend/providers/applaunchpad/src/constants/app.ts +++ b/frontend/providers/applaunchpad/src/constants/app.ts @@ -73,3 +73,5 @@ export const podStatusMap = { export const pauseKey = 'deploy.cloud.sealos.io/pause'; export const maxReplicasKey = 'deploy.cloud.sealos.io/maxReplicas'; export const minReplicasKey = 'deploy.cloud.sealos.io/minReplicas'; +export const appDeployKey = 'cloud.sealos.io/app-deploy-manager'; +export const domainKey = `cloud.sealos.io/app-deploy-manager-domain`; diff --git a/frontend/providers/applaunchpad/src/constants/editApp.ts b/frontend/providers/applaunchpad/src/constants/editApp.ts index ac2e64ed2b4..e2ed38b7d0e 100644 --- a/frontend/providers/applaunchpad/src/constants/editApp.ts +++ b/frontend/providers/applaunchpad/src/constants/editApp.ts @@ -4,7 +4,7 @@ export const editModeMap = (isEdit: boolean) => { if (isEdit) { return { title: 'Update Application', - applyBtnText: 'Update Application', + applyBtnText: 'Update', applyMessage: 'Confirm Update Application?', applySuccess: 'Update Successful', applyError: 'Update Failed' @@ -13,7 +13,7 @@ export const editModeMap = (isEdit: boolean) => { return { title: 'Application Deployment', - applyBtnText: 'Deploy Application', + applyBtnText: 'Deploy', applyMessage: 'Confirm Deploy Application?', applySuccess: 'Deployment Successful', applyError: 'Deployment Failed' diff --git a/frontend/providers/applaunchpad/src/hooks/useConfirm.tsx b/frontend/providers/applaunchpad/src/hooks/useConfirm.tsx index 3e2bb7e05de..b8d039f3848 100644 --- a/frontend/providers/applaunchpad/src/hooks/useConfirm.tsx +++ b/frontend/providers/applaunchpad/src/hooks/useConfirm.tsx @@ -11,7 +11,7 @@ import { } from '@chakra-ui/react'; import { useTranslation } from 'next-i18next'; -export const useConfirm = ({ title = 'Prompt', content }: { title?: string; content: string }) => { +export const useConfirm = ({ title = 'Warning', content }: { title?: string; content: string }) => { const { t } = useTranslation(); const { isOpen, onOpen, onClose } = useDisclosure(); const cancelRef = useRef(null); @@ -58,7 +58,7 @@ export const useConfirm = ({ title = 'Prompt', content }: { title?: string; cont typeof confirmCb.current === 'function' && confirmCb.current(); }} > - {t('Confirm')} + {t('Yes')} diff --git a/frontend/providers/applaunchpad/src/pages/_app.tsx b/frontend/providers/applaunchpad/src/pages/_app.tsx index 1e798d82e63..e9b42444ae8 100644 --- a/frontend/providers/applaunchpad/src/pages/_app.tsx +++ b/frontend/providers/applaunchpad/src/pages/_app.tsx @@ -116,7 +116,7 @@ const App = ({ }); } catch (error) { changeI18n({ - currentLanguage: 'zh' + currentLanguage: 'en' }); } })(); diff --git a/frontend/providers/applaunchpad/src/pages/api/getApps.ts b/frontend/providers/applaunchpad/src/pages/api/getApps.ts index adf98916204..6317f47efb8 100644 --- a/frontend/providers/applaunchpad/src/pages/api/getApps.ts +++ b/frontend/providers/applaunchpad/src/pages/api/getApps.ts @@ -3,6 +3,7 @@ import { ApiResp } from '@/services/kubernet'; import { authSession } from '@/services/backend/auth'; import { getK8s } from '@/services/backend/kubernetes'; import { jsonRes } from '@/services/backend/response'; +import { appDeployKey } from '@/constants/app'; export default async function handler(req: NextApiRequest, res: NextApiResponse) { try { @@ -10,8 +11,6 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< kubeconfig: await authSession(req.headers) }); - const domain = process.env.SEALOS_DOMAIN || 'cloud.sealos.io'; - const response = await Promise.allSettled([ k8sApp.listNamespacedDeployment( namespace, @@ -19,7 +18,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< undefined, undefined, undefined, - `${domain}/app-deploy-manager` + appDeployKey ), k8sApp.listNamespacedStatefulSet( namespace, @@ -27,7 +26,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< undefined, undefined, undefined, - `${domain}/app-deploy-manager` + appDeployKey ) ]); diff --git a/frontend/providers/applaunchpad/src/pages/api/updateApp.ts b/frontend/providers/applaunchpad/src/pages/api/updateApp.ts index c2399301ae3..cbc5dae0bcb 100644 --- a/frontend/providers/applaunchpad/src/pages/api/updateApp.ts +++ b/frontend/providers/applaunchpad/src/pages/api/updateApp.ts @@ -5,7 +5,7 @@ import { getK8s } from '@/services/backend/kubernetes'; import { jsonRes } from '@/services/backend/response'; import { YamlKindEnum } from '@/utils/adapt'; import yaml from 'js-yaml'; -import type { V1StatefulSet, V1PersistentVolumeClaim } from '@kubernetes/client-node'; +import type { V1StatefulSet } from '@kubernetes/client-node'; import { PatchUtils } from '@kubernetes/client-node'; import type { AppPatchPropsType } from '@/types/app'; @@ -60,10 +60,24 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< delete: () => k8sApp.deleteNamespacedDeployment(appName, namespace) }, [YamlKindEnum.StatefulSet]: { - patch: (jsonPatch: Object) => - k8sApp - .deleteNamespacedStatefulSet(appName, namespace) - .then(() => k8sApp.createNamespacedStatefulSet(namespace, jsonPatch)), + patch: async (jsonPatch: Object) => { + try { + await k8sApp.patchNamespacedStatefulSet( + appName, + namespace, + jsonPatch, + undefined, + undefined, + undefined, + undefined, + undefined, + { headers: { 'Content-type': PatchUtils.PATCH_FORMAT_JSON_MERGE_PATCH } } + ); + } catch (error) { + await k8sApp.deleteNamespacedStatefulSet(appName, namespace); + await k8sApp.createNamespacedStatefulSet(namespace, jsonPatch); + } + }, delete: () => k8sApp.deleteNamespacedStatefulSet(appName, namespace) }, [YamlKindEnum.Service]: { @@ -82,18 +96,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< delete: () => k8sCore.deleteNamespacedService(appName, namespace) }, [YamlKindEnum.ConfigMap]: { - patch: (jsonPatch: Object) => - k8sCore.patchNamespacedConfigMap( - appName, - namespace, - jsonPatch, - undefined, - undefined, - undefined, - undefined, - undefined, - { headers: { 'Content-type': PatchUtils.PATCH_FORMAT_JSON_MERGE_PATCH } } - ), + patch: (jsonPatch: Object) => applyYamlList([yaml.dump(jsonPatch)], 'replace'), delete: () => k8sCore.deleteNamespacedConfigMap(appName, namespace) }, [YamlKindEnum.Ingress]: { diff --git a/frontend/providers/applaunchpad/src/pages/app/detail/components/AppBaseInfo.tsx b/frontend/providers/applaunchpad/src/pages/app/detail/components/AppBaseInfo.tsx index e9229d0edf3..a2506c28465 100644 --- a/frontend/providers/applaunchpad/src/pages/app/detail/components/AppBaseInfo.tsx +++ b/frontend/providers/applaunchpad/src/pages/app/detail/components/AppBaseInfo.tsx @@ -77,7 +77,7 @@ const AppBaseInfo = ({ app = MOCK_APP_DETAIL }: { app: AppDetailType }) => { const appTags = useMemo( () => [ - ...(app.accessExternal.use ? ['Accessible to the Public'] : []), + ...(app.accessExternal.use ? ['External Access'] : []), ...(app.hpa.use ? ['Auto scaling'] : ['Fixed instance']), ...(app.storeList.length > 0 ? ['Stateful'] : ['Stateless']) ], diff --git a/frontend/providers/applaunchpad/src/pages/app/detail/components/DelModal.tsx b/frontend/providers/applaunchpad/src/pages/app/detail/components/DelModal.tsx index e9787cab196..6677ffbe3c8 100644 --- a/frontend/providers/applaunchpad/src/pages/app/detail/components/DelModal.tsx +++ b/frontend/providers/applaunchpad/src/pages/app/detail/components/DelModal.tsx @@ -49,7 +49,7 @@ const DelModal = ({ console.error(error); } setLoading(false); - }, [appName, toast, onSuccess, onClose]); + }, [appName, toast, t, onSuccess, onClose]); return ( @@ -67,7 +67,7 @@ const DelModal = ({ {appName} {' '} - {t('Confirm')} + {t('To Confirm')} diff --git a/frontend/providers/applaunchpad/src/pages/app/edit/components/EditEnvs.tsx b/frontend/providers/applaunchpad/src/pages/app/edit/components/EditEnvs.tsx index c9892b6f402..f8ffd731c39 100644 --- a/frontend/providers/applaunchpad/src/pages/app/edit/components/EditEnvs.tsx +++ b/frontend/providers/applaunchpad/src/pages/app/edit/components/EditEnvs.tsx @@ -70,9 +70,7 @@ const EditEnvs = ({ value={inputVal} resize={'both'} bg={'myWhite.300'} - placeholder={ - '环境变量,可用冒号或等号,换行分隔。例如:\nmongoUrl=127.0.0.1:8000\nredisUrl:127.0.0.0:8001\n- env1=test' - } + placeholder={t('Env Placeholder') || ''} overflowX={'auto'} whiteSpace={inputVal === '' ? 'pre' : 'nowrap'} onChange={(e) => setInputVal(e.target.value)} diff --git a/frontend/providers/applaunchpad/src/pages/app/edit/components/Form.tsx b/frontend/providers/applaunchpad/src/pages/app/edit/components/Form.tsx index 115060377eb..5572e6dd140 100644 --- a/frontend/providers/applaunchpad/src/pages/app/edit/components/Form.tsx +++ b/frontend/providers/applaunchpad/src/pages/app/edit/components/Form.tsx @@ -574,7 +574,7 @@ const Form = ({ - {t('Accessible to the Public')} + {t('External Access')} setIsLoading(true); try { const yamls = yamlList.map((item) => item.value); + if (appName) { const patch = patchYamlList( appOldYamls.current.map((item) => item.value), diff --git a/frontend/providers/applaunchpad/src/utils/adapt.ts b/frontend/providers/applaunchpad/src/utils/adapt.ts index 06303ead055..47a875fbc6a 100644 --- a/frontend/providers/applaunchpad/src/utils/adapt.ts +++ b/frontend/providers/applaunchpad/src/utils/adapt.ts @@ -26,7 +26,8 @@ import { pauseKey, maxReplicasKey, minReplicasKey, - PodStatusEnum + PodStatusEnum, + domainKey } from '@/constants/app'; import { cpuFormatToM, memoryFormatToMi, formatPodTime, atobSecretYaml } from '@/utils/tools'; import type { DeployKindsType, AppEditType } from '@/types/app'; @@ -164,8 +165,7 @@ export const adaptAppDetail = (configs: DeployKindsType[]): AppDetailType => { } const domain = deployKindsMap?.Ingress?.spec?.rules?.[0].host; - const sealosDomain = - deployKindsMap?.Ingress?.metadata?.labels?.[`${SEALOS_DOMAIN}/app-deploy-manager-domain`]; + const sealosDomain = deployKindsMap?.Ingress?.metadata?.labels?.[domainKey]; return { id: appDeploy.metadata?.uid || ``, diff --git a/frontend/providers/applaunchpad/src/utils/deployYaml2Json.ts b/frontend/providers/applaunchpad/src/utils/deployYaml2Json.ts index 7a83e90ffbd..5c669d9dbe6 100644 --- a/frontend/providers/applaunchpad/src/utils/deployYaml2Json.ts +++ b/frontend/providers/applaunchpad/src/utils/deployYaml2Json.ts @@ -2,7 +2,7 @@ import yaml from 'js-yaml'; import type { AppEditType } from '@/types/app'; import { strToBase64, str2Num, pathFormat, pathToNameFormat } from '@/utils/tools'; import { SEALOS_DOMAIN, INGRESS_SECRET } from '@/store/static'; -import { maxReplicasKey, minReplicasKey } from '@/constants/app'; +import { maxReplicasKey, minReplicasKey, appDeployKey, domainKey } from '@/constants/app'; import dayjs from 'dayjs'; export const json2Development = (data: AppEditType) => { @@ -17,7 +17,7 @@ export const json2Development = (data: AppEditType) => { [maxReplicasKey]: `${data.hpa.use ? data.hpa.maxReplicas : data.replicas}` }, labels: { - [`${SEALOS_DOMAIN}/app-deploy-manager`]: data.appName, + [appDeployKey]: data.appName, app: data.appName } }, @@ -126,7 +126,7 @@ export const json2StatefulSet = (data: AppEditType) => { [maxReplicasKey]: `${data.hpa.use ? data.hpa.maxReplicas : data.replicas}` }, labels: { - [`${SEALOS_DOMAIN}/app-deploy-manager`]: data.appName, + [appDeployKey]: data.appName, app: data.appName } }, @@ -253,7 +253,7 @@ export const json2Service = (data: AppEditType) => { metadata: { name: data.appName, labels: { - [`${SEALOS_DOMAIN}/app-deploy-manager`]: data.appName + [appDeployKey]: data.appName } }, spec: { @@ -309,8 +309,8 @@ export const json2Ingress = (data: AppEditType) => { metadata: { name: data.appName, labels: { - [`${SEALOS_DOMAIN}/app-deploy-manager`]: data.appName, - [`${SEALOS_DOMAIN}/app-deploy-manager-domain`]: `${data.accessExternal.outDomain}` + [appDeployKey]: data.appName, + [domainKey]: `${data.accessExternal.outDomain}` }, annotations: { 'kubernetes.io/ingress.class': 'nginx', diff --git a/frontend/providers/costcenter/.env b/frontend/providers/costcenter/.env index 7f4111043c7..84d2db9d9ef 100644 --- a/frontend/providers/costcenter/.env +++ b/frontend/providers/costcenter/.env @@ -1,2 +1,15 @@ -#TRANSFER_ENABLED="true" -#RECHARGE_ENABLED="true" \ No newline at end of file +# for open transfer +# TRANSFER_ENABLED="true" + +# for open transfer +# RECHARGE_ENABLED="true" + +# for open invoice +# INVOICE_ENABLED="true" +# MONGODB_URI +# FEISHU_BOT_URL +# ALI_ACCESS_KEY_ID +# ALI_ACCESS_KEY_SECRET +# ALI_ENDPOINT +# ALI_SIGN_NAME +# ALI_TEMPLATE_CODE \ No newline at end of file diff --git a/frontend/providers/costcenter/next-i18next.config.js b/frontend/providers/costcenter/next-i18next.config.js index 745f9f71e97..89c391e16f5 100644 --- a/frontend/providers/costcenter/next-i18next.config.js +++ b/frontend/providers/costcenter/next-i18next.config.js @@ -7,6 +7,6 @@ module.exports = { i18n: { defaultLocale: 'en', locales: ['en', 'zh', 'zh-Hans'], - localeDetection: false + localeDetection: false, } }; diff --git a/frontend/providers/costcenter/package.json b/frontend/providers/costcenter/package.json index d346ea33df0..39a458e5516 100644 --- a/frontend/providers/costcenter/package.json +++ b/frontend/providers/costcenter/package.json @@ -10,6 +10,9 @@ "docker": "docker build . -t" }, "dependencies": { + "@alicloud/dysmsapi20170525": "^2.0.24", + "@alicloud/openapi-client": "^0.4.6", + "@alicloud/tea-util": "^1.4.7", "@chakra-ui/anatomy": "^2.1.1", "@chakra-ui/react": "^2.6.1", "@emotion/react": "^11.10.6", @@ -23,12 +26,14 @@ "date-fns": "^2.30.0", "echarts": "^5.4.2", "echarts-for-react": "^3.0.2", + "formik": "^2.4.2", "framer-motion": "^10.9.1", "i18next": "^22.4.15", "immer": "^9.0.16", "js-cookie": "^3.0.5", "js-yaml": "^4.1.0", "lodash": "^4.17.21", + "mongodb": "^5.7.0", "next": "13.1.6", "next-i18next": "^13.2.2", "nprogress": "^0.2.0", diff --git a/frontend/providers/costcenter/pnpm-lock.yaml b/frontend/providers/costcenter/pnpm-lock.yaml index 08fef0ea3ef..a4de50e7b20 100644 --- a/frontend/providers/costcenter/pnpm-lock.yaml +++ b/frontend/providers/costcenter/pnpm-lock.yaml @@ -1,10 +1,19 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false dependencies: + '@alicloud/dysmsapi20170525': + specifier: ^2.0.24 + version: 2.0.24 + '@alicloud/openapi-client': + specifier: ^0.4.6 + version: 0.4.6 + '@alicloud/tea-util': + specifier: ^1.4.7 + version: 1.4.7 '@chakra-ui/anatomy': specifier: ^2.1.1 version: 2.1.1 @@ -44,6 +53,9 @@ dependencies: echarts-for-react: specifier: ^3.0.2 version: 3.0.2(echarts@5.4.2)(react@18.2.0) + formik: + specifier: ^2.4.2 + version: 2.4.2(react@18.2.0) framer-motion: specifier: ^10.9.1 version: 10.12.8(react-dom@18.2.0)(react@18.2.0) @@ -62,6 +74,9 @@ dependencies: lodash: specifier: ^4.17.21 version: 4.17.21 + mongodb: + specifier: ^5.7.0 + version: 5.7.0 next: specifier: 13.1.6 version: 13.1.6(react-dom@18.2.0)(react@18.2.0)(sass@1.62.1) @@ -132,48 +147,127 @@ devDependencies: version: 4.9.5 packages: + + /@alicloud/credentials@2.2.6: + resolution: {integrity: sha512-jG+msY77dHmAF3x+8VTy7fEgORyXLHmDci8t92HeipBdCHsPptDegA++GEwKgR7f6G4wvafYt+aqMZ1iligdrQ==} + dependencies: + '@alicloud/tea-typescript': 1.8.0 + httpx: 2.2.7 + ini: 1.3.8 + kitx: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@alicloud/dysmsapi20170525@2.0.24: + resolution: {integrity: sha512-RtOwh3L+NbpfnOxySViIKLlNQeT9pZJS496ZTMMz7A29CBrlComC1UDLmwmD5odWF2Okv9ZdsyP3IRiQnoEL+A==} + dependencies: + '@alicloud/endpoint-util': 0.0.1 + '@alicloud/openapi-client': 0.4.6 + '@alicloud/openapi-util': 0.3.1 + '@alicloud/tea-typescript': 1.8.0 + '@alicloud/tea-util': 1.4.7 + transitivePeerDependencies: + - supports-color + dev: false + + /@alicloud/endpoint-util@0.0.1: + resolution: {integrity: sha512-+pH7/KEXup84cHzIL6UJAaPqETvln4yXlD9JzlrqioyCSaWxbug5FUobsiI6fuUOpw5WwoB3fWAtGbFnJ1K3Yg==} + dependencies: + '@alicloud/tea-typescript': 1.8.0 + kitx: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@alicloud/gateway-spi@0.0.8: + resolution: {integrity: sha512-KM7fu5asjxZPmrz9sJGHJeSU+cNQNOxW+SFmgmAIrITui5hXL2LB+KNRuzWmlwPjnuA2X3/keq9h6++S9jcV5g==} + dependencies: + '@alicloud/credentials': 2.2.6 + '@alicloud/tea-typescript': 1.8.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@alicloud/openapi-client@0.4.6: + resolution: {integrity: sha512-cyhUQOJehLRslHy2l+lsginiyXdzfV7yF7b9EJcxzGG7zHAEX0XF3OJvfo13n7WgiqCzt9suQBatJz7b5F+14A==} + dependencies: + '@alicloud/credentials': 2.2.6 + '@alicloud/gateway-spi': 0.0.8 + '@alicloud/openapi-util': 0.3.1 + '@alicloud/tea-typescript': 1.8.0 + '@alicloud/tea-util': 1.4.7 + '@alicloud/tea-xml': 0.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@alicloud/openapi-util@0.3.1: + resolution: {integrity: sha512-6mGT+hs+SXismZi/CEkjPhhbn2U3qTT/Qv/RXAYFA1DC3Jk4/YaX3N7RtpgdzOhdD7uI8XtNkaULKHZY3BrtxQ==} + dependencies: + '@alicloud/tea-typescript': 1.8.0 + '@alicloud/tea-util': 1.4.7 + kitx: 2.1.0 + sm3: 1.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@alicloud/tea-typescript@1.8.0: + resolution: {integrity: sha512-CWXWaquauJf0sW30mgJRVu9aaXyBth5uMBCUc+5vKTK1zlgf3hIqRUjJZbjlwHwQ5y9anwcu18r48nOZb7l2QQ==} + dependencies: + '@types/node': 12.20.55 + httpx: 2.2.7 + transitivePeerDependencies: + - supports-color + dev: false + + /@alicloud/tea-util@1.4.7: + resolution: {integrity: sha512-Lrpfk9kxihHsit3oMoeIMjk783AxjOvzMhLAbZcIzazKiVg3Zk/209XDe9r1lXqxII59j3V4rhC9X14y6WGYyg==} + dependencies: + '@alicloud/tea-typescript': 1.8.0 + kitx: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@alicloud/tea-xml@0.0.2: + resolution: {integrity: sha512-Xs7v5y7YSNSDDYmiDWAC0/013VWPjS3dQU4KezSLva9VGiTVPaL3S7Nk4NrTmAYCG6MKcrRj/nGEDIWL5KRoPg==} + dependencies: + '@alicloud/tea-typescript': 1.8.0 + '@types/xml2js': 0.4.11 + xml2js: 0.4.23 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/code-frame@7.21.4: - resolution: - { - integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: false /@babel/helper-module-imports@7.21.4: - resolution: - { - integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.5 dev: false /@babel/helper-string-parser@7.21.5: - resolution: - { - integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} + engines: {node: '>=6.9.0'} dev: false /@babel/helper-validator-identifier@7.19.1: - resolution: - { - integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} dev: false /@babel/highlight@7.18.6: - resolution: - { - integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 @@ -181,20 +275,14 @@ packages: dev: false /@babel/runtime@7.21.5: - resolution: - { - integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} + engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 /@babel/types@7.21.5: - resolution: - { - integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} + engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.21.5 '@babel/helper-validator-identifier': 7.19.1 @@ -202,10 +290,7 @@ packages: dev: false /@chakra-ui/accordion@2.1.11(@chakra-ui/system@2.5.7)(framer-motion@10.12.8)(react@18.2.0): - resolution: - { - integrity: sha512-mfVPmqETp9pyRDHJ33AdF19oHv/LyxVzQJtlxUByuvs8Cj9QQZ2LQLg5kejm+b3mj03A7A6yfbuo3RNaI4Bhsg== - } + resolution: {integrity: sha512-mfVPmqETp9pyRDHJ33AdF19oHv/LyxVzQJtlxUByuvs8Cj9QQZ2LQLg5kejm+b3mj03A7A6yfbuo3RNaI4Bhsg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' @@ -224,10 +309,7 @@ packages: dev: false /@chakra-ui/alert@2.1.0(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-OcfHwoXI5VrmM+tHJTHT62Bx6TfyfCxSa0PWUOueJzSyhlUOKBND5we6UtrOB7D0jwX45qKKEDJOLG5yCG21jQ== - } + resolution: {integrity: sha512-OcfHwoXI5VrmM+tHJTHT62Bx6TfyfCxSa0PWUOueJzSyhlUOKBND5we6UtrOB7D0jwX45qKKEDJOLG5yCG21jQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -241,24 +323,15 @@ packages: dev: false /@chakra-ui/anatomy@2.1.1: - resolution: - { - integrity: sha512-LUHAoqJAgxAqmyckG5bUpBrfEo1FleEyY+1A8hkWciy58gZ+h3GoY9oBpHcdo7XdHPpy3G+3hieK/7i9NLwxAw== - } + resolution: {integrity: sha512-LUHAoqJAgxAqmyckG5bUpBrfEo1FleEyY+1A8hkWciy58gZ+h3GoY9oBpHcdo7XdHPpy3G+3hieK/7i9NLwxAw==} dev: false /@chakra-ui/anatomy@2.1.2: - resolution: - { - integrity: sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ== - } + resolution: {integrity: sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ==} dev: false /@chakra-ui/avatar@2.2.10(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-Scc0qJtJcxoGOaSS4TkoC2PhVLMacrBcfaNfLqV6wES56BcsjegHvpxREFunZkgVNph/XRHW6J1xOclnsZiPBQ== - } + resolution: {integrity: sha512-Scc0qJtJcxoGOaSS4TkoC2PhVLMacrBcfaNfLqV6wES56BcsjegHvpxREFunZkgVNph/XRHW6J1xOclnsZiPBQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -272,10 +345,7 @@ packages: dev: false /@chakra-ui/breadcrumb@2.1.5(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-p3eQQrHQBkRB69xOmNyBJqEdfCrMt+e0eOH+Pm/DjFWfIVIbnIaFbmDCeWClqlLa21Ypc6h1hR9jEmvg8kmOog== - } + resolution: {integrity: sha512-p3eQQrHQBkRB69xOmNyBJqEdfCrMt+e0eOH+Pm/DjFWfIVIbnIaFbmDCeWClqlLa21Ypc6h1hR9jEmvg8kmOog==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -288,19 +358,13 @@ packages: dev: false /@chakra-ui/breakpoint-utils@2.0.8: - resolution: - { - integrity: sha512-Pq32MlEX9fwb5j5xx8s18zJMARNHlQZH2VH1RZgfgRDpp7DcEgtRW5AInfN5CfqdHLO1dGxA7I3MqEuL5JnIsA== - } + resolution: {integrity: sha512-Pq32MlEX9fwb5j5xx8s18zJMARNHlQZH2VH1RZgfgRDpp7DcEgtRW5AInfN5CfqdHLO1dGxA7I3MqEuL5JnIsA==} dependencies: '@chakra-ui/shared-utils': 2.0.5 dev: false /@chakra-ui/button@2.0.18(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-E3c99+lOm6ou4nQVOTLkG+IdOPMjsQK+Qe7VyP8A/xeAMFONuibrWPRPpprr4ZkB4kEoLMfNuyH2+aEza3ScUA== - } + resolution: {integrity: sha512-E3c99+lOm6ou4nQVOTLkG+IdOPMjsQK+Qe7VyP8A/xeAMFONuibrWPRPpprr4ZkB4kEoLMfNuyH2+aEza3ScUA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -314,10 +378,7 @@ packages: dev: false /@chakra-ui/card@2.1.6(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-fFd/WAdRNVY/WOSQv4skpy0WeVhhI0f7dTY1Sm0jVl0KLmuP/GnpsWtKtqWjNcV00K963EXDyhlk6+9oxbP4gw== - } + resolution: {integrity: sha512-fFd/WAdRNVY/WOSQv4skpy0WeVhhI0f7dTY1Sm0jVl0KLmuP/GnpsWtKtqWjNcV00K963EXDyhlk6+9oxbP4gw==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -328,10 +389,7 @@ packages: dev: false /@chakra-ui/checkbox@2.2.15(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-Ju2yQjX8azgFa5f6VLPuwdGYobZ+rdbcYqjiks848JvPc75UsPhpS05cb4XlrKT7M16I8txDA5rPJdqqFicHCA== - } + resolution: {integrity: sha512-Ju2yQjX8azgFa5f6VLPuwdGYobZ+rdbcYqjiks848JvPc75UsPhpS05cb4XlrKT7M16I8txDA5rPJdqqFicHCA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -352,10 +410,7 @@ packages: dev: false /@chakra-ui/clickable@2.0.14(react@18.2.0): - resolution: - { - integrity: sha512-jfsM1qaD74ZykLHmvmsKRhDyokLUxEfL8Il1VoZMNX5RBI0xW/56vKpLTFF/v/+vLPLS+Te2cZdD4+2O+G6ulA== - } + resolution: {integrity: sha512-jfsM1qaD74ZykLHmvmsKRhDyokLUxEfL8Il1VoZMNX5RBI0xW/56vKpLTFF/v/+vLPLS+Te2cZdD4+2O+G6ulA==} peerDependencies: react: '>=18' dependencies: @@ -365,10 +420,7 @@ packages: dev: false /@chakra-ui/close-button@2.0.17(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-05YPXk456t1Xa3KpqTrvm+7smx+95dmaPiwjiBN3p7LHUQVHJd8ZXSDB0V+WKi419k3cVQeJUdU/azDO2f40sw== - } + resolution: {integrity: sha512-05YPXk456t1Xa3KpqTrvm+7smx+95dmaPiwjiBN3p7LHUQVHJd8ZXSDB0V+WKi419k3cVQeJUdU/azDO2f40sw==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -379,10 +431,7 @@ packages: dev: false /@chakra-ui/color-mode@2.1.12(react@18.2.0): - resolution: - { - integrity: sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw== - } + resolution: {integrity: sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==} peerDependencies: react: '>=18' dependencies: @@ -391,10 +440,7 @@ packages: dev: false /@chakra-ui/control-box@2.0.13(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-FEyrU4crxati80KUF/+1Z1CU3eZK6Sa0Yv7Z/ydtz9/tvGblXW9NFanoomXAOvcIFLbaLQPPATm9Gmpr7VG05A== - } + resolution: {integrity: sha512-FEyrU4crxati80KUF/+1Z1CU3eZK6Sa0Yv7Z/ydtz9/tvGblXW9NFanoomXAOvcIFLbaLQPPATm9Gmpr7VG05A==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -404,10 +450,7 @@ packages: dev: false /@chakra-ui/counter@2.0.14(react@18.2.0): - resolution: - { - integrity: sha512-KxcSRfUbb94dP77xTip2myoE7P2HQQN4V5fRJmNAGbzcyLciJ+aDylUU/UxgNcEjawUp6Q242NbWb1TSbKoqog== - } + resolution: {integrity: sha512-KxcSRfUbb94dP77xTip2myoE7P2HQQN4V5fRJmNAGbzcyLciJ+aDylUU/UxgNcEjawUp6Q242NbWb1TSbKoqog==} peerDependencies: react: '>=18' dependencies: @@ -418,10 +461,7 @@ packages: dev: false /@chakra-ui/css-reset@2.1.1(@emotion/react@11.11.0)(react@18.2.0): - resolution: - { - integrity: sha512-jwEOfIAWmQsnChHQTW/eRE+dfE4MjmhvSvoUug5nkV1pI7veC/20noFlIZxzi82EbiQI8Fs0+Jnusgxr2yaOHA== - } + resolution: {integrity: sha512-jwEOfIAWmQsnChHQTW/eRE+dfE4MjmhvSvoUug5nkV1pI7veC/20noFlIZxzi82EbiQI8Fs0+Jnusgxr2yaOHA==} peerDependencies: '@emotion/react': '>=10.0.35' react: '>=18' @@ -431,10 +471,7 @@ packages: dev: false /@chakra-ui/descendant@3.0.14(react@18.2.0): - resolution: - { - integrity: sha512-+Ahvp9H4HMpfScIv9w1vaecGz7qWAaK1YFHHolz/SIsGLaLGlbdp+5UNabQC7L6TUnzzJDQDxzwif78rTD7ang== - } + resolution: {integrity: sha512-+Ahvp9H4HMpfScIv9w1vaecGz7qWAaK1YFHHolz/SIsGLaLGlbdp+5UNabQC7L6TUnzzJDQDxzwif78rTD7ang==} peerDependencies: react: '>=18' dependencies: @@ -444,17 +481,11 @@ packages: dev: false /@chakra-ui/dom-utils@2.0.6: - resolution: - { - integrity: sha512-PVtDkPrDD5b8aoL6Atg7SLjkwhWb7BwMcLOF1L449L3nZN+DAO3nyAh6iUhZVJyunELj9d0r65CDlnMREyJZmA== - } + resolution: {integrity: sha512-PVtDkPrDD5b8aoL6Atg7SLjkwhWb7BwMcLOF1L449L3nZN+DAO3nyAh6iUhZVJyunELj9d0r65CDlnMREyJZmA==} dev: false /@chakra-ui/editable@3.0.0(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-q/7C/TM3iLaoQKlEiM8AY565i9NoaXtS6N6N4HWIEL5mZJPbMeHKxrCHUZlHxYuQJqFOGc09ZPD9fAFx1GkYwQ== - } + resolution: {integrity: sha512-q/7C/TM3iLaoQKlEiM8AY565i9NoaXtS6N6N4HWIEL5mZJPbMeHKxrCHUZlHxYuQJqFOGc09ZPD9fAFx1GkYwQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -473,17 +504,11 @@ packages: dev: false /@chakra-ui/event-utils@2.0.8: - resolution: - { - integrity: sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw== - } + resolution: {integrity: sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw==} dev: false /@chakra-ui/focus-lock@2.0.16(@types/react@18.0.28)(react@18.2.0): - resolution: - { - integrity: sha512-UuAdGCPVrCa1lecoAvpOQD7JFT7a9RdmhKWhFt5ioIcekSLJcerdLHuuL3w0qz//8kd1/SOt7oP0aJqdAJQrCw== - } + resolution: {integrity: sha512-UuAdGCPVrCa1lecoAvpOQD7JFT7a9RdmhKWhFt5ioIcekSLJcerdLHuuL3w0qz//8kd1/SOt7oP0aJqdAJQrCw==} peerDependencies: react: '>=18' dependencies: @@ -495,10 +520,7 @@ packages: dev: false /@chakra-ui/form-control@2.0.18(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-I0a0jG01IAtRPccOXSNugyRdUAe8Dy40ctqedZvznMweOXzbMCF1m+sHPLdWeWC/VI13VoAispdPY0/zHOdjsQ== - } + resolution: {integrity: sha512-I0a0jG01IAtRPccOXSNugyRdUAe8Dy40ctqedZvznMweOXzbMCF1m+sHPLdWeWC/VI13VoAispdPY0/zHOdjsQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -513,10 +535,7 @@ packages: dev: false /@chakra-ui/hooks@2.2.0(react@18.2.0): - resolution: - { - integrity: sha512-GZE64mcr20w+3KbCUPqQJHHmiFnX5Rcp8jS3YntGA4D5X2qU85jka7QkjfBwv/iduZ5Ei0YpCMYGCpi91dhD1Q== - } + resolution: {integrity: sha512-GZE64mcr20w+3KbCUPqQJHHmiFnX5Rcp8jS3YntGA4D5X2qU85jka7QkjfBwv/iduZ5Ei0YpCMYGCpi91dhD1Q==} peerDependencies: react: '>=18' dependencies: @@ -528,10 +547,7 @@ packages: dev: false /@chakra-ui/icon@3.0.16(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-RpA1X5Ptz8Mt39HSyEIW1wxAz2AXyf9H0JJ5HVx/dBdMZaGMDJ0HyyPBVci0m4RCoJuyG1HHG/DXJaVfUTVAeg== - } + resolution: {integrity: sha512-RpA1X5Ptz8Mt39HSyEIW1wxAz2AXyf9H0JJ5HVx/dBdMZaGMDJ0HyyPBVci0m4RCoJuyG1HHG/DXJaVfUTVAeg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -542,10 +558,7 @@ packages: dev: false /@chakra-ui/image@2.0.16(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-iFypk1slgP3OK7VIPOtkB0UuiqVxNalgA59yoRM43xLIeZAEZpKngUVno4A2kFS61yKN0eIY4hXD3Xjm+25EJA== - } + resolution: {integrity: sha512-iFypk1slgP3OK7VIPOtkB0UuiqVxNalgA59yoRM43xLIeZAEZpKngUVno4A2kFS61yKN0eIY4hXD3Xjm+25EJA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -557,10 +570,7 @@ packages: dev: false /@chakra-ui/input@2.0.22(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-dCIC0/Q7mjZf17YqgoQsnXn0bus6vgriTRn8VmxOc+WcVl+KBSTBWujGrS5yu85WIFQ0aeqQvziDnDQybPqAbA== - } + resolution: {integrity: sha512-dCIC0/Q7mjZf17YqgoQsnXn0bus6vgriTRn8VmxOc+WcVl+KBSTBWujGrS5yu85WIFQ0aeqQvziDnDQybPqAbA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -575,10 +585,7 @@ packages: dev: false /@chakra-ui/layout@2.1.19(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-g7xMVKbQFCODwKCkEF4/OmdPsr/fAavWUV+DGc1ZWVPdroUlg1FGTpK9bOTwkC/gnko7cMClILA+BIPR3Ylu9Q== - } + resolution: {integrity: sha512-g7xMVKbQFCODwKCkEF4/OmdPsr/fAavWUV+DGc1ZWVPdroUlg1FGTpK9bOTwkC/gnko7cMClILA+BIPR3Ylu9Q==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -594,17 +601,11 @@ packages: dev: false /@chakra-ui/lazy-utils@2.0.5: - resolution: - { - integrity: sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg== - } + resolution: {integrity: sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg==} dev: false /@chakra-ui/live-region@2.0.13(react@18.2.0): - resolution: - { - integrity: sha512-Ja+Slk6ZkxSA5oJzU2VuGU7TpZpbMb/4P4OUhIf2D30ctmIeXkxTWw1Bs1nGJAVtAPcGS5sKA+zb89i8g+0cTQ== - } + resolution: {integrity: sha512-Ja+Slk6ZkxSA5oJzU2VuGU7TpZpbMb/4P4OUhIf2D30ctmIeXkxTWw1Bs1nGJAVtAPcGS5sKA+zb89i8g+0cTQ==} peerDependencies: react: '>=18' dependencies: @@ -612,10 +613,7 @@ packages: dev: false /@chakra-ui/media-query@3.2.12(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-8pSLDf3oxxhFrhd40rs7vSeIBfvOmIKHA7DJlGUC/y+9irD24ZwgmCtFnn+y3gI47hTJsopbSX+wb8nr7XPswA== - } + resolution: {integrity: sha512-8pSLDf3oxxhFrhd40rs7vSeIBfvOmIKHA7DJlGUC/y+9irD24ZwgmCtFnn+y3gI47hTJsopbSX+wb8nr7XPswA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -628,10 +626,7 @@ packages: dev: false /@chakra-ui/menu@2.1.14(@chakra-ui/system@2.5.7)(framer-motion@10.12.8)(react@18.2.0): - resolution: - { - integrity: sha512-z4YzlY/ub1hr4Ee2zCnZDs4t43048yLTf5GhEVYDO+SI92WlOfHlP9gYEzR+uj/CiRZglVFwUDKb3UmFtmKPyg== - } + resolution: {integrity: sha512-z4YzlY/ub1hr4Ee2zCnZDs4t43048yLTf5GhEVYDO+SI92WlOfHlP9gYEzR+uj/CiRZglVFwUDKb3UmFtmKPyg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' @@ -658,10 +653,7 @@ packages: dev: false /@chakra-ui/modal@2.2.11(@chakra-ui/system@2.5.7)(@types/react@18.0.28)(framer-motion@10.12.8)(react-dom@18.2.0)(react@18.2.0): - resolution: - { - integrity: sha512-2J0ZUV5tEzkPiawdkgPz6bmex7NXAde1VXooMwdvK+vuT8PV3U61yorTJOZVLdw7TjjI1Yo94mzsp6UwBud43Q== - } + resolution: {integrity: sha512-2J0ZUV5tEzkPiawdkgPz6bmex7NXAde1VXooMwdvK+vuT8PV3U61yorTJOZVLdw7TjjI1Yo94mzsp6UwBud43Q==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' @@ -687,10 +679,7 @@ packages: dev: false /@chakra-ui/number-input@2.0.19(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-HDaITvtMEqOauOrCPsARDxKD9PSHmhWywpcyCSOX0lMe4xx2aaGhU0QQFhsJsykj8Er6pytMv6t0KZksdDv3YA== - } + resolution: {integrity: sha512-HDaITvtMEqOauOrCPsARDxKD9PSHmhWywpcyCSOX0lMe4xx2aaGhU0QQFhsJsykj8Er6pytMv6t0KZksdDv3YA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -712,24 +701,15 @@ packages: dev: false /@chakra-ui/number-utils@2.0.7: - resolution: - { - integrity: sha512-yOGxBjXNvLTBvQyhMDqGU0Oj26s91mbAlqKHiuw737AXHt0aPllOthVUqQMeaYLwLCjGMg0jtI7JReRzyi94Dg== - } + resolution: {integrity: sha512-yOGxBjXNvLTBvQyhMDqGU0Oj26s91mbAlqKHiuw737AXHt0aPllOthVUqQMeaYLwLCjGMg0jtI7JReRzyi94Dg==} dev: false /@chakra-ui/object-utils@2.1.0: - resolution: - { - integrity: sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ== - } + resolution: {integrity: sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ==} dev: false /@chakra-ui/pin-input@2.0.20(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-IHVmerrtHN8F+jRB3W1HnMir1S1TUCWhI7qDInxqPtoRffHt6mzZgLZ0izx8p1fD4HkW4c1d4/ZLEz9uH9bBRg== - } + resolution: {integrity: sha512-IHVmerrtHN8F+jRB3W1HnMir1S1TUCWhI7qDInxqPtoRffHt6mzZgLZ0izx8p1fD4HkW4c1d4/ZLEz9uH9bBRg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -745,10 +725,7 @@ packages: dev: false /@chakra-ui/popover@2.1.11(@chakra-ui/system@2.5.7)(framer-motion@10.12.8)(react@18.2.0): - resolution: - { - integrity: sha512-ntFMKojU+ZIofwSw5IJ+Ur8pN5o+5kf/Fx5r5tCjFZd0DSkrEeJw9i00/UWJ6kYZb+zlpswxriv0FmxBlAF66w== - } + resolution: {integrity: sha512-ntFMKojU+ZIofwSw5IJ+Ur8pN5o+5kf/Fx5r5tCjFZd0DSkrEeJw9i00/UWJ6kYZb+zlpswxriv0FmxBlAF66w==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' @@ -771,10 +748,7 @@ packages: dev: false /@chakra-ui/popper@3.0.14(react@18.2.0): - resolution: - { - integrity: sha512-RDMmmSfjsmHJbVn2agDyoJpTbQK33fxx//njwJdeyM0zTG/3/4xjI/Cxru3acJ2Y+1jFGmPqhO81stFjnbtfIw== - } + resolution: {integrity: sha512-RDMmmSfjsmHJbVn2agDyoJpTbQK33fxx//njwJdeyM0zTG/3/4xjI/Cxru3acJ2Y+1jFGmPqhO81stFjnbtfIw==} peerDependencies: react: '>=18' dependencies: @@ -785,10 +759,7 @@ packages: dev: false /@chakra-ui/portal@2.0.16(react-dom@18.2.0)(react@18.2.0): - resolution: - { - integrity: sha512-bVID0qbQ0l4xq38LdqAN4EKD4/uFkDnXzFwOlviC9sl0dNhzICDb1ltuH/Adl1d2HTMqyN60O3GO58eHy7plnQ== - } + resolution: {integrity: sha512-bVID0qbQ0l4xq38LdqAN4EKD4/uFkDnXzFwOlviC9sl0dNhzICDb1ltuH/Adl1d2HTMqyN60O3GO58eHy7plnQ==} peerDependencies: react: '>=18' react-dom: '>=18' @@ -800,10 +771,7 @@ packages: dev: false /@chakra-ui/progress@2.1.6(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-hHh5Ysv4z6bK+j2GJbi/FT9CVyto2PtNUNwBmr3oNMVsoOUMoRjczfXvvYqp0EHr9PCpxqrq7sRwgQXUzhbDSw== - } + resolution: {integrity: sha512-hHh5Ysv4z6bK+j2GJbi/FT9CVyto2PtNUNwBmr3oNMVsoOUMoRjczfXvvYqp0EHr9PCpxqrq7sRwgQXUzhbDSw==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -814,10 +782,7 @@ packages: dev: false /@chakra-ui/provider@2.2.4(@emotion/react@11.11.0)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0): - resolution: - { - integrity: sha512-vz/WMEWhwoITCAkennRNYCeQHsJ6YwB/UjVaAK+61jWY42J7uCsRZ+3nB5rDjQ4m+aqPfTUPof8KLJBrtYrJbw== - } + resolution: {integrity: sha512-vz/WMEWhwoITCAkennRNYCeQHsJ6YwB/UjVaAK+61jWY42J7uCsRZ+3nB5rDjQ4m+aqPfTUPof8KLJBrtYrJbw==} peerDependencies: '@emotion/react': ^11.0.0 '@emotion/styled': ^11.0.0 @@ -836,10 +801,7 @@ packages: dev: false /@chakra-ui/radio@2.0.22(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-GsQ5WAnLwivWl6gPk8P1x+tCcpVakCt5R5T0HumF7DGPXKdJbjS+RaFySrbETmyTJsKY4QrfXn+g8CWVrMjPjw== - } + resolution: {integrity: sha512-GsQ5WAnLwivWl6gPk8P1x+tCcpVakCt5R5T0HumF7DGPXKdJbjS+RaFySrbETmyTJsKY4QrfXn+g8CWVrMjPjw==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -855,10 +817,7 @@ packages: dev: false /@chakra-ui/react-children-utils@2.0.6(react@18.2.0): - resolution: - { - integrity: sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA== - } + resolution: {integrity: sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA==} peerDependencies: react: '>=18' dependencies: @@ -866,10 +825,7 @@ packages: dev: false /@chakra-ui/react-context@2.0.8(react@18.2.0): - resolution: - { - integrity: sha512-tRTKdn6lCTXM6WPjSokAAKCw2ioih7Eg8cNgaYRSwKBck8nkz9YqxgIIEj3dJD7MGtpl24S/SNI98iRWkRwR/A== - } + resolution: {integrity: sha512-tRTKdn6lCTXM6WPjSokAAKCw2ioih7Eg8cNgaYRSwKBck8nkz9YqxgIIEj3dJD7MGtpl24S/SNI98iRWkRwR/A==} peerDependencies: react: '>=18' dependencies: @@ -877,10 +833,7 @@ packages: dev: false /@chakra-ui/react-env@3.0.0(react@18.2.0): - resolution: - { - integrity: sha512-tfMRO2v508HQWAqSADFrwZgR9oU10qC97oV6zGbjHh9ALP0/IcFR+Bi71KRTveDTm85fMeAzZYGj57P3Dsipkw== - } + resolution: {integrity: sha512-tfMRO2v508HQWAqSADFrwZgR9oU10qC97oV6zGbjHh9ALP0/IcFR+Bi71KRTveDTm85fMeAzZYGj57P3Dsipkw==} peerDependencies: react: '>=18' dependencies: @@ -889,10 +842,7 @@ packages: dev: false /@chakra-ui/react-types@2.0.7(react@18.2.0): - resolution: - { - integrity: sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ== - } + resolution: {integrity: sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ==} peerDependencies: react: '>=18' dependencies: @@ -900,10 +850,7 @@ packages: dev: false /@chakra-ui/react-use-animation-state@2.0.8(react@18.2.0): - resolution: - { - integrity: sha512-xv9zSF2Rd1mHWQ+m5DLBWeh4atF8qrNvsOs3MNrvxKYBS3f79N3pqcQGrWAEvirXWXfiCeje2VAkEggqFRIo+Q== - } + resolution: {integrity: sha512-xv9zSF2Rd1mHWQ+m5DLBWeh4atF8qrNvsOs3MNrvxKYBS3f79N3pqcQGrWAEvirXWXfiCeje2VAkEggqFRIo+Q==} peerDependencies: react: '>=18' dependencies: @@ -913,10 +860,7 @@ packages: dev: false /@chakra-ui/react-use-callback-ref@2.0.7(react@18.2.0): - resolution: - { - integrity: sha512-YjT76nTpfHAK5NxplAlZsQwNju5KmQExnqsWNPFeOR6vvbC34+iPSTr+r91i1Hdy7gBSbevsOsd5Wm6RN3GuMw== - } + resolution: {integrity: sha512-YjT76nTpfHAK5NxplAlZsQwNju5KmQExnqsWNPFeOR6vvbC34+iPSTr+r91i1Hdy7gBSbevsOsd5Wm6RN3GuMw==} peerDependencies: react: '>=18' dependencies: @@ -924,10 +868,7 @@ packages: dev: false /@chakra-ui/react-use-controllable-state@2.0.8(react@18.2.0): - resolution: - { - integrity: sha512-F7rdCbLEmRjwwODqWZ3y+mKgSSHPcLQxeUygwk1BkZPXbKkJJKymOIjIynil2cbH7ku3hcSIWRvuhpCcfQWJ7Q== - } + resolution: {integrity: sha512-F7rdCbLEmRjwwODqWZ3y+mKgSSHPcLQxeUygwk1BkZPXbKkJJKymOIjIynil2cbH7ku3hcSIWRvuhpCcfQWJ7Q==} peerDependencies: react: '>=18' dependencies: @@ -936,10 +877,7 @@ packages: dev: false /@chakra-ui/react-use-disclosure@2.0.8(react@18.2.0): - resolution: - { - integrity: sha512-2ir/mHe1YND40e+FyLHnDsnDsBQPwzKDLzfe9GZri7y31oU83JSbHdlAXAhp3bpjohslwavtRCp+S/zRxfO9aQ== - } + resolution: {integrity: sha512-2ir/mHe1YND40e+FyLHnDsnDsBQPwzKDLzfe9GZri7y31oU83JSbHdlAXAhp3bpjohslwavtRCp+S/zRxfO9aQ==} peerDependencies: react: '>=18' dependencies: @@ -948,10 +886,7 @@ packages: dev: false /@chakra-ui/react-use-event-listener@2.0.7(react@18.2.0): - resolution: - { - integrity: sha512-4wvpx4yudIO3B31pOrXuTHDErawmwiXnvAN7gLEOVREi16+YGNcFnRJ5X5nRrmB7j2MDUtsEDpRBFfw5Z9xQ5g== - } + resolution: {integrity: sha512-4wvpx4yudIO3B31pOrXuTHDErawmwiXnvAN7gLEOVREi16+YGNcFnRJ5X5nRrmB7j2MDUtsEDpRBFfw5Z9xQ5g==} peerDependencies: react: '>=18' dependencies: @@ -960,10 +895,7 @@ packages: dev: false /@chakra-ui/react-use-focus-effect@2.0.10(react@18.2.0): - resolution: - { - integrity: sha512-HswfpzjP8gCQM3/fbeR+8wrYqt0B3ChnVTqssnYXqp9Fa/5Y1Kx1ZADUWW93zMs5SF7hIEuNt8uKeh1/3HTcqQ== - } + resolution: {integrity: sha512-HswfpzjP8gCQM3/fbeR+8wrYqt0B3ChnVTqssnYXqp9Fa/5Y1Kx1ZADUWW93zMs5SF7hIEuNt8uKeh1/3HTcqQ==} peerDependencies: react: '>=18' dependencies: @@ -975,10 +907,7 @@ packages: dev: false /@chakra-ui/react-use-focus-on-pointer-down@2.0.6(react@18.2.0): - resolution: - { - integrity: sha512-OigXiLRVySn3tyVqJ/rn57WGuukW8TQe8fJYiLwXbcNyAMuYYounvRxvCy2b53sQ7QIZamza0N0jhirbH5FNoQ== - } + resolution: {integrity: sha512-OigXiLRVySn3tyVqJ/rn57WGuukW8TQe8fJYiLwXbcNyAMuYYounvRxvCy2b53sQ7QIZamza0N0jhirbH5FNoQ==} peerDependencies: react: '>=18' dependencies: @@ -987,10 +916,7 @@ packages: dev: false /@chakra-ui/react-use-interval@2.0.5(react@18.2.0): - resolution: - { - integrity: sha512-1nbdwMi2K87V6p5f5AseOKif2CkldLaJlq1TOqaPRwb7v3aU9rltBtYdf+fIyuHSToNJUV6wd9budCFdLCl3Fg== - } + resolution: {integrity: sha512-1nbdwMi2K87V6p5f5AseOKif2CkldLaJlq1TOqaPRwb7v3aU9rltBtYdf+fIyuHSToNJUV6wd9budCFdLCl3Fg==} peerDependencies: react: '>=18' dependencies: @@ -999,10 +925,7 @@ packages: dev: false /@chakra-ui/react-use-latest-ref@2.0.5(react@18.2.0): - resolution: - { - integrity: sha512-3mIuFzMyIo3Ok/D8uhV9voVg7KkrYVO/pwVvNPJOHsDQqCA6DpYE4WDsrIx+fVcwad3Ta7SupexR5PoI+kq6QQ== - } + resolution: {integrity: sha512-3mIuFzMyIo3Ok/D8uhV9voVg7KkrYVO/pwVvNPJOHsDQqCA6DpYE4WDsrIx+fVcwad3Ta7SupexR5PoI+kq6QQ==} peerDependencies: react: '>=18' dependencies: @@ -1010,10 +933,7 @@ packages: dev: false /@chakra-ui/react-use-merge-refs@2.0.7(react@18.2.0): - resolution: - { - integrity: sha512-zds4Uhsc+AMzdH8JDDkLVet9baUBgtOjPbhC5r3A0ZXjZvGhCztFAVE3aExYiVoMPoHLKbLcqvCWE6ioFKz1lw== - } + resolution: {integrity: sha512-zds4Uhsc+AMzdH8JDDkLVet9baUBgtOjPbhC5r3A0ZXjZvGhCztFAVE3aExYiVoMPoHLKbLcqvCWE6ioFKz1lw==} peerDependencies: react: '>=18' dependencies: @@ -1021,10 +941,7 @@ packages: dev: false /@chakra-ui/react-use-outside-click@2.1.0(react@18.2.0): - resolution: - { - integrity: sha512-JanCo4QtWvMl9ZZUpKJKV62RlMWDFdPCE0Q64a7eWTOQgWWcpyBW7TOYRunQTqrK30FqkYFJCOlAWOtn+6Rw7A== - } + resolution: {integrity: sha512-JanCo4QtWvMl9ZZUpKJKV62RlMWDFdPCE0Q64a7eWTOQgWWcpyBW7TOYRunQTqrK30FqkYFJCOlAWOtn+6Rw7A==} peerDependencies: react: '>=18' dependencies: @@ -1033,10 +950,7 @@ packages: dev: false /@chakra-ui/react-use-pan-event@2.0.9(react@18.2.0): - resolution: - { - integrity: sha512-xu35QXkiyrgsHUOnctl+SwNcwf9Rl62uYE5y8soKOZdBm8E+FvZIt2hxUzK1EoekbJCMzEZ0Yv1ZQCssVkSLaQ== - } + resolution: {integrity: sha512-xu35QXkiyrgsHUOnctl+SwNcwf9Rl62uYE5y8soKOZdBm8E+FvZIt2hxUzK1EoekbJCMzEZ0Yv1ZQCssVkSLaQ==} peerDependencies: react: '>=18' dependencies: @@ -1047,10 +961,7 @@ packages: dev: false /@chakra-ui/react-use-previous@2.0.5(react@18.2.0): - resolution: - { - integrity: sha512-BIZgjycPE4Xr+MkhKe0h67uHXzQQkBX/u5rYPd65iMGdX1bCkbE0oorZNfOHLKdTmnEb4oVsNvfN6Rfr+Mnbxw== - } + resolution: {integrity: sha512-BIZgjycPE4Xr+MkhKe0h67uHXzQQkBX/u5rYPd65iMGdX1bCkbE0oorZNfOHLKdTmnEb4oVsNvfN6Rfr+Mnbxw==} peerDependencies: react: '>=18' dependencies: @@ -1058,10 +969,7 @@ packages: dev: false /@chakra-ui/react-use-safe-layout-effect@2.0.5(react@18.2.0): - resolution: - { - integrity: sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ== - } + resolution: {integrity: sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==} peerDependencies: react: '>=18' dependencies: @@ -1069,10 +977,7 @@ packages: dev: false /@chakra-ui/react-use-size@2.0.10(react@18.2.0): - resolution: - { - integrity: sha512-fdIkH14GDnKQrtQfxX8N3gxbXRPXEl67Y3zeD9z4bKKcQUAYIMqs0MsPZY+FMpGQw8QqafM44nXfL038aIrC5w== - } + resolution: {integrity: sha512-fdIkH14GDnKQrtQfxX8N3gxbXRPXEl67Y3zeD9z4bKKcQUAYIMqs0MsPZY+FMpGQw8QqafM44nXfL038aIrC5w==} peerDependencies: react: '>=18' dependencies: @@ -1081,10 +986,7 @@ packages: dev: false /@chakra-ui/react-use-timeout@2.0.5(react@18.2.0): - resolution: - { - integrity: sha512-QqmB+jVphh3h/CS60PieorpY7UqSPkrQCB7f7F+i9vwwIjtP8fxVHMmkb64K7VlzQiMPzv12nlID5dqkzlv0mw== - } + resolution: {integrity: sha512-QqmB+jVphh3h/CS60PieorpY7UqSPkrQCB7f7F+i9vwwIjtP8fxVHMmkb64K7VlzQiMPzv12nlID5dqkzlv0mw==} peerDependencies: react: '>=18' dependencies: @@ -1093,10 +995,7 @@ packages: dev: false /@chakra-ui/react-use-update-effect@2.0.7(react@18.2.0): - resolution: - { - integrity: sha512-vBM2bmmM83ZdDtasWv3PXPznpTUd+FvqBC8J8rxoRmvdMEfrxTiQRBJhiGHLpS9BPLLPQlosN6KdFU97csB6zg== - } + resolution: {integrity: sha512-vBM2bmmM83ZdDtasWv3PXPznpTUd+FvqBC8J8rxoRmvdMEfrxTiQRBJhiGHLpS9BPLLPQlosN6KdFU97csB6zg==} peerDependencies: react: '>=18' dependencies: @@ -1104,10 +1003,7 @@ packages: dev: false /@chakra-ui/react-utils@2.0.12(react@18.2.0): - resolution: - { - integrity: sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw== - } + resolution: {integrity: sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==} peerDependencies: react: '>=18' dependencies: @@ -1116,10 +1012,7 @@ packages: dev: false /@chakra-ui/react@2.6.1(@emotion/react@11.11.0)(@emotion/styled@11.11.0)(@types/react@18.0.28)(framer-motion@10.12.8)(react-dom@18.2.0)(react@18.2.0): - resolution: - { - integrity: sha512-Lt8c8pLPTz59xxdSuL2FlE7le9MXx4zgjr60UnEc3yjAMjXNTqUAoWHyT4Zn1elCGUPWOedS3rMvp4KTshT+5w== - } + resolution: {integrity: sha512-Lt8c8pLPTz59xxdSuL2FlE7le9MXx4zgjr60UnEc3yjAMjXNTqUAoWHyT4Zn1elCGUPWOedS3rMvp4KTshT+5w==} peerDependencies: '@emotion/react': ^11.0.0 '@emotion/styled': ^11.0.0 @@ -1189,10 +1082,7 @@ packages: dev: false /@chakra-ui/select@2.0.19(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-eAlFh+JhwtJ17OrB6fO6gEAGOMH18ERNrXLqWbYLrs674Le7xuREgtuAYDoxUzvYXYYTTdOJtVbcHGriI3o6rA== - } + resolution: {integrity: sha512-eAlFh+JhwtJ17OrB6fO6gEAGOMH18ERNrXLqWbYLrs674Le7xuREgtuAYDoxUzvYXYYTTdOJtVbcHGriI3o6rA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -1204,17 +1094,11 @@ packages: dev: false /@chakra-ui/shared-utils@2.0.5: - resolution: - { - integrity: sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q== - } + resolution: {integrity: sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q==} dev: false /@chakra-ui/skeleton@2.0.24(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-1jXtVKcl/jpbrJlc/TyMsFyI651GTXY5ma30kWyTXoby2E+cxbV6OR8GB/NMZdGxbQBax8/VdtYVjI0n+OBqWA== - } + resolution: {integrity: sha512-1jXtVKcl/jpbrJlc/TyMsFyI651GTXY5ma30kWyTXoby2E+cxbV6OR8GB/NMZdGxbQBax8/VdtYVjI0n+OBqWA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -1227,10 +1111,7 @@ packages: dev: false /@chakra-ui/slider@2.0.24(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-o3hOaIiTzPMG8yf+HYWbrTmhxABicDViVOvOajRSXDodbZSCk1rZy1nmUeahjVtfVUB1IyJoNcXdn76IqJmhdg== - } + resolution: {integrity: sha512-o3hOaIiTzPMG8yf+HYWbrTmhxABicDViVOvOajRSXDodbZSCk1rZy1nmUeahjVtfVUB1IyJoNcXdn76IqJmhdg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -1250,10 +1131,7 @@ packages: dev: false /@chakra-ui/spinner@2.0.13(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-T1/aSkVpUIuiYyrjfn1+LsQEG7Onbi1UE9ccS/evgf61Dzy4GgTXQUnDuWFSgpV58owqirqOu6jn/9eCwDlzlg== - } + resolution: {integrity: sha512-T1/aSkVpUIuiYyrjfn1+LsQEG7Onbi1UE9ccS/evgf61Dzy4GgTXQUnDuWFSgpV58owqirqOu6jn/9eCwDlzlg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -1264,10 +1142,7 @@ packages: dev: false /@chakra-ui/stat@2.0.18(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-wKyfBqhVlIs9bkSerUc6F9KJMw0yTIEKArW7dejWwzToCLPr47u+CtYO6jlJHV6lRvkhi4K4Qc6pyvtJxZ3VpA== - } + resolution: {integrity: sha512-wKyfBqhVlIs9bkSerUc6F9KJMw0yTIEKArW7dejWwzToCLPr47u+CtYO6jlJHV6lRvkhi4K4Qc6pyvtJxZ3VpA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -1280,10 +1155,7 @@ packages: dev: false /@chakra-ui/stepper@2.2.0(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-8ZLxV39oghSVtOUGK8dX8Z6sWVSQiKVmsK4c3OQDa8y2TvxP0VtFD0Z5U1xJlOjQMryZRWhGj9JBc3iQLukuGg== - } + resolution: {integrity: sha512-8ZLxV39oghSVtOUGK8dX8Z6sWVSQiKVmsK4c3OQDa8y2TvxP0VtFD0Z5U1xJlOjQMryZRWhGj9JBc3iQLukuGg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -1296,10 +1168,7 @@ packages: dev: false /@chakra-ui/styled-system@2.9.0: - resolution: - { - integrity: sha512-rToN30eOezrTZ5qBHmWqEwsYPenHtc3WU6ODAfMUwNnmCJQiu2erRGv8JwIjmRJnKSOEnNKccI2UXe2EwI6+JA== - } + resolution: {integrity: sha512-rToN30eOezrTZ5qBHmWqEwsYPenHtc3WU6ODAfMUwNnmCJQiu2erRGv8JwIjmRJnKSOEnNKccI2UXe2EwI6+JA==} dependencies: '@chakra-ui/shared-utils': 2.0.5 csstype: 3.1.2 @@ -1307,10 +1176,7 @@ packages: dev: false /@chakra-ui/switch@2.0.27(@chakra-ui/system@2.5.7)(framer-motion@10.12.8)(react@18.2.0): - resolution: - { - integrity: sha512-z76y2fxwMlvRBrC5W8xsZvo3gP+zAEbT3Nqy5P8uh/IPd5OvDsGeac90t5cgnQTyxMOpznUNNK+1eUZqtLxWnQ== - } + resolution: {integrity: sha512-z76y2fxwMlvRBrC5W8xsZvo3gP+zAEbT3Nqy5P8uh/IPd5OvDsGeac90t5cgnQTyxMOpznUNNK+1eUZqtLxWnQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' @@ -1324,10 +1190,7 @@ packages: dev: false /@chakra-ui/system@2.5.7(@emotion/react@11.11.0)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: - { - integrity: sha512-yB6en7YdJPxKvKY2jJROVwkBE2CLFmHS4ZDx27VdYs0Fa4kGiyDFhJAfnMtLBNDVsTy1NhUHL9aqR63u56QqFg== - } + resolution: {integrity: sha512-yB6en7YdJPxKvKY2jJROVwkBE2CLFmHS4ZDx27VdYs0Fa4kGiyDFhJAfnMtLBNDVsTy1NhUHL9aqR63u56QqFg==} peerDependencies: '@emotion/react': ^11.0.0 '@emotion/styled': ^11.0.0 @@ -1346,10 +1209,7 @@ packages: dev: false /@chakra-ui/table@2.0.17(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-OScheTEp1LOYvTki2NFwnAYvac8siAhW9BI5RKm5f5ORL2gVJo4I72RUqE0aKe1oboxgm7CYt5afT5PS5cG61A== - } + resolution: {integrity: sha512-OScheTEp1LOYvTki2NFwnAYvac8siAhW9BI5RKm5f5ORL2gVJo4I72RUqE0aKe1oboxgm7CYt5afT5PS5cG61A==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -1361,10 +1221,7 @@ packages: dev: false /@chakra-ui/tabs@2.1.9(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-Yf8e0kRvaGM6jfkJum0aInQ0U3ZlCafmrYYni2lqjcTtThqu+Yosmo3iYlnullXxCw5MVznfrkb9ySvgQowuYg== - } + resolution: {integrity: sha512-Yf8e0kRvaGM6jfkJum0aInQ0U3ZlCafmrYYni2lqjcTtThqu+Yosmo3iYlnullXxCw5MVznfrkb9ySvgQowuYg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -1383,10 +1240,7 @@ packages: dev: false /@chakra-ui/tag@3.0.0(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-YWdMmw/1OWRwNkG9pX+wVtZio+B89odaPj6XeMn5nfNN8+jyhIEpouWv34+CO9G0m1lupJTxPSfgLAd7cqXZMA== - } + resolution: {integrity: sha512-YWdMmw/1OWRwNkG9pX+wVtZio+B89odaPj6XeMn5nfNN8+jyhIEpouWv34+CO9G0m1lupJTxPSfgLAd7cqXZMA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -1398,10 +1252,7 @@ packages: dev: false /@chakra-ui/textarea@2.0.19(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-adJk+qVGsFeJDvfn56CcJKKse8k7oMGlODrmpnpTdF+xvlsiTM+1GfaJvgNSpHHuQFdz/A0z1uJtfGefk0G2ZA== - } + resolution: {integrity: sha512-adJk+qVGsFeJDvfn56CcJKKse8k7oMGlODrmpnpTdF+xvlsiTM+1GfaJvgNSpHHuQFdz/A0z1uJtfGefk0G2ZA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -1413,10 +1264,7 @@ packages: dev: false /@chakra-ui/theme-tools@2.0.17(@chakra-ui/styled-system@2.9.0): - resolution: - { - integrity: sha512-Auu38hnihlJZQcPok6itRDBbwof3TpXGYtDPnOvrq4Xp7jnab36HLt7KEXSDPXbtOk3ZqU99pvI1en5LbDrdjg== - } + resolution: {integrity: sha512-Auu38hnihlJZQcPok6itRDBbwof3TpXGYtDPnOvrq4Xp7jnab36HLt7KEXSDPXbtOk3ZqU99pvI1en5LbDrdjg==} peerDependencies: '@chakra-ui/styled-system': '>=2.0.0' dependencies: @@ -1427,10 +1275,7 @@ packages: dev: false /@chakra-ui/theme-utils@2.0.17: - resolution: - { - integrity: sha512-aUaVLFIU1Rs8m+5WVOUvqHKapOX8nSgUVGaeRWS4odxBM95dG4j15f4L88LEMw4D4+WWd0CSAS139OnRgj1rCw== - } + resolution: {integrity: sha512-aUaVLFIU1Rs8m+5WVOUvqHKapOX8nSgUVGaeRWS4odxBM95dG4j15f4L88LEMw4D4+WWd0CSAS139OnRgj1rCw==} dependencies: '@chakra-ui/shared-utils': 2.0.5 '@chakra-ui/styled-system': 2.9.0 @@ -1439,10 +1284,7 @@ packages: dev: false /@chakra-ui/theme@3.1.1(@chakra-ui/styled-system@2.9.0): - resolution: - { - integrity: sha512-VHcG0CPLd9tgvWnajpAGqrAYhx4HwgfK0E9VOrdwa/3bN+AgY/0EAAXzfe0Q0W2MBWzSgaYqZcQ5cDRpYbiYPA== - } + resolution: {integrity: sha512-VHcG0CPLd9tgvWnajpAGqrAYhx4HwgfK0E9VOrdwa/3bN+AgY/0EAAXzfe0Q0W2MBWzSgaYqZcQ5cDRpYbiYPA==} peerDependencies: '@chakra-ui/styled-system': '>=2.8.0' dependencies: @@ -1453,10 +1295,7 @@ packages: dev: false /@chakra-ui/toast@6.1.3(@chakra-ui/system@2.5.7)(framer-motion@10.12.8)(react-dom@18.2.0)(react@18.2.0): - resolution: - { - integrity: sha512-dsg/Sdkuq+SCwdOeyzrnBO1ecDA7VKfLFjUtj9QBc/SFEN8r+FQrygy79TNo+QWr7zdjI8icbl8nsp59lpb8ag== - } + resolution: {integrity: sha512-dsg/Sdkuq+SCwdOeyzrnBO1ecDA7VKfLFjUtj9QBc/SFEN8r+FQrygy79TNo+QWr7zdjI8icbl8nsp59lpb8ag==} peerDependencies: '@chakra-ui/system': 2.5.7 framer-motion: '>=4.0.0' @@ -1479,10 +1318,7 @@ packages: dev: false /@chakra-ui/tooltip@2.2.8(@chakra-ui/system@2.5.7)(framer-motion@10.12.8)(react-dom@18.2.0)(react@18.2.0): - resolution: - { - integrity: sha512-AqtrCkalADrqqd1SgII4n8F0dDABxqxL3e8uj3yC3HDzT3BU/0NSwSQRA2bp9eoJHk07ZMs9kyzvkkBLc0pr2A== - } + resolution: {integrity: sha512-AqtrCkalADrqqd1SgII4n8F0dDABxqxL3e8uj3yC3HDzT3BU/0NSwSQRA2bp9eoJHk07ZMs9kyzvkkBLc0pr2A==} peerDependencies: '@chakra-ui/system': '>=2.0.0' framer-motion: '>=4.0.0' @@ -1503,10 +1339,7 @@ packages: dev: false /@chakra-ui/transition@2.0.16(framer-motion@10.12.8)(react@18.2.0): - resolution: - { - integrity: sha512-E+RkwlPc3H7P1crEXmXwDXMB2lqY2LLia2P5siQ4IEnRWIgZXlIw+8Em+NtHNgusel2N+9yuB0wT9SeZZeZ3CQ== - } + resolution: {integrity: sha512-E+RkwlPc3H7P1crEXmXwDXMB2lqY2LLia2P5siQ4IEnRWIgZXlIw+8Em+NtHNgusel2N+9yuB0wT9SeZZeZ3CQ==} peerDependencies: framer-motion: '>=4.0.0' react: '>=18' @@ -1517,10 +1350,7 @@ packages: dev: false /@chakra-ui/utils@2.0.15: - resolution: - { - integrity: sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA== - } + resolution: {integrity: sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==} dependencies: '@types/lodash.mergewith': 4.6.7 css-box-model: 1.2.1 @@ -1529,10 +1359,7 @@ packages: dev: false /@chakra-ui/visually-hidden@2.0.15(@chakra-ui/system@2.5.7)(react@18.2.0): - resolution: - { - integrity: sha512-WWULIiucYRBIewHKFA7BssQ2ABLHLVd9lrUo3N3SZgR0u4ZRDDVEUNOy+r+9ruDze8+36dGbN9wsN1IdELtdOw== - } + resolution: {integrity: sha512-WWULIiucYRBIewHKFA7BssQ2ABLHLVd9lrUo3N3SZgR0u4ZRDDVEUNOy+r+9ruDze8+36dGbN9wsN1IdELtdOw==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' @@ -1542,10 +1369,7 @@ packages: dev: false /@emotion/babel-plugin@11.11.0: - resolution: - { - integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== - } + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} dependencies: '@babel/helper-module-imports': 7.21.4 '@babel/runtime': 7.21.5 @@ -1561,10 +1385,7 @@ packages: dev: false /@emotion/cache@11.11.0: - resolution: - { - integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== - } + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} dependencies: '@emotion/memoize': 0.8.1 '@emotion/sheet': 1.2.2 @@ -1574,17 +1395,11 @@ packages: dev: false /@emotion/hash@0.9.1: - resolution: - { - integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== - } + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} dev: false /@emotion/is-prop-valid@0.8.8: - resolution: - { - integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== - } + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} requiresBuild: true dependencies: '@emotion/memoize': 0.7.4 @@ -1592,34 +1407,22 @@ packages: optional: true /@emotion/is-prop-valid@1.2.1: - resolution: - { - integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== - } + resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} dependencies: '@emotion/memoize': 0.8.1 dev: false /@emotion/memoize@0.7.4: - resolution: - { - integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== - } + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} dev: false optional: true /@emotion/memoize@0.8.1: - resolution: - { - integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== - } + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} dev: false /@emotion/react@11.11.0(@types/react@18.0.28)(react@18.2.0): - resolution: - { - integrity: sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw== - } + resolution: {integrity: sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw==} peerDependencies: '@types/react': '*' react: '>=16.8.0' @@ -1640,10 +1443,7 @@ packages: dev: false /@emotion/serialize@1.1.2: - resolution: - { - integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA== - } + resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==} dependencies: '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 @@ -1653,17 +1453,11 @@ packages: dev: false /@emotion/sheet@1.2.2: - resolution: - { - integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== - } + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} dev: false /@emotion/styled@11.11.0(@emotion/react@11.11.0)(@types/react@18.0.28)(react@18.2.0): - resolution: - { - integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== - } + resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' @@ -1684,17 +1478,11 @@ packages: dev: false /@emotion/unitless@0.8.1: - resolution: - { - integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== - } + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} dev: false /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0): - resolution: - { - integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== - } + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} peerDependencies: react: '>=16.8.0' dependencies: @@ -1702,25 +1490,16 @@ packages: dev: false /@emotion/utils@1.2.1: - resolution: - { - integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== - } + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} dev: false /@emotion/weak-memoize@0.3.1: - resolution: - { - integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== - } + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} dev: false /@eslint-community/eslint-utils@4.4.0(eslint@8.36.0): - resolution: - { - integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.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: @@ -1729,19 +1508,13 @@ packages: dev: true /@eslint-community/regexpp@4.5.1: - resolution: - { - integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true /@eslint/eslintrc@2.0.3: - resolution: - { - integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 @@ -1757,19 +1530,13 @@ packages: dev: true /@eslint/js@8.36.0: - resolution: - { - integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true /@humanwhocodes/config-array@0.11.8: - resolution: - { - integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== - } - engines: { node: '>=10.10.0' } + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 debug: 4.3.4 @@ -1779,25 +1546,16 @@ packages: dev: true /@humanwhocodes/module-importer@1.0.1: - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - } - engines: { node: '>=12.22' } + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} dev: true /@humanwhocodes/object-schema@1.2.1: - resolution: - { - integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - } + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true /@kubernetes/client-node@0.18.0: - resolution: - { - integrity: sha512-Mp6q0OkZQBp+HslIgvHYpsPJk8z6mch231QWtIZQHvs+PaTE6mkUfusYE8fNw3jMjru5mVO/JDz6PTjB9YT2rQ== - } + resolution: {integrity: sha512-Mp6q0OkZQBp+HslIgvHYpsPJk8z6mch231QWtIZQHvs+PaTE6mkUfusYE8fNw3jMjru5mVO/JDz6PTjB9YT2rQ==} dependencies: '@types/js-yaml': 4.0.5 '@types/node': 10.17.60 @@ -1825,27 +1583,18 @@ packages: dev: false /@next/env@13.1.6: - resolution: - { - integrity: sha512-s+W9Fdqh5MFk6ECrbnVmmAOwxKQuhGMT7xXHrkYIBMBcTiOqNWhv5KbJIboKR5STXxNXl32hllnvKaffzFaWQg== - } + resolution: {integrity: sha512-s+W9Fdqh5MFk6ECrbnVmmAOwxKQuhGMT7xXHrkYIBMBcTiOqNWhv5KbJIboKR5STXxNXl32hllnvKaffzFaWQg==} dev: false /@next/eslint-plugin-next@13.2.4: - resolution: - { - integrity: sha512-ck1lI+7r1mMJpqLNa3LJ5pxCfOB1lfJncKmRJeJxcJqcngaFwylreLP7da6Rrjr6u2gVRTfmnkSkjc80IiQCwQ== - } + resolution: {integrity: sha512-ck1lI+7r1mMJpqLNa3LJ5pxCfOB1lfJncKmRJeJxcJqcngaFwylreLP7da6Rrjr6u2gVRTfmnkSkjc80IiQCwQ==} dependencies: glob: 7.1.7 dev: true /@next/swc-android-arm-eabi@13.1.6: - resolution: - { - integrity: sha512-F3/6Z8LH/pGlPzR1AcjPFxx35mPqjE5xZcf+IL+KgbW9tMkp7CYi1y7qKrEWU7W4AumxX/8OINnDQWLiwLasLQ== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-F3/6Z8LH/pGlPzR1AcjPFxx35mPqjE5xZcf+IL+KgbW9tMkp7CYi1y7qKrEWU7W4AumxX/8OINnDQWLiwLasLQ==} + engines: {node: '>= 10'} cpu: [arm] os: [android] requiresBuild: true @@ -1853,11 +1602,8 @@ packages: optional: true /@next/swc-android-arm64@13.1.6: - resolution: - { - integrity: sha512-cMwQjnB8vrYkWyK/H0Rf2c2pKIH4RGjpKUDvbjVAit6SbwPDpmaijLio0LWFV3/tOnY6kvzbL62lndVA0mkYpw== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-cMwQjnB8vrYkWyK/H0Rf2c2pKIH4RGjpKUDvbjVAit6SbwPDpmaijLio0LWFV3/tOnY6kvzbL62lndVA0mkYpw==} + engines: {node: '>= 10'} cpu: [arm64] os: [android] requiresBuild: true @@ -1865,11 +1611,8 @@ packages: optional: true /@next/swc-darwin-arm64@13.1.6: - resolution: - { - integrity: sha512-KKRQH4DDE4kONXCvFMNBZGDb499Hs+xcFAwvj+rfSUssIDrZOlyfJNy55rH5t2Qxed1e4K80KEJgsxKQN1/fyw== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-KKRQH4DDE4kONXCvFMNBZGDb499Hs+xcFAwvj+rfSUssIDrZOlyfJNy55rH5t2Qxed1e4K80KEJgsxKQN1/fyw==} + engines: {node: '>= 10'} cpu: [arm64] os: [darwin] requiresBuild: true @@ -1877,11 +1620,8 @@ packages: optional: true /@next/swc-darwin-x64@13.1.6: - resolution: - { - integrity: sha512-/uOky5PaZDoaU99ohjtNcDTJ6ks/gZ5ykTQDvNZDjIoCxFe3+t06bxsTPY6tAO6uEAw5f6vVFX5H5KLwhrkZCA== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-/uOky5PaZDoaU99ohjtNcDTJ6ks/gZ5ykTQDvNZDjIoCxFe3+t06bxsTPY6tAO6uEAw5f6vVFX5H5KLwhrkZCA==} + engines: {node: '>= 10'} cpu: [x64] os: [darwin] requiresBuild: true @@ -1889,11 +1629,8 @@ packages: optional: true /@next/swc-freebsd-x64@13.1.6: - resolution: - { - integrity: sha512-qaEALZeV7to6weSXk3Br80wtFQ7cFTpos/q+m9XVRFggu+8Ib895XhMWdJBzew6aaOcMvYR6KQ6JmHA2/eMzWw== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-qaEALZeV7to6weSXk3Br80wtFQ7cFTpos/q+m9XVRFggu+8Ib895XhMWdJBzew6aaOcMvYR6KQ6JmHA2/eMzWw==} + engines: {node: '>= 10'} cpu: [x64] os: [freebsd] requiresBuild: true @@ -1901,11 +1638,8 @@ packages: optional: true /@next/swc-linux-arm-gnueabihf@13.1.6: - resolution: - { - integrity: sha512-OybkbC58A1wJ+JrJSOjGDvZzrVEQA4sprJejGqMwiZyLqhr9Eo8FXF0y6HL+m1CPCpPhXEHz/2xKoYsl16kNqw== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-OybkbC58A1wJ+JrJSOjGDvZzrVEQA4sprJejGqMwiZyLqhr9Eo8FXF0y6HL+m1CPCpPhXEHz/2xKoYsl16kNqw==} + engines: {node: '>= 10'} cpu: [arm] os: [linux] requiresBuild: true @@ -1913,11 +1647,8 @@ packages: optional: true /@next/swc-linux-arm64-gnu@13.1.6: - resolution: - { - integrity: sha512-yCH+yDr7/4FDuWv6+GiYrPI9kcTAO3y48UmaIbrKy8ZJpi7RehJe3vIBRUmLrLaNDH3rY1rwoHi471NvR5J5NQ== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-yCH+yDr7/4FDuWv6+GiYrPI9kcTAO3y48UmaIbrKy8ZJpi7RehJe3vIBRUmLrLaNDH3rY1rwoHi471NvR5J5NQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] @@ -1926,11 +1657,8 @@ packages: optional: true /@next/swc-linux-arm64-musl@13.1.6: - resolution: - { - integrity: sha512-ECagB8LGX25P9Mrmlc7Q/TQBb9rGScxHbv/kLqqIWs2fIXy6Y/EiBBiM72NTwuXUFCNrWR4sjUPSooVBJJ3ESQ== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-ECagB8LGX25P9Mrmlc7Q/TQBb9rGScxHbv/kLqqIWs2fIXy6Y/EiBBiM72NTwuXUFCNrWR4sjUPSooVBJJ3ESQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] @@ -1939,11 +1667,8 @@ packages: optional: true /@next/swc-linux-x64-gnu@13.1.6: - resolution: - { - integrity: sha512-GT5w2mruk90V/I5g6ScuueE7fqj/d8Bui2qxdw6lFxmuTgMeol5rnzAv4uAoVQgClOUO/MULilzlODg9Ib3Y4Q== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-GT5w2mruk90V/I5g6ScuueE7fqj/d8Bui2qxdw6lFxmuTgMeol5rnzAv4uAoVQgClOUO/MULilzlODg9Ib3Y4Q==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] @@ -1952,11 +1677,8 @@ packages: optional: true /@next/swc-linux-x64-musl@13.1.6: - resolution: - { - integrity: sha512-keFD6KvwOPzmat4TCnlnuxJCQepPN+8j3Nw876FtULxo8005Y9Ghcl7ACcR8GoiKoddAq8gxNBrpjoxjQRHeAQ== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-keFD6KvwOPzmat4TCnlnuxJCQepPN+8j3Nw876FtULxo8005Y9Ghcl7ACcR8GoiKoddAq8gxNBrpjoxjQRHeAQ==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] @@ -1965,11 +1687,8 @@ packages: optional: true /@next/swc-win32-arm64-msvc@13.1.6: - resolution: - { - integrity: sha512-OwertslIiGQluFvHyRDzBCIB07qJjqabAmINlXUYt7/sY7Q7QPE8xVi5beBxX/rxTGPIbtyIe3faBE6Z2KywhQ== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-OwertslIiGQluFvHyRDzBCIB07qJjqabAmINlXUYt7/sY7Q7QPE8xVi5beBxX/rxTGPIbtyIe3faBE6Z2KywhQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] requiresBuild: true @@ -1977,11 +1696,8 @@ packages: optional: true /@next/swc-win32-ia32-msvc@13.1.6: - resolution: - { - integrity: sha512-g8zowiuP8FxUR9zslPmlju7qYbs2XBtTLVSxVikPtUDQedhcls39uKYLvOOd1JZg0ehyhopobRoH1q+MHlIN/w== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-g8zowiuP8FxUR9zslPmlju7qYbs2XBtTLVSxVikPtUDQedhcls39uKYLvOOd1JZg0ehyhopobRoH1q+MHlIN/w==} + engines: {node: '>= 10'} cpu: [ia32] os: [win32] requiresBuild: true @@ -1989,11 +1705,8 @@ packages: optional: true /@next/swc-win32-x64-msvc@13.1.6: - resolution: - { - integrity: sha512-Ls2OL9hi3YlJKGNdKv8k3X/lLgc3VmLG3a/DeTkAd+lAituJp8ZHmRmm9f9SL84fT3CotlzcgbdaCDfFwFA6bA== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-Ls2OL9hi3YlJKGNdKv8k3X/lLgc3VmLG3a/DeTkAd+lAituJp8ZHmRmm9f9SL84fT3CotlzcgbdaCDfFwFA6bA==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] requiresBuild: true @@ -2001,41 +1714,29 @@ packages: optional: true /@nodelib/fs.scandir@2.1.5: - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 dev: true /@nodelib/fs.stat@2.0.5: - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} dev: true /@nodelib/fs.walk@1.2.8: - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 dev: true /@pkgr/utils@2.4.0: - resolution: - { - integrity: sha512-2OCURAmRtdlL8iUDTypMrrxfwe8frXTeXaxGsVOaYtc/wrUyk8Z/0OBetM7cdlsy7ZFWlMX72VogKeh+A4Xcjw== - } - engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-2OCURAmRtdlL8iUDTypMrrxfwe8frXTeXaxGsVOaYtc/wrUyk8Z/0OBetM7cdlsy7ZFWlMX72VogKeh+A4Xcjw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 fast-glob: 3.2.12 @@ -2046,58 +1747,37 @@ packages: dev: true /@popperjs/core@2.11.7: - resolution: - { - integrity: sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw== - } + resolution: {integrity: sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==} dev: false /@rushstack/eslint-patch@1.2.0: - resolution: - { - integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== - } + resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} dev: true /@swc/helpers@0.4.14: - resolution: - { - integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw== - } + resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: tslib: 2.5.0 dev: false /@tanstack/query-core@4.29.7: - resolution: - { - integrity: sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA== - } + resolution: {integrity: sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA==} dev: false /@tanstack/query-persist-client-core@4.29.7: - resolution: - { - integrity: sha512-/QahvSq9/f8hetCsCd9MaOy6fAoPn0YDGDcl6TTobqdr9kHMgrM9laP9yKJFg2hm5/jIsrCMDO/iCnxBiUhrqw== - } + resolution: {integrity: sha512-/QahvSq9/f8hetCsCd9MaOy6fAoPn0YDGDcl6TTobqdr9kHMgrM9laP9yKJFg2hm5/jIsrCMDO/iCnxBiUhrqw==} dependencies: '@tanstack/query-core': 4.29.7 dev: false /@tanstack/query-sync-storage-persister@4.29.7: - resolution: - { - integrity: sha512-XWys8hez8eFIb9+oYNs0Jumfjz8afEwN52VSrHJEWg7gZO/Y/8ziI80cNlaDNB+60t7s3TaspKXT5z8DNFsCkQ== - } + resolution: {integrity: sha512-XWys8hez8eFIb9+oYNs0Jumfjz8afEwN52VSrHJEWg7gZO/Y/8ziI80cNlaDNB+60t7s3TaspKXT5z8DNFsCkQ==} dependencies: '@tanstack/query-persist-client-core': 4.29.7 dev: false /@tanstack/react-query-persist-client@4.29.7(@tanstack/react-query@4.29.7): - resolution: - { - integrity: sha512-KYUeESnthjjcfakpAei9Cz5gsIm1uDAVHrKcIAoARQwksk4j0KAo9ieExoIhL9v4mpTOlE9GsuZ/y06ANmaVaQ== - } + resolution: {integrity: sha512-KYUeESnthjjcfakpAei9Cz5gsIm1uDAVHrKcIAoARQwksk4j0KAo9ieExoIhL9v4mpTOlE9GsuZ/y06ANmaVaQ==} peerDependencies: '@tanstack/react-query': 4.29.7 dependencies: @@ -2106,10 +1786,7 @@ packages: dev: false /@tanstack/react-query@4.29.7(react-dom@18.2.0)(react@18.2.0): - resolution: - { - integrity: sha512-ijBWEzAIo09fB1yd22slRZzprrZ5zMdWYzBnCg5qiXuFbH78uGN1qtGz8+Ed4MuhaPaYSD+hykn+QEKtQviEtg== - } + resolution: {integrity: sha512-ijBWEzAIo09fB1yd22slRZzprrZ5zMdWYzBnCg5qiXuFbH78uGN1qtGz8+Ed4MuhaPaYSD+hykn+QEKtQviEtg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2127,115 +1804,78 @@ packages: dev: false /@types/caseless@0.12.2: - resolution: - { - integrity: sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== - } + resolution: {integrity: sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==} dev: false /@types/hoist-non-react-statics@3.3.1: - resolution: - { - integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== - } + resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: '@types/react': 18.0.28 hoist-non-react-statics: 3.3.2 dev: false /@types/js-cookie@3.0.3: - resolution: - { - integrity: sha512-Xe7IImK09HP1sv2M/aI+48a20VX+TdRJucfq4vfRVy6nWN8PYPOEnlMRSgxJAgYQIXJVL8dZ4/ilAM7dWNaOww== - } + resolution: {integrity: sha512-Xe7IImK09HP1sv2M/aI+48a20VX+TdRJucfq4vfRVy6nWN8PYPOEnlMRSgxJAgYQIXJVL8dZ4/ilAM7dWNaOww==} dev: true /@types/js-yaml@4.0.5: - resolution: - { - integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== - } + resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} /@types/json5@0.0.29: - resolution: - { - integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - } + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true /@types/lodash.mergewith@4.6.7: - resolution: - { - integrity: sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A== - } + resolution: {integrity: sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==} dependencies: '@types/lodash': 4.14.194 dev: false /@types/lodash@4.14.194: - resolution: - { - integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== - } + resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==} dev: false /@types/node@10.17.60: - resolution: - { - integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== - } + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + dev: false + + /@types/node@12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + dev: false + + /@types/node@14.18.53: + resolution: {integrity: sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A==} dev: false /@types/node@18.15.5: - resolution: - { - integrity: sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew== - } + resolution: {integrity: sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==} /@types/nprogress@0.2.0: - resolution: - { - integrity: sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A== - } + resolution: {integrity: sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==} dev: true /@types/parse-json@4.0.0: - resolution: - { - integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - } + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false /@types/prop-types@15.7.5: - resolution: - { - integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== - } + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} /@types/react-dom@18.0.11: - resolution: - { - integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw== - } + resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: '@types/react': 18.0.28 dev: true /@types/react@18.0.28: - resolution: - { - integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew== - } + resolution: {integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 /@types/request@2.48.8: - resolution: - { - integrity: sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ== - } + resolution: {integrity: sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==} dependencies: '@types/caseless': 0.12.2 '@types/node': 18.15.5 @@ -2244,33 +1884,38 @@ packages: dev: false /@types/scheduler@0.16.3: - resolution: - { - integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== - } + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} /@types/tough-cookie@4.0.2: - resolution: - { - integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== - } + resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} + dev: false + + /@types/webidl-conversions@7.0.0: + resolution: {integrity: sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==} + dev: false + + /@types/whatwg-url@8.2.2: + resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} + dependencies: + '@types/node': 18.15.5 + '@types/webidl-conversions': 7.0.0 dev: false /@types/ws@6.0.4: - resolution: - { - integrity: sha512-PpPrX7SZW9re6+Ha8ojZG4Se8AZXgf0GK6zmfqEuCsY49LFDNXO3SByp44X3dFEqtB73lkCDAdUazhAjVPiNwg== - } + resolution: {integrity: sha512-PpPrX7SZW9re6+Ha8ojZG4Se8AZXgf0GK6zmfqEuCsY49LFDNXO3SByp44X3dFEqtB73lkCDAdUazhAjVPiNwg==} + dependencies: + '@types/node': 18.15.5 + dev: false + + /@types/xml2js@0.4.11: + resolution: {integrity: sha512-JdigeAKmCyoJUiQljjr7tQG3if9NkqGUgwEUqBvV0N7LM4HyQk7UXCnusRa1lnvXAEYJ8mw8GtZWioagNztOwA==} dependencies: '@types/node': 18.15.5 dev: false /@typescript-eslint/parser@5.59.5(eslint@8.36.0)(typescript@4.9.5): - resolution: - { - integrity: sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 typescript: '*' @@ -2289,30 +1934,21 @@ packages: dev: true /@typescript-eslint/scope-manager@5.59.5: - resolution: - { - integrity: sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.59.5 '@typescript-eslint/visitor-keys': 5.59.5 dev: true /@typescript-eslint/types@5.59.5: - resolution: - { - integrity: sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true /@typescript-eslint/typescript-estree@5.59.5(typescript@4.9.5): - resolution: - { - integrity: sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -2332,35 +1968,23 @@ packages: dev: true /@typescript-eslint/visitor-keys@5.59.5: - resolution: - { - integrity: sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.59.5 eslint-visitor-keys: 3.4.1 dev: true /@zag-js/element-size@0.3.2: - resolution: - { - integrity: sha512-bVvvigUGvAuj7PCkE5AbzvTJDTw5f3bg9nQdv+ErhVN8SfPPppLJEmmWdxqsRzrHXgx8ypJt/+Ty0kjtISVDsQ== - } + resolution: {integrity: sha512-bVvvigUGvAuj7PCkE5AbzvTJDTw5f3bg9nQdv+ErhVN8SfPPppLJEmmWdxqsRzrHXgx8ypJt/+Ty0kjtISVDsQ==} dev: false /@zag-js/focus-visible@0.2.2: - resolution: - { - integrity: sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA== - } + resolution: {integrity: sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA==} dev: false /acorn-jsx@5.3.2(acorn@8.8.2): - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - } + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: @@ -2368,19 +1992,13 @@ packages: dev: true /acorn@8.8.2: - resolution: - { - integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - } - engines: { node: '>=0.4.0' } + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} hasBin: true dev: true /ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - } + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -2388,83 +2006,56 @@ packages: uri-js: 4.4.1 /ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} dev: true /ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 dev: false /ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: true /anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 /argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - } + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} /aria-hidden@1.2.3: - resolution: - { - integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} dependencies: tslib: 2.5.0 dev: false /aria-query@5.1.3: - resolution: - { - integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - } + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.1 dev: true /array-buffer-byte-length@1.0.0: - resolution: - { - integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - } + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: call-bind: 1.0.2 is-array-buffer: 3.0.2 /array-includes@3.1.6: - resolution: - { - integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -2473,19 +2064,13 @@ packages: is-string: 1.0.7 /array-union@2.1.0: - resolution: - { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} dev: true /array.prototype.flat@1.3.1: - resolution: - { - integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -2494,11 +2079,8 @@ packages: dev: true /array.prototype.flatmap@1.3.1: - resolution: - { - integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -2507,10 +2089,7 @@ packages: dev: true /array.prototype.tosorted@1.1.1: - resolution: - { - integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== - } + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -2520,70 +2099,43 @@ packages: dev: true /asn1@0.2.6: - resolution: - { - integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - } + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: safer-buffer: 2.1.2 dev: false /assert-plus@1.0.0: - resolution: - { - integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - } - engines: { node: '>=0.8' } + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} dev: false /ast-types-flow@0.0.7: - resolution: - { - integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== - } + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true /asynckit@0.4.0: - resolution: - { - integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - } + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false /available-typed-arrays@1.0.5: - resolution: - { - integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} /aws-sign2@0.7.0: - resolution: - { - integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - } + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: false /aws4@1.12.0: - resolution: - { - integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== - } + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} dev: false /axe-core@4.7.0: - resolution: - { - integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} dev: true /axios@1.2.1: - resolution: - { - integrity: sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A== - } + resolution: {integrity: sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==} dependencies: follow-redirects: 1.15.2 form-data: 4.0.0 @@ -2593,10 +2145,7 @@ packages: dev: false /axios@1.4.0: - resolution: - { - integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== - } + resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} dependencies: follow-redirects: 1.15.2 form-data: 4.0.0 @@ -2606,20 +2155,14 @@ packages: dev: false /axobject-query@3.1.1: - resolution: - { - integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== - } + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} dependencies: deep-equal: 2.2.1 dev: true /babel-plugin-macros@3.1.0: - resolution: - { - integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - } - engines: { node: '>=10', npm: '>=6' } + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} dependencies: '@babel/runtime': 7.21.5 cosmiconfig: 7.1.0 @@ -2627,117 +2170,80 @@ packages: dev: false /balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - } + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} /bcrypt-pbkdf@1.0.2: - resolution: - { - integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - } + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: tweetnacl: 0.14.5 dev: false /big-integer@1.6.51: - resolution: - { - integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== - } - engines: { node: '>=0.6' } + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} dev: true /binary-extensions@2.2.0: - resolution: - { - integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} /bplist-parser@0.2.0: - resolution: - { - integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== - } - engines: { node: '>= 5.10.0' } + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.51 dev: true /brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - } + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 /braces@3.0.2: - resolution: - { - integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} dependencies: fill-range: 7.0.1 + /bson@5.4.0: + resolution: {integrity: sha512-WRZ5SQI5GfUuKnPTNmAYPiKIof3ORXAF4IRU5UcgmivNIon01rWQlw5RUH954dpu8yGL8T59YShVddIPaU/gFA==} + engines: {node: '>=14.20.1'} + dev: false + /bundle-name@3.0.0: - resolution: - { - integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} dependencies: run-applescript: 5.0.0 dev: true /byline@5.0.0: - resolution: - { - integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} + engines: {node: '>=0.10.0'} dev: false /call-bind@1.0.2: - resolution: - { - integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - } + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.0 /callsites@3.1.0: - resolution: - { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} /caniuse-lite@1.0.30001486: - resolution: - { - integrity: sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg== - } + resolution: {integrity: sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg==} dev: false /caseless@0.12.0: - resolution: - { - integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - } + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: false /chalk@2.4.2: - resolution: - { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 @@ -2745,22 +2251,16 @@ packages: dev: false /chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 dev: true /chokidar@3.5.3: - resolution: - { - integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - } - engines: { node: '>= 8.10.0' } + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -2773,128 +2273,80 @@ packages: fsevents: 2.3.2 /chownr@2.0.0: - resolution: - { - integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} dev: false /client-only@0.0.1: - resolution: - { - integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== - } + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false /clsx@1.2.1: - resolution: - { - integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} dev: false /color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - } + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 dev: false /color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - } - engines: { node: '>=7.0.0' } + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: true /color-name@1.1.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - } + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: false /color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - } + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true /color2k@2.0.2: - resolution: - { - integrity: sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w== - } + resolution: {integrity: sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w==} dev: false /combined-stream@1.0.8: - resolution: - { - integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: false /compute-scroll-into-view@1.0.20: - resolution: - { - integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg== - } + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} dev: false /concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - } + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} /convert-source-map@1.9.0: - resolution: - { - integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - } + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: false /copy-to-clipboard@3.3.3: - resolution: - { - integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== - } + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: toggle-selection: 1.0.6 dev: false /core-js@3.30.2: - resolution: - { - integrity: sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg== - } + resolution: {integrity: sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==} requiresBuild: true dev: false /core-util-is@1.0.2: - resolution: - { - integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - } + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} dev: false /cosmiconfig@7.1.0: - resolution: - { - integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} dependencies: '@types/parse-json': 4.0.0 import-fresh: 3.3.0 @@ -2904,10 +2356,7 @@ packages: dev: false /create-react-context@0.3.0(prop-types@15.8.1)(react@18.2.0): - resolution: - { - integrity: sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== - } + resolution: {integrity: sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==} peerDependencies: prop-types: ^15.0.0 react: ^0.14.0 || ^15.0.0 || ^16.0.0 @@ -2919,63 +2368,42 @@ packages: dev: false /cross-spawn@7.0.3: - resolution: - { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 /css-box-model@1.2.1: - resolution: - { - integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== - } + resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} dependencies: tiny-invariant: 1.3.1 dev: false /csstype@3.1.2: - resolution: - { - integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - } + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} /damerau-levenshtein@1.0.8: - resolution: - { - integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - } + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true /dashdash@1.14.1: - resolution: - { - integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - } - engines: { node: '>=0.10' } + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} dependencies: assert-plus: 1.0.0 dev: false /date-fns@2.30.0: - resolution: - { - integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== - } - engines: { node: '>=0.11' } + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} dependencies: '@babel/runtime': 7.21.5 dev: false /debug@3.2.7: - resolution: - { - integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - } + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -2986,11 +2414,8 @@ packages: dev: true /debug@4.3.4: - resolution: - { - integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - } - engines: { node: '>=6.0' } + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -2998,13 +2423,9 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: true /deep-equal@2.2.1: - resolution: - { - integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ== - } + resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.2 @@ -3027,29 +2448,25 @@ packages: dev: true /deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - } + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /deepmerge@2.2.1: + resolution: {integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==} + engines: {node: '>=0.10.0'} + dev: false + /default-browser-id@3.0.0: - resolution: - { - integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} dependencies: bplist-parser: 0.2.0 untildify: 4.0.0 dev: true /default-browser@4.0.0: - resolution: - { - integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== - } - engines: { node: '>=14.16' } + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} dependencies: bundle-name: 3.0.0 default-browser-id: 3.0.0 @@ -3058,83 +2475,56 @@ packages: dev: true /define-lazy-prop@3.0.0: - resolution: - { - integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} dev: true /define-properties@1.2.0: - resolution: - { - integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 /delayed-stream@1.0.0: - resolution: - { - integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - } - engines: { node: '>=0.4.0' } + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} dev: false /detect-node-es@1.1.0: - resolution: - { - integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== - } + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false /dir-glob@3.0.1: - resolution: - { - integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true /doctrine@2.1.0: - resolution: - { - integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 dev: true /doctrine@3.0.0: - resolution: - { - integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true /ecc-jsbn@0.1.2: - resolution: - { - integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - } + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 dev: false /echarts-for-react@3.0.2(echarts@5.4.2)(react@18.2.0): - resolution: - { - integrity: sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA== - } + 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 @@ -3146,48 +2536,33 @@ packages: dev: false /echarts@5.4.2: - resolution: - { - integrity: sha512-2W3vw3oI2tWJdyAz+b8DuWS0nfXtSDqlDmqgin/lfzbkB01cuMEN66KWBlmur3YMp5nEDEEt5s23pllnAzB4EA== - } + resolution: {integrity: sha512-2W3vw3oI2tWJdyAz+b8DuWS0nfXtSDqlDmqgin/lfzbkB01cuMEN66KWBlmur3YMp5nEDEEt5s23pllnAzB4EA==} dependencies: tslib: 2.3.0 zrender: 5.4.3 dev: false /emoji-regex@9.2.2: - resolution: - { - integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - } + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true /enhanced-resolve@5.13.0: - resolution: - { - integrity: sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg== - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==} + engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 dev: true /error-ex@1.3.2: - resolution: - { - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - } + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: false /es-abstract@1.21.2: - resolution: - { - integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 available-typed-arrays: 1.0.5 @@ -3225,10 +2600,7 @@ packages: which-typed-array: 1.1.9 /es-get-iterator@1.1.3: - resolution: - { - integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== - } + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 @@ -3242,56 +2614,38 @@ packages: dev: true /es-set-tostringtag@2.0.1: - resolution: - { - integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.0 has: 1.0.3 has-tostringtag: 1.0.0 /es-shim-unscopables@1.0.0: - resolution: - { - integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - } + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: true /es-to-primitive@1.2.1: - resolution: - { - integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - } - engines: { node: '>= 0.4' } + 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 /escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - } - engines: { node: '>=0.8.0' } + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} dev: false /escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} /eslint-config-next@13.2.4(eslint@8.36.0)(typescript@4.9.5): - resolution: - { - integrity: sha512-lunIBhsoeqw6/Lfkd6zPt25w1bn0znLA/JCL+au1HoEpSb4/PpsOYsYtgV/q+YPsoKIOzFyU5xnb04iZnXjUvg== - } + resolution: {integrity: sha512-lunIBhsoeqw6/Lfkd6zPt25w1bn0znLA/JCL+au1HoEpSb4/PpsOYsYtgV/q+YPsoKIOzFyU5xnb04iZnXjUvg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 typescript: '>=3.3.1' @@ -3316,10 +2670,7 @@ packages: dev: true /eslint-import-resolver-node@0.3.7: - resolution: - { - integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== - } + resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 is-core-module: 2.12.0 @@ -3329,11 +2680,8 @@ packages: dev: true /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.36.0): - resolution: - { - integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw== - } - engines: { node: ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' @@ -3356,11 +2704,8 @@ packages: dev: true /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.36.0): - resolution: - { - integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' eslint: '*' @@ -3389,11 +2734,8 @@ packages: dev: true /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-typescript@3.5.5)(eslint@8.36.0): - resolution: - { - integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 @@ -3425,11 +2767,8 @@ packages: dev: true /eslint-plugin-jsx-a11y@6.7.1(eslint@8.36.0): - resolution: - { - integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: @@ -3453,11 +2792,8 @@ packages: dev: true /eslint-plugin-react-hooks@4.6.0(eslint@8.36.0): - resolution: - { - integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - } - engines: { node: '>=10' } + 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: @@ -3465,11 +2801,8 @@ packages: dev: true /eslint-plugin-react@7.32.2(eslint@8.36.0): - resolution: - { - integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: @@ -3492,30 +2825,21 @@ packages: dev: true /eslint-scope@7.2.0: - resolution: - { - integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true /eslint-visitor-keys@3.4.1: - resolution: - { - integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true /eslint@8.36.0: - resolution: - { - integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.36.0) @@ -3563,11 +2887,8 @@ packages: dev: true /espree@9.5.2: - resolution: - { - integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.2 acorn-jsx: 5.3.2(acorn@8.8.2) @@ -3575,47 +2896,32 @@ packages: dev: true /esquery@1.5.0: - resolution: - { - integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - } - engines: { node: '>=0.10' } + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true /esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: true /estraverse@5.3.0: - resolution: - { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} dev: true /esutils@2.0.3: - resolution: - { - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} dev: true /execa@5.0.0: - resolution: - { - integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} + engines: {node: '>=10'} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -3629,11 +2935,8 @@ packages: dev: false /execa@5.1.1: - resolution: - { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -3647,11 +2950,8 @@ packages: dev: true /execa@7.1.1: - resolution: - { - integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q== - } - engines: { node: ^14.18.0 || ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -3665,32 +2965,20 @@ packages: dev: true /extend@3.0.2: - resolution: - { - integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - } + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: false /extsprintf@1.3.0: - resolution: - { - integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - } - engines: { '0': node >=0.6.0 } + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} dev: false /fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - } + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} /fast-glob@3.2.12: - resolution: - { - integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - } - engines: { node: '>=8.6.0' } + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -3700,98 +2988,65 @@ packages: dev: true /fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - } + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} /fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - } + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true /fastq@1.15.0: - resolution: - { - integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - } + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true /file-entry-cache@6.0.1: - resolution: - { - integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - } - engines: { node: ^10.12.0 || >=12.0.0 } + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: true /fill-range@7.0.1: - resolution: - { - integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 /find-root@1.1.0: - resolution: - { - integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - } + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false /find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 dev: true /flat-cache@3.0.4: - resolution: - { - integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - } - engines: { node: ^10.12.0 || >=12.0.0 } + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.7 rimraf: 3.0.2 dev: true /flatted@3.2.7: - resolution: - { - integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - } + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true /focus-lock@0.11.6: - resolution: - { - integrity: sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==} + engines: {node: '>=10'} dependencies: tslib: 2.5.0 dev: false /follow-redirects@1.15.2: - resolution: - { - integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} peerDependencies: debug: '*' peerDependenciesMeta: @@ -3800,26 +3055,17 @@ packages: dev: false /for-each@0.3.3: - resolution: - { - integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - } + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 /forever-agent@0.6.1: - resolution: - { - integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - } + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: false /form-data@2.3.3: - resolution: - { - integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - } - engines: { node: '>= 0.12' } + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -3827,11 +3073,8 @@ packages: dev: false /form-data@2.5.1: - resolution: - { - integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== - } - engines: { node: '>= 0.12' } + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -3839,22 +3082,31 @@ packages: dev: false /form-data@4.0.0: - resolution: - { - integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - } - engines: { node: '>= 6' } + 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 dev: false + /formik@2.4.2(react@18.2.0): + resolution: {integrity: sha512-C6nx0hifW2uENP3M6HpPmnAE6HFWCcd8/sqBZEOHZY6lpHJ5qehsfAy43ktpFLEmkBmhiZDei726utcUB9leqg==} + peerDependencies: + react: '>=16.8.0' + dependencies: + deepmerge: 2.2.1 + hoist-non-react-statics: 3.3.2 + lodash: 4.17.21 + lodash-es: 4.17.21 + react: 18.2.0 + react-fast-compare: 2.0.4 + tiny-warning: 1.0.3 + tslib: 2.5.0 + dev: false + /framer-motion@10.12.8(react-dom@18.2.0)(react@18.2.0): - resolution: - { - integrity: sha512-ylobYq3tGFjjAmRdBs5pL/R1+4AmOm69g/JbF5DcNETfRe8L9CjaX4acG83MjYdIsbsTGJmtR5qKx4glNmXO4A== - } + resolution: {integrity: sha512-ylobYq3tGFjjAmRdBs5pL/R1+4AmOm69g/JbF5DcNETfRe8L9CjaX4acG83MjYdIsbsTGJmtR5qKx4glNmXO4A==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 @@ -3872,52 +3124,34 @@ packages: dev: false /framesync@6.1.2: - resolution: - { - integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g== - } + resolution: {integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==} dependencies: tslib: 2.4.0 dev: false /fs-minipass@2.1.0: - resolution: - { - integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 dev: false /fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - } + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} /fsevents@2.3.2: - resolution: - { - integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + 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== - } + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} /function.prototype.name@1.1.5: - resolution: - { - integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -3925,86 +3159,56 @@ packages: functions-have-names: 1.2.3 /functions-have-names@1.2.3: - resolution: - { - integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - } + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} /get-intrinsic@1.2.0: - resolution: - { - integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== - } + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 /get-nonce@1.0.1: - resolution: - { - integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} dev: false /get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - } - engines: { node: '>=10' } + 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' } + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 /get-tsconfig@4.5.0: - resolution: - { - integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ== - } + resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} dev: true /getpass@0.1.7: - resolution: - { - integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - } + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} dependencies: assert-plus: 1.0.0 dev: false /glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - } - engines: { node: '>= 6' } + 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' } + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: true /glob@7.1.7: - resolution: - { - integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - } + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -4015,10 +3219,7 @@ packages: dev: true /glob@7.2.3: - resolution: - { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - } + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -4028,30 +3229,21 @@ packages: path-is-absolute: 1.0.1 /globals@13.20.0: - resolution: - { - integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true /globalthis@1.0.3: - resolution: - { - integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.0 /globby@11.1.0: - resolution: - { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -4062,11 +3254,8 @@ packages: dev: true /globby@13.1.4: - resolution: - { - integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g== - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 fast-glob: 3.2.12 @@ -4076,48 +3265,30 @@ packages: dev: true /gopd@1.0.1: - resolution: - { - integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - } + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.0 /graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - } + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true /grapheme-splitter@1.0.4: - resolution: - { - integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - } + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true /gud@1.0.0: - resolution: - { - integrity: sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== - } + resolution: {integrity: sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==} dev: false /har-schema@2.0.0: - resolution: - { - integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} dev: false /har-validator@5.1.5: - resolution: - { - integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} deprecated: this library is no longer supported dependencies: ajv: 6.12.6 @@ -4125,436 +3296,297 @@ packages: dev: false /has-bigints@1.0.2: - resolution: - { - integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - } + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} /has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} dev: false /has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} dev: true /has-property-descriptors@1.0.0: - resolution: - { - integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - } + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.2.0 /has-proto@1.0.1: - resolution: - { - integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - } - engines: { node: '>= 0.4' } + 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' } + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} /has-tostringtag@1.0.0: - resolution: - { - integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 /has@1.0.3: - resolution: - { - integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - } - engines: { node: '>= 0.4.0' } + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 /hoist-non-react-statics@3.3.2: - resolution: - { - integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - } + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 dev: false /html-parse-stringify@3.0.1: - resolution: - { - integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== - } + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} dependencies: void-elements: 3.1.0 dev: false /http-signature@1.2.0: - resolution: - { - integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - } - engines: { node: '>=0.8', npm: '>=1.3.7' } + 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: false + /httpx@2.2.7: + resolution: {integrity: sha512-Wjh2JOAah0pdczfqL8NC5378G7jMt0Zcpn8U+yyxAiejjlagzSTQgJHuVvka2VNPQlKfoGehYRc79WKq9E4gDw==} + dependencies: + '@types/node': 14.18.53 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - } - engines: { node: '>=10.17.0' } + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} /human-signals@4.3.1: - resolution: - { - integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== - } - engines: { node: '>=14.18.0' } + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} dev: true /i18next-fs-backend@2.1.2: - resolution: - { - integrity: sha512-y9vl8HC8b1ayqZELzKvaKgnphrxgbaGGSNQjPU0JoTVP1M3NI6C69SwiAAXi6xuF1FSySJG52EdQZdMUETlwRA== - } + resolution: {integrity: sha512-y9vl8HC8b1ayqZELzKvaKgnphrxgbaGGSNQjPU0JoTVP1M3NI6C69SwiAAXi6xuF1FSySJG52EdQZdMUETlwRA==} dev: false /i18next@22.4.15: - resolution: - { - integrity: sha512-yYudtbFrrmWKLEhl6jvKUYyYunj4bTBCe2qIUYAxbXoPusY7YmdwPvOE6fx6UIfWvmlbCWDItr7wIs8KEBZ5Zg== - } + resolution: {integrity: sha512-yYudtbFrrmWKLEhl6jvKUYyYunj4bTBCe2qIUYAxbXoPusY7YmdwPvOE6fx6UIfWvmlbCWDItr7wIs8KEBZ5Zg==} dependencies: '@babel/runtime': 7.21.5 dev: false /ignore@5.2.4: - resolution: - { - integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - } - engines: { node: '>= 4' } + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} dev: true /immer@9.0.21: - resolution: - { - integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== - } + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} dev: false /immutable@4.3.0: - resolution: - { - integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== - } + resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} /import-fresh@3.3.0: - resolution: - { - integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 /imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - } - engines: { node: '>=0.8.19' } + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} dev: true /inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - } + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 /inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - } + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false /internal-slot@1.0.5: - resolution: - { - integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.0 has: 1.0.3 side-channel: 1.0.4 /interpret@1.4.0: - resolution: - { - integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - } - engines: { node: '>= 0.10' } + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} dev: false /invariant@2.2.4: - resolution: - { - integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - } + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 dev: false + /ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + dev: false + /is-arguments@1.1.1: - resolution: - { - integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 dev: true /is-array-buffer@3.0.2: - resolution: - { - integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - } + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 is-typed-array: 1.1.10 /is-arrayish@0.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - } + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: false /is-bigint@1.0.4: - resolution: - { - integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - } + 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' } + 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' } + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 /is-callable@1.2.7: - resolution: - { - integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} /is-core-module@2.12.0: - resolution: - { - integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== - } + resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} dependencies: has: 1.0.3 /is-date-object@1.0.5: - resolution: - { - integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 /is-docker@2.2.1: - resolution: - { - integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} hasBin: true dev: true /is-docker@3.0.0: - resolution: - { - integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true dev: true /is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} /is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 /is-inside-container@1.0.0: - resolution: - { - integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - } - engines: { node: '>=14.16' } + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} hasBin: true dependencies: is-docker: 3.0.0 dev: true /is-map@2.0.2: - resolution: - { - integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - } + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true /is-negative-zero@2.0.2: - resolution: - { - integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} /is-number-object@1.0.7: - resolution: - { - integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 /is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - } - engines: { node: '>=0.12.0' } + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} /is-path-inside@3.0.3: - resolution: - { - integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} dev: true /is-regex@1.1.4: - resolution: - { - integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 /is-set@2.0.2: - resolution: - { - integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - } + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: true /is-shared-array-buffer@1.0.2: - resolution: - { - integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - } + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 /is-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} /is-stream@3.0.0: - resolution: - { - integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true /is-string@1.0.7: - resolution: - { - integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - } - engines: { node: '>= 0.4' } + 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' } + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 /is-typed-array@1.1.10: - resolution: - { - integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 @@ -4563,65 +3595,41 @@ packages: has-tostringtag: 1.0.0 /is-typedarray@1.0.0: - resolution: - { - integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - } + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: false /is-weakmap@2.0.1: - resolution: - { - integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - } + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} dev: true /is-weakref@1.0.2: - resolution: - { - integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - } + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 /is-weakset@2.0.2: - resolution: - { - integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== - } + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 dev: true /is-wsl@2.2.0: - resolution: - { - integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: true /isarray@2.0.5: - resolution: - { - integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - } + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true /isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - } + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} /isomorphic-ws@4.0.1(ws@7.5.9): - resolution: - { - integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - } + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: ws: '*' dependencies: @@ -4629,115 +3637,70 @@ packages: dev: false /isstream@0.1.2: - resolution: - { - integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - } + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: false /jose@4.14.4: - resolution: - { - integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g== - } + resolution: {integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==} dev: false optional: true /js-cookie@3.0.5: - resolution: - { - integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} dev: false /js-sdsl@4.4.0: - resolution: - { - integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== - } + resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} dev: true /js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - } + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} /js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - } + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 /jsbn@0.1.1: - resolution: - { - integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - } + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: false /json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - } + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: false /json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - } + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} /json-schema@0.4.0: - resolution: - { - integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - } + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} dev: false /json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - } + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true /json-stringify-safe@5.0.1: - resolution: - { - integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - } + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: false /json5@1.0.2: - resolution: - { - integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - } + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: minimist: 1.2.8 dev: true /jsonpath-plus@0.19.0: - resolution: - { - integrity: sha512-GSVwsrzW9LsA5lzsqe4CkuZ9wp+kxBb2GwNniaWzI2YFn5Ig42rSW8ZxVpWXaAfakXNrx5pgY5AbQq7kzX29kg== - } - engines: { node: '>=6.0' } + resolution: {integrity: sha512-GSVwsrzW9LsA5lzsqe4CkuZ9wp+kxBb2GwNniaWzI2YFn5Ig42rSW8ZxVpWXaAfakXNrx5pgY5AbQq7kzX29kg==} + engines: {node: '>=6.0'} dev: false /jsprim@1.4.2: - resolution: - { - integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - } - engines: { node: '>=0.6.0' } + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} dependencies: assert-plus: 1.0.0 extsprintf: 1.3.0 @@ -4746,257 +3709,216 @@ packages: dev: false /jsx-ast-utils@2.4.1: - resolution: - { - integrity: sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==} + engines: {node: '>=4.0'} dependencies: array-includes: 3.1.6 object.assign: 4.1.4 dev: false /jsx-ast-utils@3.3.3: - resolution: - { - integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + engines: {node: '>=4.0'} dependencies: array-includes: 3.1.6 object.assign: 4.1.4 dev: true + /kitx@2.1.0: + resolution: {integrity: sha512-C/5v9MtIX7aHGOjwn5BmrrbNkJSf7i0R5mRzmh13GSAdRqQ7bYQo/Su2pTYNylFicqKNTVX3HML9k1u8k51+pQ==} + dependencies: + '@types/node': 12.20.55 + dev: false + /language-subtag-registry@0.3.22: - resolution: - { - integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== - } + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true /language-tags@1.0.5: - resolution: - { - integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== - } + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.22 dev: true /levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - } - engines: { node: '>= 0.8.0' } + 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 dev: true /lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - } + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false /locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + /lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - } + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true /lodash.mergewith@4.6.2: - resolution: - { - integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== - } + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: false /lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - } + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: false /loose-envify@1.4.0: - resolution: - { - integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - } + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 /lru-cache@6.0.0: - resolution: - { - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} dependencies: yallist: 4.0.0 + /memory-pager@1.5.0: + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + dev: false + optional: true + /merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - } + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} /merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} dev: true /micromatch@4.0.5: - resolution: - { - integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - } - engines: { node: '>=8.6' } + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 dev: true /mime-db@1.52.0: - resolution: - { - integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} dev: false /mime-types@2.1.35: - resolution: - { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: false /mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} /mimic-fn@4.0.0: - resolution: - { - integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} dev: true /minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - } + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 /minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - } + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true /minipass@3.3.6: - resolution: - { - integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} dependencies: yallist: 4.0.0 dev: false /minipass@5.0.0: - resolution: - { - integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} dev: false /minizlib@2.1.2: - resolution: - { - integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 yallist: 4.0.0 dev: false /mkdirp@1.0.4: - resolution: - { - integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} hasBin: true dev: false + /mongodb-connection-string-url@2.6.0: + resolution: {integrity: sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==} + dependencies: + '@types/whatwg-url': 8.2.2 + whatwg-url: 11.0.0 + dev: false + + /mongodb@5.7.0: + resolution: {integrity: sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw==} + engines: {node: '>=14.20.1'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.201.0 + '@mongodb-js/zstd': ^1.1.0 + kerberos: ^2.0.1 + mongodb-client-encryption: '>=2.3.0 <3' + snappy: ^7.2.2 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + dependencies: + bson: 5.4.0 + mongodb-connection-string-url: 2.6.0 + socks: 2.7.1 + optionalDependencies: + saslprep: 1.0.3 + dev: false + /ms@2.1.2: - resolution: - { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - } - dev: true + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} /ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - } + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true /nanoid@3.3.6: - resolution: - { - integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: false /natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - } + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true /next-i18next@13.2.2(i18next@22.4.15)(next@13.1.6)(react-i18next@12.2.2)(react@18.2.0): - resolution: - { - integrity: sha512-t0WU6K+HJoq2nVQ0n6OiiEZja9GyMqtDSU74FmOafgk4ljns+iZ18bsNJiI8rOUXfFfkW96ea1N7D5kbMyT+PA== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-t0WU6K+HJoq2nVQ0n6OiiEZja9GyMqtDSU74FmOafgk4ljns+iZ18bsNJiI8rOUXfFfkW96ea1N7D5kbMyT+PA==} + engines: {node: '>=14'} peerDependencies: i18next: ^22.0.6 next: '>= 12.0.0' @@ -5015,11 +3937,8 @@ packages: dev: false /next@13.1.6(react-dom@18.2.0)(react@18.2.0)(sass@1.62.1): - resolution: - { - integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw== - } - engines: { node: '>=14.6.0' } + resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==} + engines: {node: '>=14.6.0'} hasBin: true peerDependencies: fibers: '>= 3.1.0' @@ -5063,91 +3982,58 @@ packages: dev: false /normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} /npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: path-key: 3.1.1 /npm-run-path@5.1.0: - resolution: - { - integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 dev: true /nprogress@0.2.0: - resolution: - { - integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== - } + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} dev: false /oauth-sign@0.9.0: - resolution: - { - integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - } + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: false /object-assign@4.1.1: - resolution: - { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} /object-hash@2.2.0: - resolution: - { - integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} dev: false optional: true /object-inspect@1.12.3: - resolution: - { - integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== - } + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} /object-is@1.1.5: - resolution: - { - integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 dev: true /object-keys@1.1.1: - resolution: - { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} /object.assign@4.1.4: - resolution: - { - integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -5155,11 +4041,8 @@ packages: object-keys: 1.1.1 /object.entries@1.1.6: - resolution: - { - integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -5167,11 +4050,8 @@ packages: dev: true /object.fromentries@2.0.6: - resolution: - { - integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -5179,21 +4059,15 @@ packages: dev: true /object.hasown@1.1.2: - resolution: - { - integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== - } + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.2.0 es-abstract: 1.21.2 dev: true /object.values@1.1.6: - resolution: - { - integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -5201,47 +4075,32 @@ packages: dev: true /oidc-token-hash@5.0.3: - resolution: - { - integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw== - } - engines: { node: ^10.13.0 || >=12.0.0 } + resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} + engines: {node: ^10.13.0 || >=12.0.0} dev: false optional: true /once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - } + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 /onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 /onetime@6.0.0: - resolution: - { - integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 dev: true /open@9.1.0: - resolution: - { - integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== - } - engines: { node: '>=14.16' } + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} dependencies: default-browser: 4.0.0 define-lazy-prop: 3.0.0 @@ -5250,10 +4109,7 @@ packages: dev: true /openid-client@5.4.2: - resolution: - { - integrity: sha512-lIhsdPvJ2RneBm3nGBBhQchpe3Uka//xf7WPHTIglery8gnckvW7Bd9IaQzekzXJvWthCMyi/xVEyGW0RFPytw== - } + resolution: {integrity: sha512-lIhsdPvJ2RneBm3nGBBhQchpe3Uka//xf7WPHTIglery8gnckvW7Bd9IaQzekzXJvWthCMyi/xVEyGW0RFPytw==} requiresBuild: true dependencies: jose: 4.14.4 @@ -5264,11 +4120,8 @@ packages: optional: true /optionator@0.9.1: - resolution: - { - integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -5279,40 +4132,28 @@ packages: dev: true /p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true /p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true /parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 /parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} dependencies: '@babel/code-frame': 7.21.4 error-ex: 1.3.2 @@ -5321,74 +4162,44 @@ packages: dev: false /path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} dev: true /path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} /path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} /path-key@4.0.0: - resolution: - { - integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} dev: true /path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - } + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} /path-type@4.0.0: - resolution: - { - integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} /performance-now@2.1.0: - resolution: - { - integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - } + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: false /picocolors@1.0.0: - resolution: - { - integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - } + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} /picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - } - engines: { node: '>=8.6' } + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} /postcss@8.4.14: - resolution: - { - integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 picocolors: 1.0.0 @@ -5396,58 +4207,37 @@ packages: dev: false /prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} dev: true /prettier@2.8.8: - resolution: - { - integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} hasBin: true dev: true /prop-types@15.8.1: - resolution: - { - integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - } + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 /proxy-from-env@1.1.0: - resolution: - { - integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - } + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false /psl@1.9.0: - resolution: - { - integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - } + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: false /punycode@2.3.0: - resolution: - { - integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} /qrcode.react@3.1.0(react@18.2.0): - resolution: - { - integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q== - } + resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: @@ -5455,25 +4245,16 @@ packages: dev: false /qs@6.5.3: - resolution: - { - integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - } - engines: { node: '>=0.6' } + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} dev: false /queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - } + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true /react-activation@0.12.4(prop-types@15.8.1)(react@18.2.0): - resolution: - { - integrity: sha512-6jJtnUnQBKCrWgvHkzCJP3QZAtthnhDuoPa5LJnj1+1TxS5qkh3Z74zdNZY40wMbkTsLbo6CYoS51Fx/bTM3/w== - } + resolution: {integrity: sha512-6jJtnUnQBKCrWgvHkzCJP3QZAtthnhDuoPa5LJnj1+1TxS5qkh3Z74zdNZY40wMbkTsLbo6CYoS51Fx/bTM3/w==} peerDependencies: react: '>=16' dependencies: @@ -5487,10 +4268,7 @@ packages: dev: false /react-clientside-effect@1.2.6(react@18.2.0): - resolution: - { - integrity: sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg== - } + resolution: {integrity: sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==} peerDependencies: react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: @@ -5499,10 +4277,7 @@ packages: dev: false /react-day-picker@8.7.1(date-fns@2.30.0)(react@18.2.0): - resolution: - { - integrity: sha512-Gv426AW8b151CZfh3aP5RUGztLwHB/EyJgWZ5iMgtzbFBkjHfG6Y66CIQFMWGLnYjsQ9DYSJRmJ5S0Pg5HWKjA== - } + resolution: {integrity: sha512-Gv426AW8b151CZfh3aP5RUGztLwHB/EyJgWZ5iMgtzbFBkjHfG6Y66CIQFMWGLnYjsQ9DYSJRmJ5S0Pg5HWKjA==} peerDependencies: date-fns: ^2.28.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5512,10 +4287,7 @@ packages: dev: false /react-dom@18.2.0(react@18.2.0): - resolution: - { - integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - } + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: react: ^18.2.0 dependencies: @@ -5524,18 +4296,16 @@ packages: scheduler: 0.23.0 dev: false + /react-fast-compare@2.0.4: + resolution: {integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==} + dev: false + /react-fast-compare@3.2.1: - resolution: - { - integrity: sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg== - } + resolution: {integrity: sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==} dev: false /react-focus-lock@2.9.4(@types/react@18.0.28)(react@18.2.0): - resolution: - { - integrity: sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg== - } + resolution: {integrity: sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg==} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5554,10 +4324,7 @@ packages: dev: false /react-i18next@12.2.2(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0): - resolution: - { - integrity: sha512-KBB6buBmVKXUWNxXHdnthp+38gPyBT46hJCAIQ8rX19NFL/m2ahte2KARfIDf2tMnSAL7wwck6eDOd/9zn6aFg== - } + resolution: {integrity: sha512-KBB6buBmVKXUWNxXHdnthp+38gPyBT46hJCAIQ8rX19NFL/m2ahte2KARfIDf2tMnSAL7wwck6eDOd/9zn6aFg==} peerDependencies: i18next: '>= 19.0.0' react: '>= 16.8.0' @@ -5577,16 +4344,10 @@ packages: dev: false /react-is@16.13.1: - resolution: - { - integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - } + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} /react-node-key@0.4.0(react@18.2.0): - resolution: - { - integrity: sha512-puiuP2QYEuNBVVvcjpUE8d8/jdAhiXHBHMmjZzQT4+fe276RMYea/tY7JoZoYlrhAX8DORLPvjySjXYJZ1m6/A== - } + resolution: {integrity: sha512-puiuP2QYEuNBVVvcjpUE8d8/jdAhiXHBHMmjZzQT4+fe276RMYea/tY7JoZoYlrhAX8DORLPvjySjXYJZ1m6/A==} peerDependencies: react: '>=16' dependencies: @@ -5596,11 +4357,8 @@ packages: dev: false /react-remove-scroll-bar@2.3.4(@types/react@18.0.28)(react@18.2.0): - resolution: - { - integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5615,11 +4373,8 @@ packages: dev: false /react-remove-scroll@2.5.6(@types/react@18.0.28)(react@18.2.0): - resolution: - { - integrity: sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==} + engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5637,11 +4392,8 @@ packages: dev: false /react-style-singleton@2.2.1(@types/react@18.0.28)(react@18.2.0): - resolution: - { - integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5657,57 +4409,39 @@ packages: dev: false /react@18.2.0: - resolution: - { - integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 dev: false /readdirp@3.6.0: - resolution: - { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - } - engines: { node: '>=8.10.0' } + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 /rechoir@0.6.2: - resolution: - { - integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - } - engines: { node: '>= 0.10' } + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} dependencies: resolve: 1.22.2 dev: false /regenerator-runtime@0.13.11: - resolution: - { - integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - } + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} /regexp.prototype.flags@1.5.0: - resolution: - { - integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 functions-have-names: 1.2.3 /request@2.88.2: - resolution: - { - integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - } - engines: { node: '>= 6' } + 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 @@ -5733,17 +4467,11 @@ packages: dev: false /resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} /resolve@1.22.2: - resolution: - { - integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== - } + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: is-core-module: 2.12.0 @@ -5751,10 +4479,7 @@ packages: supports-preserve-symlinks-flag: 1.0.0 /resolve@2.0.0-next.4: - resolution: - { - integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== - } + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: is-core-module: 2.12.0 @@ -5763,98 +4488,78 @@ packages: dev: true /reusify@1.0.4: - resolution: - { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - } - engines: { iojs: '>=1.0.0', node: '>=0.10.0' } + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true /rfc4648@1.5.2: - resolution: - { - integrity: sha512-tLOizhR6YGovrEBLatX1sdcuhoSCXddw3mqNVAcKxGJ+J0hFeJ+SjeWCv5UPA/WU3YzWPPuCVYgXBKZUPGpKtg== - } + resolution: {integrity: sha512-tLOizhR6YGovrEBLatX1sdcuhoSCXddw3mqNVAcKxGJ+J0hFeJ+SjeWCv5UPA/WU3YzWPPuCVYgXBKZUPGpKtg==} dev: false /rimraf@3.0.2: - resolution: - { - integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - } + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 /run-applescript@5.0.0: - resolution: - { - integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} dependencies: execa: 5.1.1 dev: true /run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - } + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true /safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - } + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false /safe-regex-test@1.0.0: - resolution: - { - integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - } + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 is-regex: 1.1.4 /safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - } + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false + /saslprep@1.0.3: + resolution: {integrity: sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + sparse-bitfield: 3.0.3 + dev: false + optional: true + /sass@1.62.1: - resolution: - { - integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A== - } - engines: { node: '>=14.0.0' } + resolution: {integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==} + engines: {node: '>=14.0.0'} hasBin: true dependencies: chokidar: 3.5.3 immutable: 4.3.0 source-map-js: 1.0.2 + /sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + dev: false + /scheduler@0.23.0: - resolution: - { - integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - } + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 dev: false /sealos-desktop-sdk@0.1.14: - resolution: - { - integrity: sha512-CCmwDz3+jRcMqpqfUcXbxk0ErVaIM/p1hzR1rZ4Cl6BWRr9Wtw1mZIhO/you2HVSBGjt7eyTut6Sxq8zC0n76w== - } + resolution: {integrity: sha512-CCmwDz3+jRcMqpqfUcXbxk0ErVaIM/p1hzR1rZ4Cl6BWRr9Wtw1mZIhO/you2HVSBGjt7eyTut6Sxq8zC0n76w==} dependencies: axios: 1.4.0 js-cookie: 3.0.5 @@ -5864,46 +4569,31 @@ packages: dev: false /semver@6.3.0: - resolution: - { - integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - } + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true /semver@7.5.0: - resolution: - { - integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} + engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 dev: true /shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 /shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} /shelljs@0.8.5: - resolution: - { - integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} hasBin: true dependencies: glob: 7.2.3 @@ -5912,65 +4602,65 @@ packages: dev: false /side-channel@1.0.4: - resolution: - { - integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - } + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 object-inspect: 1.12.3 /signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - } + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} /size-sensor@1.0.1: - resolution: - { - integrity: sha512-QTy7MnuugCFXIedXRpUSk9gUnyNiaxIdxGfUjr8xxXOqIB3QvBUYP9+b51oCg2C4dnhaeNk/h57TxjbvoJrJUA== - } + resolution: {integrity: sha512-QTy7MnuugCFXIedXRpUSk9gUnyNiaxIdxGfUjr8xxXOqIB3QvBUYP9+b51oCg2C4dnhaeNk/h57TxjbvoJrJUA==} dev: false /slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} dev: true /slash@4.0.0: - resolution: - { - integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} dev: true + /sm3@1.0.3: + resolution: {integrity: sha512-KyFkIfr8QBlFG3uc3NaljaXdYcsbRy1KrSfc4tsQV8jW68jAktGeOcifu530Vx/5LC+PULHT0Rv8LiI8Gw+c1g==} + dev: false + + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: false + + /socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 + dev: false + /source-map-js@1.0.2: - resolution: - { - integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} /source-map@0.5.7: - resolution: - { - integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} dev: false + /sparse-bitfield@3.0.3: + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + dependencies: + memory-pager: 1.5.0 + dev: false + optional: true + /sshpk@1.17.0: - resolution: - { - integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + engines: {node: '>=0.10.0'} hasBin: true dependencies: asn1: 0.2.6 @@ -5985,28 +4675,19 @@ packages: dev: false /stop-iteration-iterator@1.0.0: - resolution: - { - integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} dependencies: internal-slot: 1.0.5 dev: true /stream-buffers@3.0.2: - resolution: - { - integrity: sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ== - } - engines: { node: '>= 0.10.0' } + resolution: {integrity: sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==} + engines: {node: '>= 0.10.0'} dev: false /string.prototype.matchall@4.0.8: - resolution: - { - integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== - } + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -6019,83 +4700,56 @@ packages: dev: true /string.prototype.trim@1.2.7: - resolution: - { - integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 /string.prototype.trimend@1.0.6: - resolution: - { - integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== - } + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 /string.prototype.trimstart@1.0.6: - resolution: - { - integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== - } + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 /strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true /strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} dev: true /strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} /strip-final-newline@3.0.0: - resolution: - { - integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} dev: true /strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} dev: true /styled-jsx@5.1.1(react@18.2.0): - resolution: - { - integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' @@ -6111,73 +4765,49 @@ packages: dev: false /stylis@4.2.0: - resolution: - { - integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== - } + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} dev: false /supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 dev: false /supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: true /supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} /synckit@0.8.5: - resolution: - { - integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== - } - engines: { node: ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.4.0 tslib: 2.5.0 dev: true /szfe-tools@0.0.0-beta.7: - resolution: - { - integrity: sha512-/M7+Tel2G8zapfDYZlz17hf9ViqAi/loZMfM81b5iZMyaWL/t5dajBszEBI2kyIDFzlLT4btBcq+BimFgmAHug== - } + resolution: {integrity: sha512-/M7+Tel2G8zapfDYZlz17hf9ViqAi/loZMfM81b5iZMyaWL/t5dajBszEBI2kyIDFzlLT4btBcq+BimFgmAHug==} dependencies: '@babel/runtime': 7.21.5 dev: false /tapable@2.2.1: - resolution: - { - integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} dev: true /tar@6.1.14: - resolution: - { - integrity: sha512-piERznXu0U7/pW7cdSn7hjqySIVTYT6F76icmFk7ptU7dDYlXTm5r9A6K04R2vU3olYgoKeo1Cg3eeu5nhftAw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-piERznXu0U7/pW7cdSn7hjqySIVTYT6F76icmFk7ptU7dDYlXTm5r9A6K04R2vU3olYgoKeo1Cg3eeu5nhftAw==} + engines: {node: '>=10'} dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -6188,86 +4818,67 @@ packages: dev: false /text-table@0.2.0: - resolution: - { - integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - } + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true /tiny-invariant@1.3.1: - resolution: - { - integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== - } + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + dev: false + + /tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} dev: false /titleize@3.0.0: - resolution: - { - integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} dev: true /tmp-promise@3.0.3: - resolution: - { - integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== - } + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} dependencies: tmp: 0.2.1 dev: false /tmp@0.2.1: - resolution: - { - integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - } - engines: { node: '>=8.17.0' } + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} dependencies: rimraf: 3.0.2 dev: false /to-fast-properties@2.0.0: - resolution: - { - integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} dev: false /to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - } - engines: { node: '>=8.0' } + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 /toggle-selection@1.0.6: - resolution: - { - integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== - } + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false /tough-cookie@2.5.0: - resolution: - { - integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - } - engines: { node: '>=0.8' } + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} dependencies: psl: 1.9.0 punycode: 2.3.0 dev: false + /tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.3.0 + dev: false + /tsconfig-paths@3.14.2: - resolution: - { - integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== - } + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -6276,38 +4887,23 @@ packages: dev: true /tslib@1.14.1: - resolution: - { - integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - } + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true /tslib@2.3.0: - resolution: - { - integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - } + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} dev: false /tslib@2.4.0: - resolution: - { - integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - } + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} dev: false /tslib@2.5.0: - resolution: - { - integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== - } + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} /tsutils@3.21.0(typescript@4.9.5): - resolution: - { - integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - } - engines: { node: '>= 6' } + 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: @@ -6316,63 +4912,42 @@ packages: dev: true /tunnel-agent@0.6.0: - resolution: - { - integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - } + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 dev: false /tweetnacl@0.14.5: - resolution: - { - integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - } + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} dev: false /type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true /type-fest@0.20.2: - resolution: - { - integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} dev: true /typed-array-length@1.0.4: - resolution: - { - integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - } + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 for-each: 0.3.3 is-typed-array: 1.1.10 /typescript@4.9.5: - resolution: - { - integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - } - engines: { node: '>=4.2.0' } + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} hasBin: true dev: true /unbox-primitive@1.0.2: - resolution: - { - integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - } + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 has-bigints: 1.0.2 @@ -6380,34 +4955,22 @@ packages: which-boxed-primitive: 1.0.2 /underscore@1.13.6: - resolution: - { - integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== - } + resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} dev: false /untildify@4.0.0: - resolution: - { - integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} dev: true /uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - } + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 /use-callback-ref@1.3.0(@types/react@18.0.28)(react@18.2.0): - resolution: - { - integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6421,11 +4984,8 @@ packages: dev: false /use-sidecar@1.1.2(@types/react@18.0.28)(react@18.2.0): - resolution: - { - integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} peerDependencies: '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6440,10 +5000,7 @@ packages: dev: false /use-sync-external-store@1.2.0(react@18.2.0): - resolution: - { - integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - } + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: @@ -6451,28 +5008,19 @@ packages: dev: false /uuid@3.4.0: - resolution: - { - integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - } + 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: false /uuid@9.0.0: - resolution: - { - integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== - } + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true dev: false /verror@1.10.0: - resolution: - { - integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - } - engines: { '0': node >=0.6.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 @@ -6480,27 +5028,31 @@ packages: dev: false /void-elements@3.1.0: - resolution: - { - integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} dev: false /warning@4.0.3: - resolution: - { - integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== - } + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} dependencies: loose-envify: 1.4.0 dev: false + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: false + + /whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: false + /which-boxed-primitive@1.0.2: - resolution: - { - integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - } + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 @@ -6509,10 +5061,7 @@ packages: is-symbol: 1.0.4 /which-collection@1.0.1: - resolution: - { - integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - } + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 is-set: 2.0.2 @@ -6521,11 +5070,8 @@ packages: dev: true /which-typed-array@1.1.9: - resolution: - { - integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 @@ -6535,35 +5081,23 @@ packages: is-typed-array: 1.1.10 /which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 /word-wrap@1.2.3: - resolution: - { - integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} dev: true /wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - } + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} /ws@7.5.9: - resolution: - { - integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - } - engines: { node: '>=8.3.0' } + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -6574,43 +5108,41 @@ packages: optional: true dev: false + /xml2js@0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + dependencies: + sax: 1.2.4 + xmlbuilder: 11.0.1 + dev: false + + /xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: false + /yallist@4.0.0: - resolution: - { - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - } + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} /yaml@1.10.2: - resolution: - { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} dev: false /yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} dev: true /zrender@5.4.3: - resolution: - { - integrity: sha512-DRUM4ZLnoaT0PBVvGBDO9oWIDBKFdAVieNWxWwK0niYzJCMwGchRk21/hsE+RKkIveH3XHCyvXcJDkgLVvfizQ== - } + resolution: {integrity: sha512-DRUM4ZLnoaT0PBVvGBDO9oWIDBKFdAVieNWxWwK0niYzJCMwGchRk21/hsE+RKkIveH3XHCyvXcJDkgLVvfizQ==} dependencies: tslib: 2.3.0 dev: false /zustand@4.3.8(immer@9.0.21)(react@18.2.0): - resolution: - { - integrity: sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg== - } - engines: { node: '>=12.7.0' } + resolution: {integrity: sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==} + engines: {node: '>=12.7.0'} peerDependencies: immer: '>=9.0' react: '>=16.8' diff --git a/frontend/providers/costcenter/public/fonts/PingFang-SC-Regular.ttf b/frontend/providers/costcenter/public/fonts/PingFang-SC-Regular.ttf deleted file mode 100644 index abe72b0a031..00000000000 Binary files a/frontend/providers/costcenter/public/fonts/PingFang-SC-Regular.ttf and /dev/null differ diff --git a/frontend/providers/costcenter/public/locales/en/common.json b/frontend/providers/costcenter/public/locales/en/common.json index 4b2a6691ec5..b423be3ac3b 100644 --- a/frontend/providers/costcenter/public/locales/en/common.json +++ b/frontend/providers/costcenter/public/locales/en/common.json @@ -8,10 +8,11 @@ "SideBar": { "CostOverview": "Cost Overview", "BillingDetails": "Billing Details", - "ValuationStandard": "Standard" + "ValuationStandard": "Standard", + "CreateInvoice": "Create Invoice" }, "Valuation": { - "Standard": "ValuationStandard", + "Standard": "Standard", "Name": "Name", "Unit": "Unit", "Price": "Price" @@ -52,13 +53,84 @@ "Cancel": "Cancel", "Not Enough Balance": "Insufficient balance, please recharge immediately.", "Insufficient Balance": "Insufficient balance", - "No Data Available":"No Data Available", - "Predict Detail":"Predict future 30-day costs based on current resource usage", - "Next month cost estimation":"Next month cost estimation", + "No Data Available": "No Data Available", + "Predict Detail": "Predict future 30-day costs based on current resource usage", + "Next month cost estimation": "Next month cost estimation", "Recipient ID": "Recipient ID", "Transfer": "Transfer", "Recipient": "Recipient", + "Transfer Success": "Transfer Success", "Transfer Amount must be a integer": "Transfer Amount must be a integer", "Recipient ID is invalid": "Recipient ID is invalid", - "Transfer Amount must be less than balance": "Transfer Amount must be less than balance" + "Transfer Amount must be less than balance": "The balance after the transfer must not be less than ¥10", + "he payee cannot be oneself": "The payee cannot be oneself", + "True Amount": "True Amount", + "Get Code":"verification", + + "orders": { + "list": "Order List", + "invoiceAmount": "Invoice Amount", + "invoice": "Generate Invoice", + "invoiceOrder": "Invoice Order", + "phoneValidation": "Please enter a valid phone number", + "taxNumberValidation": "Please enter a valid tax registration number", + "bankAccountValidation": "Please enter a valid bank account number", + "emailValidation": "Please enter a valid email address", + "submit success": "Submit success", + "submit fail": "Submit fail", + "code success":"Verification code sent successfully", + "code error":"Verification code sent failed", + "details": { + "invoiceTitle": { + "name": "Invoice Title", + "placeholder": "Enter invoice title" + }, + "taxRegistrationNumber": { + "name": "Tax Registration", + "placeholder": "Enter tax registration number" + }, + "bankName": { + "name": "Bank Name", + "placeholder": "Enter bank name" + }, + "bankAccount": { + "name": "Bank Account", + "placeholder": "Enter bank account" + }, + "address": { + "name": "Address", + "placeholder": "Enter address" + }, + "phone": { + "name": "Phone", + "placeholder": "Enter phone number" + }, + "fax": { + "name": "Fax", + "placeholder": "Enter fax number" + } + }, + "contract": { + "person": { + "name": "Contact Person", + "placeholder": "Enter contact person" + }, + "email": { + "name": "Email", + "placeholder": "Enter email address" + }, + "phone": { + "name": "Phone", + "placeholder": "Enter phone number" + }, + "code": { + "name": "Verification Code", + "placeholder": "Enter verification code" + } + }, + "Invoice Details": "Invoice Details", + "Invoice Content": "Invoice Content", + "Electronic Computer Service Fee": "Electronic Computer Service Fee", + "Contact Information": "Contact Information" + } } diff --git a/frontend/providers/costcenter/public/locales/zh/common.json b/frontend/providers/costcenter/public/locales/zh/common.json index 1c0bdb79b8a..ef637237157 100644 --- a/frontend/providers/costcenter/public/locales/zh/common.json +++ b/frontend/providers/costcenter/public/locales/zh/common.json @@ -8,7 +8,8 @@ "SideBar": { "CostOverview": "成本总览", "BillingDetails": "账单明细", - "ValuationStandard": "计价标准" + "ValuationStandard": "计价标准", + "CreateInvoice": "开具发票" }, "Valuation": { "Standard": "计价标准", @@ -52,13 +53,84 @@ "Cancel": "取消", "Not Engough Balance": "余额不足,请立即充值。", "Insufficient Balance": "余额不足", - "No Data Available":"暂无数据", - "Predict Detail":"根据当前资源用量预测未来 30 天费用", - "Next month cost estimation":"下月费用预估", + "No Data Available": "暂无数据", + "Predict Detail": "根据当前资源用量预测未来 30 天费用", + "Next month cost estimation": "下月费用预估", "Recipient ID": "收款人的ID", "Recipient": "收款", "Transfer": "转账", "Transfer Amount must be a integer": "转账金额必须为整数", "Recipient ID is invalid": "收款人ID无效", - "Transfer Amount must be less than balance": "转账金额必须小于余额" + "Transfer Amount must be less than balance": "转账后的账户余额不能小于 ¥10", + "he payee cannot be oneself": "收款人不能是本人", + "Transfer Success": "转账成功", + "True Amount": "实际金额", + "Get Code": "获取验证码", + + "orders": { + "list": "订单列表", + "invoiceAmount": "发票金额", + "invoice": "开发票", + "invoiceOrder": "发票订单", + "phoneValidation": "请输入有效的手机号码", + "taxNumberValidation": "请输入有效的税务登记证号", + "bankAccountValidation": "请输入有效的银行账号", + "emailValidation": "请输入有效的邮箱地址", + "submit success": "提交成功", + "code success":"验证码已发送", + "code error":"验证码错误", + "submit fail":"提交失败", + "details": { + "invoiceTitle": { + "name": "发票抬头", + "placeholder": "填写发票抬头" + }, + "taxRegistrationNumber": { + "name": "税务登记证号", + "placeholder": "填写税务登记证号" + }, + "bankName": { + "name": "开户银行名称", + "placeholder": "填写开户银行名称" + }, + "bankAccount": { + "name": "银行账号", + "placeholder": "填写银行账号" + }, + "address": { + "name": "地址", + "placeholder": "填写地址" + }, + "phone": { + "name": "电话", + "placeholder": "填写电话" + }, + "fax": { + "name": "传真", + "placeholder": "填写传真" + } + }, + "contract": { + "person": { + "name": "联系人", + "placeholder": "填写联系人" + }, + "email": { + "name": "邮箱", + "placeholder": "填写邮箱" + }, + "phone": { + "name": "电话", + "placeholder": "填写电话" + }, + "code": { + "name": "验证码", + "placeholder": "填写验证码" + } + }, + "Invoice Content": "发票内容", + "Electronic Computer Service Fee": "电子计算机服务费", + "Invoice Details": "发票明细", + "Contact Information": "联系方式" + } } diff --git a/frontend/providers/costcenter/src/assert/article.svg b/frontend/providers/costcenter/src/assert/article.svg new file mode 100644 index 00000000000..3f8a94ce3bd --- /dev/null +++ b/frontend/providers/costcenter/src/assert/article.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/frontend/providers/costcenter/src/assert/invoice-active.svg b/frontend/providers/costcenter/src/assert/invoice-active.svg new file mode 100644 index 00000000000..1c27cf0a341 --- /dev/null +++ b/frontend/providers/costcenter/src/assert/invoice-active.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/providers/costcenter/src/assert/invoice.svg b/frontend/providers/costcenter/src/assert/invoice.svg new file mode 100644 index 00000000000..7baf376e66d --- /dev/null +++ b/frontend/providers/costcenter/src/assert/invoice.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/providers/costcenter/src/assert/list.svg b/frontend/providers/costcenter/src/assert/list.svg new file mode 100644 index 00000000000..a4acf5093c7 --- /dev/null +++ b/frontend/providers/costcenter/src/assert/list.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/frontend/providers/costcenter/src/assert/material-symbols_expand-more-rounded.svg b/frontend/providers/costcenter/src/assert/material-symbols_expand-more-rounded.svg new file mode 100644 index 00000000000..350795ab9d2 --- /dev/null +++ b/frontend/providers/costcenter/src/assert/material-symbols_expand-more-rounded.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/providers/costcenter/src/assert/mdi_email-receive-outline.svg b/frontend/providers/costcenter/src/assert/mdi_email-receive-outline.svg new file mode 100644 index 00000000000..391b339cbce --- /dev/null +++ b/frontend/providers/costcenter/src/assert/mdi_email-receive-outline.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/providers/costcenter/src/components/billing/billingTable.tsx b/frontend/providers/costcenter/src/components/billing/billingTable.tsx index c0eff827380..c161c5b9d3b 100644 --- a/frontend/providers/costcenter/src/components/billing/billingTable.tsx +++ b/frontend/providers/costcenter/src/components/billing/billingTable.tsx @@ -8,7 +8,6 @@ import { formatMoney } from '@/utils/format'; import { useTranslation } from 'next-i18next'; export function BillingTable({ data }: { data: BillingItem[] }) { const { t } = useTranslation(); - return ( diff --git a/frontend/providers/costcenter/src/components/billing/selectDateRange.tsx b/frontend/providers/costcenter/src/components/billing/selectDateRange.tsx index e1926d5b3b2..62145c20bcb 100644 --- a/frontend/providers/costcenter/src/components/billing/selectDateRange.tsx +++ b/frontend/providers/costcenter/src/components/billing/selectDateRange.tsx @@ -10,7 +10,17 @@ import { Button, Box } from '@chakra-ui/react'; -import { format, parse, isValid, isAfter, isBefore } from 'date-fns'; +import { + format, + parse, + isValid, + isAfter, + isBefore, + addDays, + subSeconds, + endOfDay, + startOfDay +} from 'date-fns'; import { useState, ChangeEventHandler, useMemo } from 'react'; import { DateRange, SelectRangeEventHandler, DayPicker } from 'react-day-picker'; @@ -24,8 +34,8 @@ export default function SelectRange({ isDisabled }: { isDisabled: boolean | unde const [fromValue, setFromValue] = useState(format(initState.from, 'y-MM-dd')); const [toValue, setToValue] = useState(format(initState.to, 'y-MM-dd')); const onClose = () => { - selectedRange.from && setStartTime(selectedRange.from); - selectedRange.to && setEndTime(selectedRange.to); + selectedRange.from && setStartTime(startOfDay(selectedRange.from)); + selectedRange.to && setEndTime(endOfDay(selectedRange.to)); }; const handleFromChange: ChangeEventHandler = (e) => { setFromValue(e.target.value); @@ -87,7 +97,11 @@ export default function SelectRange({ isDisabled }: { isDisabled: boolean | unde variant={'unstyled'} flex={1} value={fromValue} + minW="90px" onChange={handleFromChange} + onBlur={() => { + selectedRange.from && setStartTime(startOfDay(selectedRange.from)); + }} /> - { + selectedRange.to && setEndTime(endOfDay(selectedRange.to)); + }} /> diff --git a/frontend/providers/costcenter/src/hooks/useRecharge.tsx b/frontend/providers/costcenter/src/components/cost_overview/components/RechargeModal.tsx similarity index 93% rename from frontend/providers/costcenter/src/hooks/useRecharge.tsx rename to frontend/providers/costcenter/src/components/cost_overview/components/RechargeModal.tsx index ea23fd1c296..59bfe848735 100644 --- a/frontend/providers/costcenter/src/hooks/useRecharge.tsx +++ b/frontend/providers/costcenter/src/components/cost_overview/components/RechargeModal.tsx @@ -20,7 +20,16 @@ import { } from '@chakra-ui/react'; import { useMutation, useQuery } from '@tanstack/react-query'; import { QRCodeSVG } from 'qrcode.react'; -import { useCallback, useMemo, useState } from 'react'; +import { + forwardRef, + memo, + useCallback, + useEffect, + useImperativeHandle, + useMemo, + useRef, + useState +} from 'react'; import wechat_icon from '@/assert/ic_baseline-wechat.svg'; import vector from '@/assert/Vector.svg'; import { deFormatMoney, formatMoney } from '@/utils/format'; @@ -30,17 +39,34 @@ import { ApiResp } from '@/types/api'; import { Pay, Payment } from '@/types/payment'; import OuterLink from '@/components/outerLink'; -function useRecharge(props: { - onPaySuccess?: () => void; - onPayError?: () => void; - onCreatedSuccess?: () => void; - onCreatedError?: () => void; - onCancel?: () => void; -}) { - const { t } = useTranslation(); - const { isOpen, onOpen, onClose: _onClose } = useDisclosure(); +const RechargeModal = forwardRef( + ( + props: { + onPaySuccess?: () => void; + onPayError?: () => void; + onCreatedSuccess?: () => void; + onCreatedError?: () => void; + onCancel?: () => void; + balance: number; + }, + ref + ) => { + const balance = props.balance || 0; + const { t } = useTranslation(); + const { isOpen, onOpen, onClose: _onClose } = useDisclosure(); + useImperativeHandle( + ref, + () => ({ + onOpen: () => { + onOpen(); + }, + onClose: () => { + onClose(); + } + }), + [] + ); - const RechargeModal = ({ balance }: { balance: number }) => { const [step, setStep] = useState(1); // 整个流程跑通需要状态管理, 0 初始态, 1 创建支付单, 2 支付中, 3 支付成功 @@ -86,6 +112,8 @@ function useRecharge(props: { { refetchInterval: complete === 2 ? 1000 : false, enabled: complete === 2, + cacheTime: 0, + staleTime: 0, onSuccess(data) { setTimeout(() => { if (data?.data?.status === 'SUCCESS') { @@ -140,6 +168,13 @@ function useRecharge(props: { }, [isSuccess, ratios, steps] ); + + useEffect(() => { + if (steps && steps.length > 0) { + setAmount(steps[0]); + } + }, [steps]); + const handleConfirm = () => { setComplete(1); createPaymentRes.mutate(); @@ -426,11 +461,9 @@ function useRecharge(props: { ); - }; + } +); + +RechargeModal.displayName = 'RechargeModal'; - return { - RechargeModal, - onOpen - }; -} -export default useRecharge; +export default RechargeModal; diff --git a/frontend/providers/costcenter/src/components/cost_overview/components/TransferModal.tsx b/frontend/providers/costcenter/src/components/cost_overview/components/TransferModal.tsx new file mode 100644 index 00000000000..3b74a4b2f22 --- /dev/null +++ b/frontend/providers/costcenter/src/components/cost_overview/components/TransferModal.tsx @@ -0,0 +1,257 @@ +import request from '@/service/request'; +import { + Button, + Flex, + Img, + Input, + Modal, + ModalCloseButton, + ModalContent, + ModalHeader, + ModalOverlay, + NumberDecrementStepper, + NumberIncrementStepper, + NumberInput, + NumberInputField, + NumberInputStepper, + Spinner, + Text, + useDisclosure, + useToast +} from '@chakra-ui/react'; +import { useMutation } from '@tanstack/react-query'; +import { forwardRef, useImperativeHandle, useState } from 'react'; +import vector from '@/assert/Vector.svg'; +import { deFormatMoney, formatMoney } from '@/utils/format'; +import { useTranslation } from 'next-i18next'; +import { ApiResp } from '@/types/api'; +import { TransferState, transferStatus } from '@/types/Transfer'; + +const TransferModal = forwardRef( + ( + props: { + onTransferSuccess?: () => void; + onTransferError?: () => void; + onCancel?: () => void; + balance: number; + k8s_username: string; + }, + ref + ) => { + useImperativeHandle( + ref, + () => ({ + onOpen: () => { + onOpen(); + }, + onClose: () => { + onClose(); + } + }), + [] + ); + const { t } = useTranslation(); + const { isOpen, onOpen, onClose: _onClose } = useDisclosure(); + const [to, setTo] = useState(''); + const toast = useToast(); + const balance = props.balance; + const mutation = useMutation( + () => + request.post>('/api/account/transfer', { + amount: deFormatMoney(amount), + to + }), + { + onSuccess(data) { + mutation.reset(); + setTo(''); + setAmount(0); + props.onTransferSuccess?.(); + if (data.data?.status.progress === TransferState.TransferStateFailed) + toast({ + status: 'error', + title: data.data?.status.reason, + isClosable: true, + position: 'top' + }); + else { + toast({ + status: 'success', + title: t('Transfer Success'), + isClosable: true, + duration: 2000, + position: 'top' + }); + _onClose(); + } + }, + onError(err: any) { + toast({ + status: 'error', + title: err?.message || '', + isClosable: true, + position: 'top' + }); + props.onTransferError?.(); + } + } + ); + + const verify = () => { + let trim_to = to.trim(); + if (!trim_to || trim_to.length < 6) { + toast({ + status: 'error', + title: t('Recipient ID is invalid'), + isClosable: true, + position: 'top' + }); + return false; + } + if ( + (trim_to !== props.k8s_username && trim_to.replace('ns-', '') === props.k8s_username) || + trim_to === props.k8s_username + ) { + toast({ + status: 'error', + title: t('The payee cannot be oneself'), + isClosable: true, + position: 'top' + }); + return false; + } + // amount 必须是整数 + if (!Number.isInteger(amount)) { + toast({ + status: 'error', + title: t('Transfer Amount must be a integer'), + isClosable: true, + position: 'top' + }); + return false; + } + if (deFormatMoney(amount + 10) > balance) { + toast({ + status: 'error', + title: t('Transfer Amount must be less than balance'), + isClosable: true, + position: 'top' + }); + return false; + } + + return true; + }; + const onClose = () => { + _onClose(); + }; + + const [amount, setAmount] = useState(() => 0); + + const handleConfirm = () => { + if (!verify()) return; + mutation.mutate(); + }; + return ( + + + + + + {t('Transfer Amount')} + + + + {t('Recipient ID')} + { + e.preventDefault(); + setTo(e.target.value.trim()); + }} + isDisabled={mutation.isLoading} + /> + {t('Transfer Amount')} + (str.trim() ? setAmount(v) : setAmount(0))} + isDisabled={mutation.isLoading} + > + ¥ + + + + + + + + + + + + + {t('Balance')} + + + ¥ {formatMoney(balance).toFixed(2)} + + + + + + + ); + } +); +TransferModal.displayName = 'TransferModal'; +export default TransferModal; diff --git a/frontend/providers/costcenter/src/components/cost_overview/components/user.tsx b/frontend/providers/costcenter/src/components/cost_overview/components/user.tsx index 7d4ccd917ce..5d2ca1e90d8 100644 --- a/frontend/providers/costcenter/src/components/cost_overview/components/user.tsx +++ b/frontend/providers/costcenter/src/components/cost_overview/components/user.tsx @@ -1,20 +1,33 @@ /* eslint-disable @next/next/no-img-element */ -import useRecharge from '@/hooks/useRecharge'; import request from '@/service/request'; import useSessionStore from '@/stores/session'; import { displayMoney, formatMoney } from '@/utils/format'; import { Box, Button, Flex, Image, Stack, Text } from '@chakra-ui/react'; -import { QueryClient, useQuery } from '@tanstack/react-query'; +import { QueryClient, useIsFetching, useQuery } from '@tanstack/react-query'; import styles from './user.module.scss'; import { useTranslation } from 'next-i18next'; -import { useContext, useMemo } from 'react'; +import { memo, useContext, useMemo, useRef } from 'react'; import { ApiResp } from '@/types/api'; -import useTransfer from '@/hooks/useTransfer'; -import { TradeEnableContext } from '@/pages/cost_overview'; +import jsyaml from 'js-yaml'; +import RechargeModal from './RechargeModal'; +import TransferModal from './TransferModal'; +import useEnvStore from '@/stores/env'; -export default function UserCard() { - const { transferEnabled, rechargeEnabled } = useContext(TradeEnableContext); +export default memo(function UserCard() { + const getSession = useSessionStore((state) => state.getSession); + const transferEnabled = useEnvStore((state) => state.transferEnabled); + const rechargeEnabled = useEnvStore((state) => state.rechargeEnabled); + const { kubeconfig } = getSession(); + const k8s_username = useMemo(() => { + try { + let temp = jsyaml.load(kubeconfig); + // @ts-ignore + return temp?.users[0]?.name; + } catch (error) { + return ''; + } + }, [kubeconfig]); const { t } = useTranslation(); const session = useSessionStore().getSession(); const { data: balance_raw, refetch } = useQuery({ @@ -22,26 +35,16 @@ export default function UserCard() { queryFn: () => request>('/api/account/getAmount') }); + + const rechargeRef = useRef(); + const transferRef = useRef(); const queryClient = new QueryClient(); - const { RechargeModal, onOpen } = useRecharge({ - onPaySuccess: () => { - queryClient.invalidateQueries({ queryKey: ['billing'], exact: false }); - refetch(); - } - }); - const { TransferModal, onOpen: transferOpen } = useTransfer({ - onTransferSuccess: () => { - queryClient.invalidateQueries({ queryKey: ['billing'], exact: false }); - refetch(); - } - }); - const balance = useMemo(() => { - let real_balance = balance_raw?.data?.balance || 0; - if (balance_raw?.data?.deductionBalance) { - real_balance -= balance_raw?.data.deductionBalance; - } - return real_balance; - }, [balance_raw]); + + let real_balance = balance_raw?.data?.balance || 0; + if (balance_raw?.data?.deductionBalance) { + real_balance -= balance_raw?.data.deductionBalance; + } + const balance = real_balance; return ( <> { e.preventDefault(); - transferOpen(); + transferRef?.current!.onOpen(); }} + // isDisabled={isFetchingBilling > 0} > {t('Transfer')} @@ -97,7 +101,7 @@ export default function UserCard() { color="black" onClick={(e) => { e.preventDefault(); - onOpen(); + rechargeRef?.current!.onOpen(); }} > {t('Charge')} @@ -106,8 +110,27 @@ export default function UserCard() { - {rechargeEnabled && } - {transferEnabled && } + { + { + queryClient.invalidateQueries({ queryKey: ['billing'], exact: false }); + refetch(); + }} + /> + } + {transferEnabled && ( + { + queryClient.invalidateQueries({ queryKey: ['billing'], exact: false }); + refetch(); + }} + k8s_username={k8s_username} + /> + )} ); -} +}); diff --git a/frontend/providers/costcenter/src/components/invoice/invoiceTable.tsx b/frontend/providers/costcenter/src/components/invoice/invoiceTable.tsx new file mode 100644 index 00000000000..3a8e112d309 --- /dev/null +++ b/frontend/providers/costcenter/src/components/invoice/invoiceTable.tsx @@ -0,0 +1,67 @@ +import { InvoiceTableHeaders, TableHeaders } from '@/constants/billing'; +import { Checkbox, Flex, Table, TableContainer, Tbody, Td, Th, Thead, Tr } from '@chakra-ui/react'; +import { format } from 'date-fns'; +import { useTranslation } from 'next-i18next'; +import { ReqGenInvoice } from '@/types'; + +export function InvoiceTable({ + data, + selectbillings, + onSelect +}: { + data: ReqGenInvoice['billings']; + selectbillings: ReqGenInvoice['billings']; + onSelect?: (type: boolean, item: ReqGenInvoice['billings'][0]) => void; +}) { + const { t } = useTranslation(); + const needSelect = !!onSelect; + return ( + +
+ + + {InvoiceTableHeaders?.map((item) => ( + + ))} + + + + {data.map((item) => ( + + + + + + ))} + +
+ {t(item)} +
+ + {needSelect && ( + b.order_id).includes(item.order_id)} + onChange={(v) => { + onSelect(v.target.checked, item); + }} + mr="13px" + w="12px" + h="12px" + /> + )} + {item.order_id} + + {format(item.createdTime, 'MM-dd HH:mm')}{'¥' + item.amount}
+
+ ); +} diff --git a/frontend/providers/costcenter/src/constants/billing.ts b/frontend/providers/costcenter/src/constants/billing.ts index d56f8853534..9095c96b694 100644 --- a/frontend/providers/costcenter/src/constants/billing.ts +++ b/frontend/providers/costcenter/src/constants/billing.ts @@ -7,6 +7,13 @@ export const TableHeaders = [ 'Local Disk', 'Total Amount' ]; +export const InvoiceTableHeaders = [ + 'Order Number', + 'Transaction Time', + // 'Amount', + // 'Bounce Amount', + 'True Amount' +]; export const CATEGORY = ['CPU', 'Memory', 'Local Disk']; export const INITAL_SOURCE = [['date', 'cpu', 'memory', 'storage', 'amount']] as const; export const LIST_TYPE: { title: string; value: -1 | 0 | 1 | 2 | 3 }[] = [ diff --git a/frontend/providers/costcenter/src/constants/payment.ts b/frontend/providers/costcenter/src/constants/payment.ts index 26730314ebe..0ddde3a773b 100644 --- a/frontend/providers/costcenter/src/constants/payment.ts +++ b/frontend/providers/costcenter/src/constants/payment.ts @@ -1,6 +1,6 @@ import * as yaml from 'js-yaml'; import { CRDMeta } from '@/types/crd'; -import { getMonth, getTime, getYear } from 'date-fns'; +import { endOfDay, getMonth, getTime, getYear } from 'date-fns'; export type PaymentForm = { paymentName: string; namespace: string; @@ -45,11 +45,13 @@ export const generatePaymentCrd = (form: PaymentForm) => { export const generateTransferCrd = ({ to, + from, amount, namespace, name }: { to: string; + from: string; amount: number; namespace: string; name: string; @@ -63,7 +65,8 @@ export const generateTransferCrd = ({ }, spec: { to, - amount + amount, + from } }; @@ -82,7 +85,7 @@ export const NOW_YEAR = getYear(new Date()); export const NOW_MONTH = getMonth(new Date()); export const NOW_WEEK = 0; export const START_TIME = new Date(2023, 0, 1); -export const END_TIME = new Date(); +export const END_TIME = endOfDay(new Date()); export const valuationMap = new Map([ ['cpu', { unit: 'Core', scale: 1000, bg: '#33BABB', idx: 0 }], ['memory', { unit: 'GiB', scale: 1024, bg: '#36ADEF', idx: 1 }], diff --git a/frontend/providers/costcenter/src/hooks/useBillingData.tsx b/frontend/providers/costcenter/src/hooks/useBillingData.tsx index 683f5f55e75..3c4b2a4183a 100644 --- a/frontend/providers/costcenter/src/hooks/useBillingData.tsx +++ b/frontend/providers/costcenter/src/hooks/useBillingData.tsx @@ -5,7 +5,7 @@ import { BillingSpec, BillingData } from '@/types/billing'; import { useQuery } from '@tanstack/react-query'; import { addDays, differenceInDays, formatISO, subSeconds } from 'date-fns'; -export default function useBillingData() { +export default function useBillingData(props?: { type: -1 | 0 | 1 | 2 | 3 }) { const startTime = useOverviewStore((state) => state.startTime); const endTime = useOverviewStore((state) => state.endTime); return useQuery(['billing', { startTime, endTime }], () => { @@ -17,7 +17,7 @@ export default function useBillingData() { endTime: formatISO(end, { representation: 'complete' }), page: 1, pageSize: (delta + 1) * 48, - type: -1, + type: props?.type || -1, orderID: '' }; return request, { spec: BillingSpec }>('/api/billing', { diff --git a/frontend/providers/costcenter/src/hooks/useCustomToast.tsx b/frontend/providers/costcenter/src/hooks/useCustomToast.tsx new file mode 100644 index 00000000000..4e495239b2b --- /dev/null +++ b/frontend/providers/costcenter/src/hooks/useCustomToast.tsx @@ -0,0 +1,13 @@ +import { useToast as uToast, UseToastOptions } from '@chakra-ui/react'; + +export const useCustomToast = (props?: UseToastOptions) => { + const toast = uToast({ + position: 'top', + duration: 2000, + ...props + }); + + return { + toast + }; +}; diff --git a/frontend/providers/costcenter/src/hooks/useTransfer.tsx b/frontend/providers/costcenter/src/hooks/useTransfer.tsx deleted file mode 100644 index 3e875b79b90..00000000000 --- a/frontend/providers/costcenter/src/hooks/useTransfer.tsx +++ /dev/null @@ -1,221 +0,0 @@ -import request from '@/service/request'; -import { - Button, - Flex, - Img, - Input, - Modal, - ModalCloseButton, - ModalContent, - ModalHeader, - ModalOverlay, - NumberDecrementStepper, - NumberIncrementStepper, - NumberInput, - NumberInputField, - NumberInputStepper, - Spinner, - Text, - useDisclosure, - useToast -} from '@chakra-ui/react'; -import { useMutation } from '@tanstack/react-query'; -import { useState } from 'react'; -import vector from '@/assert/Vector.svg'; -import { deFormatMoney, formatMoney } from '@/utils/format'; -import { useTranslation } from 'next-i18next'; -import { ApiResp } from '@/types/api'; -import { TransferState, transferStatus } from '@/types/Transfer'; -import { de } from 'date-fns/locale'; - -function useTransfer(props: { - onTransferSuccess?: () => void; - onTransferError?: () => void; - onCancel?: () => void; -}) { - const { t } = useTranslation(); - const { isOpen, onOpen, onClose: _onClose } = useDisclosure(); - - const TransferModal = ({ balance }: { balance: number }) => { - const [to, setTo] = useState(''); - const toast = useToast(); - const mutation = useMutation( - () => - request.post>('/api/account/transfer', { - amount: deFormatMoney(amount), - to - }), - { - onSuccess(data) { - mutation.reset(); - setTo(''); - setAmount(0); - props.onTransferSuccess?.(); - data.data?.status.progress === TransferState.TransferStateFailed && - toast({ - status: 'error', - title: data.data?.status.reason, - isClosable: true, - position: 'top' - }); - }, - onError(err: any) { - toast({ - status: 'error', - title: err?.message || '', - isClosable: true, - position: 'top' - }); - props.onTransferError?.(); - } - } - ); - const verify = () => { - if (!to.trim() || to.trim().length < 6) { - toast({ - status: 'error', - title: t('Recipient ID is invalid'), - isClosable: true, - position: 'top' - }); - return false; - } - // amount 必须是整数 - if (!Number.isInteger(amount)) { - toast({ - status: 'error', - title: t('Transfer Amount must be a integer'), - isClosable: true, - position: 'top' - }); - return false; - } - if (deFormatMoney(amount + 10) > balance) { - toast({ - status: 'error', - title: t('Transfer Amount must be less than balance'), - isClosable: true, - position: 'top' - }); - return false; - } - return true; - }; - const onClose = () => { - _onClose(); - }; - - const [amount, setAmount] = useState(() => 0); - - const handleConfirm = () => { - if (!verify()) return; - mutation.mutate(); - }; - return ( - - - - - - {t('Transfer Amount')} - - - {mutation.isLoading ? ( - - ) : ( - - {t('Recipient ID')} - { - e.preventDefault(); - setTo(e.target.value.trim()); - }} - /> - {t('Transfer Amount')} - (str.trim() ? setAmount(v) : setAmount(0))} - > - ¥ - - - - - - - - - - - - - {t('Balance')} - - - ¥ {formatMoney(balance).toFixed(2)} - - - - - )} - - - ); - }; - - return { - TransferModal, - onOpen - }; -} -export default useTransfer; diff --git a/frontend/providers/costcenter/src/layout/sidebar.tsx b/frontend/providers/costcenter/src/layout/sidebar.tsx index e0d2cf10319..664cf2d613c 100644 --- a/frontend/providers/costcenter/src/layout/sidebar.tsx +++ b/frontend/providers/costcenter/src/layout/sidebar.tsx @@ -6,8 +6,12 @@ import letter_icon from '@/assert/format_letter_spacing_standard.svg'; import letter_a_icon from '@/assert/format_letter_spacing_standard_black.svg'; import receipt_icon from '@/assert/receipt_long.svg'; import receipt_a_icon from '@/assert/receipt_long_black.svg'; +import invoice_icon from '@/assert/invoice.svg'; +import invoice_a_icon from '@/assert/invoice-active.svg'; import type { StaticImageData } from 'next/image'; import { useTranslation } from 'next-i18next'; +import { useEffect } from 'react'; +import useEnvStore from '@/stores/env'; type Menu = { id: string; @@ -15,68 +19,82 @@ type Menu = { value: string; icon: StaticImageData; aicon: StaticImageData; + display: boolean; }; export default function SideBar() { const router = useRouter(); const { t, ready } = useTranslation(); - + const invoiceEnabled = useEnvStore((state) => state.invoiceEnabled); const menus: Menu[] = [ { id: 'CostOverview', url: '/cost_overview', value: 'SideBar.CostOverview', icon: bar_icon, - aicon: bar_a_icon + aicon: bar_a_icon, + display: true }, { id: 'BillingDetails', url: '/billing', value: 'SideBar.BillingDetails', icon: receipt_icon, - aicon: receipt_a_icon + aicon: receipt_a_icon, + display: true }, { id: 'ValuationStandard', url: '/valuation', value: 'SideBar.ValuationStandard', icon: letter_icon, - aicon: letter_a_icon + aicon: letter_a_icon, + display: true + }, + { + id: 'CreateInvoice', + url: '/create_invoice', + value: 'SideBar.CreateInvoice', + icon: invoice_icon, + aicon: invoice_a_icon, + display: invoiceEnabled } ]; return ( {ready && - menus.map((item) => { - return ( - { - router.push(item.url); - }} - as="button" - > - - icon of module - - item.display) + .map((item) => { + return ( + { + router.push(item.url); + }} + as="button" > - {t(item.value)} - - - ); - })} + + icon of module + + + {t(item.value)} + + + ); + })}
); } diff --git a/frontend/providers/costcenter/src/pages/_app.tsx b/frontend/providers/costcenter/src/pages/_app.tsx index 93a7d66b9ee..9e636fcd44a 100644 --- a/frontend/providers/costcenter/src/pages/_app.tsx +++ b/frontend/providers/costcenter/src/pages/_app.tsx @@ -6,9 +6,8 @@ import '@/styles/globals.scss'; import { ChakraProvider } from '@chakra-ui/react'; import { persistQueryClient, removeOldestQuery } from '@tanstack/react-query-persist-client'; import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister'; -import { Hydrate, QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { AppProps } from 'next/app'; -import Fonts from '@/styles/fonts'; import Router from 'next/router'; import NProgress from 'nprogress'; import 'nprogress/nprogress.css'; @@ -16,6 +15,10 @@ import 'react-day-picker/dist/style.css'; import { appWithTranslation, i18n } from 'next-i18next'; import { useEffect } from 'react'; import { setCookie } from '@/utils/cookieUtils'; +import request from '@/service/request'; +import { EnvData } from '@/types/env'; +import { ApiResp } from '@/types/api'; +import useEnvStore from '@/stores/env'; const queryClient = new QueryClient({ defaultOptions: { @@ -43,6 +46,7 @@ Router.events.on('routeChangeComplete', () => NProgress.done()); Router.events.on('routeChangeError', () => NProgress.done()); const App = ({ Component, pageProps }: AppProps) => { + const state = useEnvStore(); useEffect(() => { const changeI18n = (data: any) => { setCookie('NEXT_LOCALE', data.currentLanguage, { @@ -63,6 +67,16 @@ const App = ({ Component, pageProps }: AppProps) => { changeI18n('zh'); } })(); + (async () => { + try { + const { data } = await request>('/api/enabled'); + state.setInvoiceEnabled(!!data?.invoiceEnabled); + state.setTransferEnabled(!!data?.transferEnabled); + state.setRechargeEnabled(!!data?.rechargeEnabled); + } catch (error) { + console.error('get env error'); + } + })(); sealosApp.addAppEventListen(EVENT_NAME.CHANGE_I18N, changeI18n); return () => { sealosApp.removeAppEventListen(EVENT_NAME.CHANGE_I18N); @@ -72,7 +86,6 @@ const App = ({ Component, pageProps }: AppProps) => { return ( - diff --git a/frontend/providers/costcenter/src/pages/api/account/transfer.ts b/frontend/providers/costcenter/src/pages/api/account/transfer.ts index e7cf4fcfcd1..af42628c623 100644 --- a/frontend/providers/costcenter/src/pages/api/account/transfer.ts +++ b/frontend/providers/costcenter/src/pages/api/account/transfer.ts @@ -40,7 +40,8 @@ export default async function handler(req: NextApiRequest, resp: NextApiResponse to, amount, namespace, - name + name, + from: kubeUser.name }); await ApplyYaml(kc, transferCRD); const body = (await watchClusterObject({ diff --git a/frontend/providers/costcenter/src/pages/api/enabled.ts b/frontend/providers/costcenter/src/pages/api/enabled.ts new file mode 100644 index 00000000000..ec80ca7e2c4 --- /dev/null +++ b/frontend/providers/costcenter/src/pages/api/enabled.ts @@ -0,0 +1,23 @@ +import { enableInvoice, enableRecharge, enableTransfer } from '@/service/enabled'; +import { jsonRes } from '@/service/backend/response'; +import { NextApiRequest, NextApiResponse } from 'next'; +import { EnvData } from '@/types/env'; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + try { + return jsonRes(res, { + data: { + rechargeEnabled: enableRecharge(), + transferEnabled: enableTransfer(), + invoiceEnabled: enableInvoice() + }, + code: 200 + }); + } catch (error) { + console.log(error); + jsonRes(res, { + message: 'Failed to send code', + code: 500 + }); + } +} diff --git a/frontend/providers/costcenter/src/pages/api/invoice/billings.ts b/frontend/providers/costcenter/src/pages/api/invoice/billings.ts new file mode 100644 index 00000000000..562bac94e33 --- /dev/null +++ b/frontend/providers/costcenter/src/pages/api/invoice/billings.ts @@ -0,0 +1,32 @@ +import { NextApiRequest, NextApiResponse } from 'next'; +import { jsonRes } from '@/service/backend/response'; +import { authSession } from '@/service/backend/auth'; +import { getAllInvoicesByK8sUser } from '@/service/backend/db/invoice'; +import { enableInvoice } from '@/service/enabled'; +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + try { + if (!enableInvoice()) { + throw new Error('invoice is not enabled'); + } + const kc = await authSession(req.headers); + const user = kc.getCurrentUser(); + if (user === null) { + return jsonRes(res, { code: 401, message: 'user null' }); + } + const invoices = await getAllInvoicesByK8sUser({ k8s_user: user.name }); + + return jsonRes(res, { + message: 'successfully', + data: { + billings: invoices.flatMap((invoice) => invoice.billings.map((billing) => billing.order_id)) + }, + code: 200 + }); + } catch (error) { + console.log(error); + jsonRes(res, { + message: 'Failed to get billings', + code: 500 + }); + } +} diff --git a/frontend/providers/costcenter/src/pages/api/invoice/sms.ts b/frontend/providers/costcenter/src/pages/api/invoice/sms.ts new file mode 100644 index 00000000000..a8d67fd11be --- /dev/null +++ b/frontend/providers/costcenter/src/pages/api/invoice/sms.ts @@ -0,0 +1,91 @@ +import { NextApiRequest, NextApiResponse } from 'next'; +// import twilio from 'twilio'; +//@ts-ignore +import Dysmsapi, * as dysmsapi from '@alicloud/dysmsapi20170525'; +//@ts-ignore +import * as OpenApi from '@alicloud/openapi-client'; +//@ts-ignore +import * as Util from '@alicloud/tea-util'; +import { jsonRes } from '@/service/backend/response'; +import { addOrUpdateCode, checkSendable } from '@/service/backend/db/verifyCode'; +import { retrySerially } from '@/utils/tools'; +import { authSession } from '@/service/backend/auth'; +import { enableInvoice } from '@/service/enabled'; +const accessKeyId = process.env.ALI_ACCESS_KEY_ID; +const accessKeySecret = process.env.ALI_ACCESS_KEY_SECRET; +const templateCode = process.env.ALI_TEMPLATE_CODE; +const signName = process.env.ALI_SIGN_NAME; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + try { + if (!enableInvoice()) { + throw new Error('invoice is not enabled'); + } + const kc = await authSession(req.headers); + const user = kc.getCurrentUser(); + if (user === null) { + return jsonRes(res, { code: 401, message: 'user null' }); + } + const { phoneNumbers } = req.body; + if (!(await checkSendable(phoneNumbers))) { + return jsonRes(res, { + message: 'code already sent', + code: 400 + }); + } + + // randomly generate six bit check code + const code = Math.floor(Math.random() * 900000 + 100000).toString(); + const sendSmsRequest = new dysmsapi.SendSmsRequest({ + phoneNumbers, + signName, + templateCode, + templateParam: `{"code":${code}}` + }); + const config = new OpenApi.Config({ + accessKeyId, + accessKeySecret + }); + + const client = new Dysmsapi(config); + const runtime = new Util.RuntimeOptions({}); + await retrySerially(async () => { + try { + const _result = await client.sendSmsWithOptions(sendSmsRequest, runtime); + + if (!_result) { + throw new Error('sms result is null'); + } + if (_result.statusCode !== 200) { + throw new Error(`sms result status code is ${_result.statusCode} + ${_result.body} + ${phoneNumbers}, + ${new Date()} + `); + } + if (_result.body.code !== 'OK') { + throw new Error(` + ${_result.body.message} + ${phoneNumbers}, + ${new Date()}`); + } + return _result; + } catch (error) { + return Promise.reject(error); + } + }, 3); + + // update cache + await addOrUpdateCode({ phone: phoneNumbers, code }); + return jsonRes(res, { + message: 'successfully', + code: 200 + }); + } catch (error) { + console.log(error); + jsonRes(res, { + message: 'Failed to send code', + code: 500 + }); + } +} diff --git a/frontend/providers/costcenter/src/pages/api/invoice/verify.ts b/frontend/providers/costcenter/src/pages/api/invoice/verify.ts new file mode 100644 index 00000000000..abfc96939be --- /dev/null +++ b/frontend/providers/costcenter/src/pages/api/invoice/verify.ts @@ -0,0 +1,116 @@ +import { NextApiRequest, NextApiResponse } from 'next'; +import { jsonRes } from '@/service/backend/response'; +import { checkCode } from '@/service/backend/db/verifyCode'; +import { addInvoice } from '@/service/backend/db/invoice'; +import { ReqGenInvoice } from '@/types'; +import { authSession } from '@/service/backend/auth'; +import { sendToBot } from '@/service/sendToBot'; +import { + isValidBANKAccount, + isValidCNTaxNumber, + isValidEmail, + isValidPhoneNumber, + retrySerially +} from '@/utils/tools'; +import { enableInvoice } from '@/service/enabled'; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + try { + if (!enableInvoice()) { + throw new Error('invoice is not enabled'); + } + const kc = await authSession(req.headers); + + // get user account payment amount + const user = kc.getCurrentUser(); + if (user === null) { + return jsonRes(res, { code: 401, message: 'user null' }); + } + const { detail, contract, billings } = req.body as ReqGenInvoice; + if ( + !detail || + !contract || + !billings || + !isValidPhoneNumber(contract.phone) || + !isValidCNTaxNumber(detail.tax) || + !isValidBANKAccount(detail.bankAccount) || + !isValidEmail(contract.email) + ) { + return jsonRes(res, { + data: { + status: false + }, + message: 'The content is invalid', + code: 400 + }); + } + if ( + process.env.NODE_ENV !== 'development' && + !(await checkCode({ phone: contract.phone, code: contract.code })) + ) { + return jsonRes(res, { + data: { + status: false + }, + message: 'The code is wrong', + code: 400 + }); + } + if (!(billings.length > 0)) { + return jsonRes(res, { + data: { + status: false + }, + message: 'The amount of billing must more than 0', + code: 400 + }); + } + const document = { + k8s_user: user.name, + detail, + contract, + billings: billings.map((item) => ({ + ...item, + createdTime: new Date(item.createdTime) + })) + }; + + const result = await addInvoice(document); + if (!result.acknowledged) { + return jsonRes(res, { + data: { + status: false + }, + message: 'update data error', + code: 500 + }); + } + retrySerially(async () => { + try { + const result = await sendToBot(document); + if (result.StatusCode !== 0) { + throw new Error(result.msg); + } + } catch (error) { + console.error(error); + } + }, 3); + + return jsonRes(res, { + data: { + status: true + }, + code: 200, + message: 'Invoice application successful' + }); + } catch (error) { + console.log(error); + jsonRes(res, { + data: { + status: false + }, + message: 'Failed to apply for the invoice.', + code: 500 + }); + } +} diff --git a/frontend/providers/costcenter/src/pages/api/price/bonus.ts b/frontend/providers/costcenter/src/pages/api/price/bonus.ts index 810b7af257d..35f57cd7e29 100644 --- a/frontend/providers/costcenter/src/pages/api/price/bonus.ts +++ b/frontend/providers/costcenter/src/pages/api/price/bonus.ts @@ -6,9 +6,13 @@ import { GetUserDefaultNameSpace } from '@/service/backend/kubernetes'; import { jsonRes } from '@/service/backend/response'; +import { enableRecharge } from '@/service/enabled'; import type { NextApiRequest, NextApiResponse } from 'next'; export default async function handler(req: NextApiRequest, resp: NextApiResponse) { try { + if (!enableRecharge) { + throw new Error('recharge is not enabled'); + } const kc = await authSession(req.headers); // get user account payment amount diff --git a/frontend/providers/costcenter/src/pages/billing/index.module.scss b/frontend/providers/costcenter/src/pages/billing/index.module.scss index 15e0cb1835b..e69de29bb2d 100644 --- a/frontend/providers/costcenter/src/pages/billing/index.module.scss +++ b/frontend/providers/costcenter/src/pages/billing/index.module.scss @@ -1,17 +0,0 @@ -.container { - table thead tr { - background: #f8f8fa; - } - - td, - th { - border: none; - text-align: center; - &:first-child { - text-align: left; - } - &:last-child { - text-align: right; - } - } -} diff --git a/frontend/providers/costcenter/src/pages/billing/index.tsx b/frontend/providers/costcenter/src/pages/billing/index.tsx index 7e44785acbe..1524433ca5d 100644 --- a/frontend/providers/costcenter/src/pages/billing/index.tsx +++ b/frontend/providers/costcenter/src/pages/billing/index.tsx @@ -30,7 +30,7 @@ import { getCookie } from '@/utils/cookieUtils'; import NotFound from '@/components/notFound'; function Billing() { - const { t, i18n, ready } = useTranslation(); + const { t, i18n } = useTranslation(); const cookie = getCookie('NEXT_LOCALE'); useEffect(() => { i18n.changeLanguage(cookie); @@ -71,7 +71,7 @@ function Billing() { } } ); - const tableResult = data?.data.status?.item || []; + const tableResult = data?.data?.status?.item || []; return ( diff --git a/frontend/providers/costcenter/src/pages/cost_overview/index.tsx b/frontend/providers/costcenter/src/pages/cost_overview/index.tsx index f71f8136d07..126f4127c3b 100644 --- a/frontend/providers/costcenter/src/pages/cost_overview/index.tsx +++ b/frontend/providers/costcenter/src/pages/cost_overview/index.tsx @@ -18,17 +18,7 @@ import request from '@/service/request'; import useBillingStore from '@/stores/billing'; import { isSameDay, isSameHour, parseISO } from 'date-fns'; import { enableRecharge, enableTransfer } from '@/service/enabled'; -export const TradeEnableContext = createContext({ - rechargeEnabled: false, - transferEnabled: false -}); -function CostOverview({ - rechargeEnabled, - transferEnabled -}: { - transferEnabled: boolean; - rechargeEnabled: boolean; -}) { +function CostOverview() { const { t, i18n } = useTranslation(); const updateCPU = useBillingStore((state) => state.updateCpu); const updateMemory = useBillingStore((state) => state.updateMemory); @@ -60,7 +50,7 @@ function CostOverview({ new QueryClient().prefetchQuery(['valuation'], () => request('/api/price')); }, []); return ( - + <> - + ); } @@ -133,9 +123,7 @@ export async function getServerSideProps(content: any) { const locale = content?.req?.cookies?.NEXT_LOCALE || 'zh'; return { props: { - ...(await serverSideTranslations(locale, undefined, null, content.locales)), - rechargeEnabled: enableRecharge(), - transferEnabled: enableTransfer() + ...(await serverSideTranslations(locale, undefined, null, content.locales)) } }; } diff --git a/frontend/providers/costcenter/src/pages/create_invoice/InvoicdForm.tsx b/frontend/providers/costcenter/src/pages/create_invoice/InvoicdForm.tsx new file mode 100644 index 00000000000..a6ee38645d3 --- /dev/null +++ b/frontend/providers/costcenter/src/pages/create_invoice/InvoicdForm.tsx @@ -0,0 +1,600 @@ +import { ApiResp, ReqGenInvoice } from '@/types'; +import { + isValidBANKAccount, + isValidCNTaxNumber, + isValidEmail, + isValidPhoneNumber +} from '@/utils/tools'; +import { + Flex, + Img, + Heading, + Stack, + FormControl, + FormLabel, + Input, + Button, + Text, + Box, + InputGroup, + InputRightAddon, + Link, + useToast, + useDisclosure, + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalHeader, + ModalOverlay +} from '@chakra-ui/react'; +import { Formik, FieldArray, Form, Field } from 'formik'; +import request from '@/service/request'; +import { useRef, useState, useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; +import artical_icon from '@/assert/article.svg'; +import arrow_right from '@/assert/material-symbols_expand-more-rounded.svg'; +import arrow_left_icon from '@/assert/toleft.svg'; +import arrow_icon from '@/assert/Vector.svg'; +import email_icon from '@/assert/mdi_email-receive-outline.svg'; +import listIcon from '@/assert/list.svg'; +import { InvoiceTable } from '@/components/invoice/invoiceTable'; +const BillingModal = ({ + billings, + t, + invoiceAmount, + invoiceCount +}: { + billings: ReturnType>; + t: (key: string) => string; + invoiceAmount: number; + invoiceCount: number; +}) => { + const [pageSize, setPageSize] = useState(10); + const totalPage = Math.floor((billings?.current?.length || 0) / pageSize) + 1; + + const [currentPage, setcurrentPage] = useState(1); + + return ( + <> + + + {t('orders.invoiceOrder')}({invoiceCount}) + ¥ {invoiceAmount} + + + + + + + + {t('orders.list')} + + + + index <= pageSize * currentPage - 1 && index >= pageSize * (currentPage - 1) + )} + > + + + {t('Total')}: + {billings?.current?.length || 0} + + + + {currentPage}/{totalPage} + + + + {pageSize} + /{t('Page')} + + + + + ); +}; +function InvoicdForm({ + invoiceAmount, + invoiceCount, + billings, + backcb, + onSuccess +}: { + backcb: () => void; + onSuccess: () => void; + invoiceAmount: number; + invoiceCount: number; + billings: ReturnType>; +}) { + const totast = useToast(); + const { t, i18n } = useTranslation(); + const initVal = { + details: [ + { + name: t('orders.details.invoiceTitle.name'), + placeholder: t('orders.details.invoiceTitle.placeholder'), + isRequired: true, + value: '' + }, + { + name: t('orders.details.taxRegistrationNumber.name'), + placeholder: t('orders.details.taxRegistrationNumber.placeholder'), + isRequired: true, + value: '' + }, + { + name: t('orders.details.bankName.name'), + placeholder: t('orders.details.bankName.placeholder'), + isRequired: true, + value: '' + }, + { + name: t('orders.details.bankAccount.name'), + placeholder: t('orders.details.bankAccount.placeholder'), + isRequired: true, + value: '' + }, + { + name: t('orders.details.address.name'), + placeholder: t('orders.details.address.placeholder'), + isRequired: false, + value: '' + }, + { + name: t('orders.details.phone.name'), + placeholder: t('orders.details.phone.placeholder'), + isRequired: false, + value: '' + }, + { + name: t('orders.details.fax.name'), + placeholder: t('orders.details.fax.placeholder'), + isRequired: false, + value: '' + } + ], + contract: [ + { + name: t('orders.contract.person.name'), + placeholder: t('orders.contract.person.placeholder'), + isRequired: true, + value: '' + }, + { + name: t('orders.contract.email.name'), + placeholder: t('orders.contract.email.placeholder'), + isRequired: true, + value: '' + }, + { + name: t('orders.contract.phone.name'), + placeholder: t('orders.contract.phone.placeholder'), + isRequired: true, + value: '' + }, + { + name: t('orders.contract.code.name'), + placeholder: t('orders.contract.code.placeholder'), + isRequired: true, + value: '' + } + ] + } as const; + const [remainTime, setRemainTime] = useState(-1); + useEffect(() => { + if (remainTime <= 0) return; + const interval = setInterval(() => { + setRemainTime(remainTime - 1); + }, 1000); + return () => clearInterval(interval); + }, [remainTime]); + const totalTips = () => { + if (i18n.language === 'zh') return `(总计${invoiceCount}张发票)`; + else return `(Total ${invoiceCount} invoices)`; + }; + const validPhone = (phone: string) => { + if (!isValidPhoneNumber(phone)) { + totast({ + title: t('orders.phoneValidation'), + status: 'error', + position: 'top', + duration: 2000 + }); + return false; + } else return true; + }; + const getCode = async (phone: string) => { + if (!validPhone(phone)) return; + setRemainTime(60); + try { + const res = await request.post>('/api/invoice/sms', { + phoneNumbers: phone + }); + if (res.code !== 200 || res.message !== 'successfully') { + throw new Error('Get code failed'); + } + totast({ + title: t('orders.code success'), + status: 'success', + duration: 2000, + position: 'top' + }); + } catch (err) { + totast({ + title: t('orders.code error'), + status: 'error', + position: 'top', + duration: 2000 + }); + setRemainTime(0); + } + }; + const submit: Parameters>[0]['onSubmit'] = async ( + values, + actions + ) => { + if (!validPhone(values.contract[2].value)) return; + if (!billings.current || billings.current.length === 0) { + actions.setSubmitting(false); + return; + } + if (!isValidCNTaxNumber(values.details[1].value)) { + totast({ + title: t('orders.taxNumberValidation'), + status: 'error', + position: 'top', + duration: 2000 + }); + return; + } + if (!isValidEmail(values.contract[1].value)) { + totast({ + title: t('orders.emailValidation'), + status: 'error', + position: 'top', + duration: 2000 + }); + return; + } + if (!isValidBANKAccount(values.details[3].value)) { + totast({ + title: t('orders.bankAccountValidation'), + status: 'error', + position: 'top', + duration: 2000 + }); + return; + } + try { + const result = await request.post( + '/api/invoice/verify', + { + billings: billings.current!, + detail: { + title: values.details[0].value, + tax: values.details[1].value, + bank: values.details[2].value, + bankAccount: values.details[3].value, + address: values.details[4].value, + phone: values.details[5].value, + fax: values.details[6].value + }, + contract: { + person: values.contract[0].value, + email: values.contract[1].value, + phone: values.contract[2].value, + code: values.contract[3].value + } + } + ); + totast({ + title: t('orders.submit success'), + status: 'success', + position: 'top', + duration: 2000 + }); + onSuccess(); + } catch (err) { + totast({ + title: (err as { message: string }).message || t('orders.submit fail'), + status: 'error', + position: 'top', + duration: 2000 + }); + } finally { + actions.setSubmitting(false); + } + }; + const { isOpen, onOpen, onClose } = useDisclosure(); + return ( + <> + + {(props) => ( + ( +
+ + + {t('SideBar.CreateInvoice')} + + + + + + {t('orders.Invoice Details')} + {t('orders.invoiceAmount')} + ¥ {invoiceAmount} + + + + + + {t('orders.Invoice Content')} + + {t('orders.Electronic Computer Service Fee')} + + + + {props.values.details.map((item, index) => ( + + { + // @ts-ignore + ({ field }) => ( + + {item.name} + + + ) + } + + ))} + + + + + + + + {t('orders.Contact Information')} + + + + {props.values.contract.map((item, index) => ( + + { + // @ts-ignore + ({ field }) => ( + + {item.name} + {index === 2 ? ( + + + + {remainTime <= 0 ? ( + { + e.preventDefault(); + getCode(item.value); + }} + > + {t('Get Code')} + + ) : ( + {remainTime} s + )} + + + ) : ( + + )} + + ) + } + + ))} + + +
+ )} + /> + )} +
+ + + + + + ); +} + +export default InvoicdForm; diff --git a/frontend/providers/costcenter/src/pages/create_invoice/index.tsx b/frontend/providers/costcenter/src/pages/create_invoice/index.tsx new file mode 100644 index 00000000000..ada3aa76a00 --- /dev/null +++ b/frontend/providers/costcenter/src/pages/create_invoice/index.tsx @@ -0,0 +1,329 @@ +// import { MockBillingData } from '@/mock/billing'; +import { InvoiceTable } from '@/components/invoice/invoiceTable'; +import { Box, Button, Flex, Heading, Img, Input, Text } from '@chakra-ui/react'; +import { useEffect, useRef, useState } from 'react'; +import { endOfDay, formatISO, parseISO } from 'date-fns'; +import receipt_icon from '@/assert/invoice-active.svg'; +import arrow_icon from '@/assert/Vector.svg'; +import arrow_left_icon from '@/assert/toleft.svg'; +import magnifyingGlass_icon from '@/assert/magnifyingGlass.svg'; +import { useQuery, useQueryClient } from '@tanstack/react-query'; +import request from '@/service/request'; +import { BillingData, BillingSpec } from '@/types/billing'; +import SelectRange from '@/components/billing/selectDateRange'; +import useOverviewStore from '@/stores/overview'; +import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; +import { useTranslation } from 'next-i18next'; +import { getCookie } from '@/utils/cookieUtils'; +import NotFound from '@/components/notFound'; +import { formatMoney } from '@/utils/format'; +import listIcon from '@/assert/list.svg'; +import { ReqGenInvoice } from '@/types'; +import InvoicdForm from './InvoicdForm'; +import { enableInvoice } from '@/service/enabled'; + +function Invoice() { + const { t, i18n } = useTranslation(); + const cookie = getCookie('NEXT_LOCALE'); + useEffect(() => { + i18n.changeLanguage(cookie); + }, [cookie, i18n]); + const startTime = useOverviewStore((state) => state.startTime); + const endTime = useOverviewStore((state) => state.endTime); + const selectBillings = useRef([]); + const [searchValue, setSearch] = useState(''); + const [totalPage, setTotalPage] = useState(1); + const [currentPage, setcurrentPage] = useState(1); + const [pageSize, setPageSize] = useState(10); + const queryClient = useQueryClient(); + const [invoiceAmount, setInvoiceAmount] = useState(0); + const [processState, setProcessState] = useState(0); + const [invoiceCount, setInvoiceCount] = useState(0); + const { data: filterData } = useQuery(['billing', 'invoice'], () => { + return request('/api/invoice/billings'); + }); + const { data, isLoading, isSuccess } = useQuery( + ['billing', { currentPage, startTime, endTime }], + async () => { + let spec = {} as BillingSpec; + spec = { + page: currentPage, + pageSize: pageSize, + type: 1, + startTime: formatISO(startTime, { representation: 'complete' }), + // startTime, + endTime: formatISO(endOfDay(endTime), { representation: 'complete' }), + // endTime, + orderID: searchValue.trim() + }; + const result = await request( + '/api/billing', + { + method: 'POST', + data: { + spec + } + } + ); + return { + tableResult: result.data.status.item + .filter((billing) => billing.type === 1) + .map((billing) => ({ + createdTime: parseISO(billing.time).getTime(), + order_id: billing.order_id, + amount: formatMoney(billing.amount) + })), + pageLength: result.data.status.pageLength + }; + }, + { + onSuccess(data) { + setTotalPage(data.pageLength); + }, + cacheTime: 0, + staleTime: 0, + enabled: filterData !== undefined + } + ); + const billingFilter = (billing: T): boolean => + !(filterData?.data.billings || []).includes(billing.order_id); + let tableResult = data?.tableResult?.filter(billingFilter) || []; + + return ( + + {processState === 0 ? ( + <> + + + {t('SideBar.CreateInvoice')} + + + + + {t('Transaction Time')} + + + + + + + + setSearch(v.target.value)} + > + + + + + {isSuccess && tableResult.length > 0 ? ( + <> + + + + + {t('orders.list')} + + + + {t('orders.invoiceAmount')}: + ¥ {invoiceAmount} + + + + + { + if (checked) { + setInvoiceAmount(invoiceAmount + item.amount); + setInvoiceCount(invoiceCount + 1); + selectBillings.current.push({ ...item }); + } else { + setInvoiceAmount(invoiceAmount - item.amount); + setInvoiceCount(invoiceCount - 1); + const idx = selectBillings.current.findIndex( + (billing) => billing.order_id === item.order_id + ); + selectBillings.current.splice(idx, 1); + } + }} + > + + + {t('Total')}: + + {totalPage * pageSize - (filterData?.data?.billings || []).length} + + + + + {currentPage}/{totalPage} + + + + {pageSize} + /{t('Page')} + + + ) : ( + + + + )} + + ) : processState === 1 ? ( + { + selectBillings.current = []; + setInvoiceAmount(0); + setInvoiceCount(0); + queryClient.invalidateQueries({ + queryKey: ['billing'], + exact: false + }); + }} + invoiceAmount={invoiceAmount} + invoiceCount={invoiceCount} + billings={selectBillings} + backcb={() => { + setProcessState(0); + }} + > + ) : ( + <> + )} + + ); +} +export default Invoice; +export async function getServerSideProps(content: any) { + const locale = content?.req?.cookies?.NEXT_LOCALE || 'zh'; + if (!enableInvoice()) { + return { + redirect: { + destination: '/cost_overview', + permanent: false + } + }; + } + return { + props: { + ...(await serverSideTranslations(locale, undefined, null, content.locales)) + } + }; +} diff --git a/frontend/providers/costcenter/src/pages/valuation/index.tsx b/frontend/providers/costcenter/src/pages/valuation/index.tsx index 3eb56c4cdbe..4e33a6b9c77 100644 --- a/frontend/providers/costcenter/src/pages/valuation/index.tsx +++ b/frontend/providers/costcenter/src/pages/valuation/index.tsx @@ -6,7 +6,7 @@ import { ValuationData } from '@/types/valuation'; import { valuationMap } from '@/constants/payment'; import { useEffect, useMemo } from 'react'; import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; -import { useTranslation } from 'next-i18next'; +import { i18n, useTranslation } from 'next-i18next'; import { ApiResp } from '@/types/api'; import { getCookie } from '@/utils/cookieUtils'; import { CYCLE } from '@/constants/valuation'; @@ -32,23 +32,20 @@ function Valuation() { request>('/api/price') ); - const data = useMemo( - () => - _data?.data?.status.billingRecords - .filter((x) => valuationMap.has(x.resourceType)) - .map((x) => { - const props = valuationMap.get(x.resourceType)!; - return { - title: x.resourceType, - price: [1, 24, 168, 720, 8760].map((v) => (v * x.price * (props.scale || 1)) / 1000000), - unit: props.unit, - bg: props.bg, - idx: props.idx - }; - }) - .sort((a, b) => a.idx - b.idx) || [], - [_data] - ); + const data = + _data?.data?.status?.billingRecords + ?.filter((x) => valuationMap.has(x.resourceType)) + ?.map((x) => { + const props = valuationMap.get(x.resourceType)!; + return { + title: x.resourceType, + price: [1, 24, 168, 720, 8760].map((v) => (v * x.price * (props.scale || 1)) / 1000000), + unit: props.unit, + bg: props.bg, + idx: props.idx + }; + }) + ?.sort((a, b) => a.idx - b.idx) || []; return ( - {item.unit}/ {t('Hour')} + {item.unit} / {t('Hour')} {CYCLE.map((_item, idx) => ( @@ -101,7 +98,7 @@ function Valuation() { py={'8px'} > {item.price[idx + 1]} - {`¥${item.unit}/${t(_item)}`} + {`¥${item.unit} / ${t(_item)}`} ))}
@@ -125,6 +122,7 @@ function Valuation() { export default Valuation; export async function getServerSideProps(content: any) { const locale = content?.req?.cookies?.NEXT_LOCALE || 'zh'; + process.env.NODE_ENV === 'development' && i18n?.reloadResources(locale, undefined); return { props: { ...(await serverSideTranslations(locale, undefined, null, content.locales)) diff --git a/frontend/providers/costcenter/src/service/backend/db/invoice.ts b/frontend/providers/costcenter/src/service/backend/db/invoice.ts new file mode 100644 index 00000000000..6246d802b7c --- /dev/null +++ b/frontend/providers/costcenter/src/service/backend/db/invoice.ts @@ -0,0 +1,40 @@ +import { InvoicesCollection, Tbilling, TInvoiceContract, TInvoiceDetail } from '@/types'; +import { ObjectId } from 'mongodb'; +import { connectToDatabase } from './mongodb'; + +async function connectToUserCollection() { + const client = await connectToDatabase(); + const collection = client.db().collection('invoices'); + await collection.createIndex({ 'billings.order_id': 1 }, { unique: true }); + return collection; +} +// amount 传真实的金额 +export async function addInvoice({ + detail, + contract, + k8s_user, + billings +}: { + billings: Tbilling[]; + detail: TInvoiceDetail; + contract: TInvoiceContract; + k8s_user: string; +}) { + const invoices = await connectToUserCollection(); + const result = await invoices.insertOne({ + detail, + contract, + k8s_user, + billings, + amount: billings.reduce((pre, cur) => pre + cur.amount, 0), + createdTime: new Date() + }); + return result; +} +export async function getAllInvoicesByK8sUser({ k8s_user }: { k8s_user: string }) { + const invoices = await connectToUserCollection(); + const result = invoices.find({ + k8s_user + }); + return result.toArray(); +} diff --git a/frontend/providers/costcenter/src/service/backend/db/mongodb.ts b/frontend/providers/costcenter/src/service/backend/db/mongodb.ts new file mode 100644 index 00000000000..c196fb7d704 --- /dev/null +++ b/frontend/providers/costcenter/src/service/backend/db/mongodb.ts @@ -0,0 +1,23 @@ +import { MongoClient } from 'mongodb'; +const uri = process.env.MONGODB_URI as string; + +export async function connectToDatabase() { + if (global.mongodb) { + return global.mongodb; + } + global.mongodb = new MongoClient(uri); + try { + global.mongodb.on('error', (err) => { + global.mongodb = null; + }); + global.mongodb.on('close', () => { + global.mongodb = null; + }); + await global.mongodb.connect(); + return global.mongodb; + } catch (error) { + console.log('error->', 'mongo connect error'); + global.mongodb = null; + return Promise.reject(error); + } +} diff --git a/frontend/providers/costcenter/src/service/backend/db/verifyCode.ts b/frontend/providers/costcenter/src/service/backend/db/verifyCode.ts new file mode 100644 index 00000000000..bafda9c8b11 --- /dev/null +++ b/frontend/providers/costcenter/src/service/backend/db/verifyCode.ts @@ -0,0 +1,61 @@ +import { connectToDatabase } from './mongodb'; + +type TVerification_Codes = { + phone: string; + code: string; + createdTime: number; +}; + +async function connectToUserCollection() { + const client = await connectToDatabase(); + const collection = client.db().collection('verification_codes'); + // console.log('connect to verification_codes collection') + await collection.createIndex({ createdTime: 1 }, { expireAfterSeconds: 60 * 5 }); + return collection; +} + +// addOrUpdateCode +export async function addOrUpdateCode({ phone, code }: { phone: string; code: string }) { + const codes = await connectToUserCollection(); + const result = await codes.updateOne( + { + phone + }, + { + $set: { + code, + createdTime: new Date().getTime() + } + }, + { + upsert: true + } + ); + return result; +} +// checkCode +export async function checkSendable({ phone }: { phone: string }) { + const codes = await connectToUserCollection(); + const result = await codes.findOne({ + phone, + createdTime: { + // 在区间范围内找到就是已经发送过了,不能再发了 + $gt: new Date().getTime() - 60 * 1000, + $lt: new Date().getTime() + } + }); + return !result; +} +// checkCode +export async function checkCode({ phone, code }: { phone: string; code: string }) { + const codes = await connectToUserCollection(); + const result = await codes.findOne({ + phone, + code, + createdTime: { + // 5分钟内有效 + $gt: new Date().getTime() - 5 * 60 * 1000 + } + }); + return !!result; +} diff --git a/frontend/providers/costcenter/src/service/backend/response.ts b/frontend/providers/costcenter/src/service/backend/response.ts index c01e56aa158..707b96c98da 100644 --- a/frontend/providers/costcenter/src/service/backend/response.ts +++ b/frontend/providers/costcenter/src/service/backend/response.ts @@ -46,7 +46,7 @@ const showStatus = (status: number) => { return `${message},请检查网络或联系管理员!`; }; -export const jsonRes = (res: NextApiResponse, props?: ApiResp) => { +export const jsonRes = (res: NextApiResponse, props?: ApiResp) => { const { code = 200, message = '', data = null, error } = props || {}; let msg = message; diff --git a/frontend/providers/costcenter/src/service/enabled.ts b/frontend/providers/costcenter/src/service/enabled.ts index 8f63fa11d41..b8c5f9993b0 100644 --- a/frontend/providers/costcenter/src/service/enabled.ts +++ b/frontend/providers/costcenter/src/service/enabled.ts @@ -1,2 +1,10 @@ export const enableRecharge = () => process.env['RECHARGE_ENABLED'] === 'true'; export const enableTransfer = () => process.env['TRANSFER_ENABLED'] === 'true'; +export const enableInvoice = () => + process.env['INVOICE_ENABLED'] === 'true' && + !!process.env['FEISHU_BOT_URL'] && + !!process.env['ALI_ACCESS_KEY_ID'] && + !!process.env['ALI_ACCESS_KEY_SECRET'] && + !!process.env['ALI_SIGN_NAME'] && + !!process.env['ALI_TEMPLATE_CODE'] && + !!process.env['MONGODB_URI']; diff --git a/frontend/providers/costcenter/src/service/sendToBot.ts b/frontend/providers/costcenter/src/service/sendToBot.ts new file mode 100644 index 00000000000..6c392fde66d --- /dev/null +++ b/frontend/providers/costcenter/src/service/sendToBot.ts @@ -0,0 +1,105 @@ +import { Tbilling, TInvoiceContract, TInvoiceDetail } from '@/types'; +import axios from 'axios'; + +export const sendToBot = async ({ + detail, + contract, + k8s_user, + billings +}: { + billings: Tbilling[]; + detail: TInvoiceDetail; + contract: TInvoiceContract; + k8s_user: string; +}) => { + const body = JSON.stringify({ + msg_type: 'post', + content: { + post: { + zh_cn: { + title: '新的发票请求', + content: [ + [ + { + tag: 'text', + text: '以下是联系方式:' + } + ], + [ + { + tag: 'text', + text: `用户: ${k8s_user}, 电话: ${contract.phone}, ` + }, + { + tag: 'text', + text: `邮箱:${contract.email}` + } + ], + [ + { + tag: 'text', + text: '以下是发票详情:' + } + ], + [ + { + tag: 'text', + text: `发票抬头: ${detail.title}, ` + }, + { + tag: 'text', + text: `税号: ${detail.tax}, ` + }, + { + tag: 'text', + text: `开户行: ${detail.bank}, ` + }, + { + tag: 'text', + text: `银行账号: ${detail.bankAccount}, ` + }, + { + tag: 'text', + text: `地址: ${detail.address || '-'}, ` + }, + { + tag: 'text', + text: `电话: ${detail.phone || '-'}, ` + }, + { + tag: 'text', + text: `传真: ${detail.fax || '-'}, ` + }, + { + tag: 'text', + text: `总额: ¥${billings.reduce((pre, cur) => pre + cur.amount, 0)}` + } + ], + [ + { + tag: 'text', + text: '以下是所有消费记录:' + } + ], + ...billings.map((item) => [ + { + tag: 'text', + text: `订单号: ${item.order_id}, 创建时间: ${item.createdTime}, 金额: ¥${item.amount}` + } + ]) + ] + } + } + } + }); + console.log(body); + const url = process.env.FEISHU_BOT_URL || ''; + console.log(url); + const result = await axios.post(url, body, { + timeout: 15000, + headers: { + 'Content-Type': 'application/json' + } + }); + return result.data; +}; diff --git a/frontend/providers/costcenter/src/stores/env.ts b/frontend/providers/costcenter/src/stores/env.ts new file mode 100644 index 00000000000..ea1f88a0b53 --- /dev/null +++ b/frontend/providers/costcenter/src/stores/env.ts @@ -0,0 +1,21 @@ +import { formatMoney } from '@/utils/format'; +import { create } from 'zustand'; +import { immer } from 'zustand/middleware/immer'; +type EnvState = { + rechargeEnabled: boolean; + transferEnabled: boolean; + invoiceEnabled: boolean; + setRechargeEnabled: (enabled: boolean) => void; + setTransferEnabled: (enabled: boolean) => void; + setInvoiceEnabled: (enabled: boolean) => void; +}; +const useEnvStore = create((set, get) => ({ + rechargeEnabled: false, + transferEnabled: false, + invoiceEnabled: false, + setRechargeEnabled: (enabled: boolean) => set({ rechargeEnabled: enabled }), + setTransferEnabled: (enabled: boolean) => set({ transferEnabled: enabled }), + setInvoiceEnabled: (enabled: boolean) => set({ invoiceEnabled: enabled }) +})); + +export default useEnvStore; diff --git a/frontend/providers/costcenter/src/styles/fonts.tsx b/frontend/providers/costcenter/src/styles/fonts.tsx deleted file mode 100644 index 492dda3768d..00000000000 --- a/frontend/providers/costcenter/src/styles/fonts.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Global } from '@emotion/react'; - -const Fonts = () => ( - -); - -export default Fonts; diff --git a/frontend/providers/costcenter/src/test/testbot.ps1 b/frontend/providers/costcenter/src/test/testbot.ps1 new file mode 100644 index 00000000000..a09d1cb5622 --- /dev/null +++ b/frontend/providers/costcenter/src/test/testbot.ps1 @@ -0,0 +1,28 @@ +$url = $env:baseurl # 替换为目标 URL +Write-Output $url +$payload = @{ + msg_type = "text" + content = @{ + post = @{ + zh_cn = @{ + title = "New Invoice" + content = @( + @((@( + @{ + tag = "text" + text = "xxxxxx" + } + )) | ConvertTo-Json + ) + ) + } + } + } +} | ConvertTo-Json -Depth 100 + +$headers = @{ + "Content-Type" = "application/json" +} +write-host $payload +$response = Invoke-RestMethod -Uri $url -Method Post -Body $payload -Headers $headers +write-host $response diff --git a/frontend/providers/costcenter/src/types/billing.ts b/frontend/providers/costcenter/src/types/billing.ts index ec663dca641..56dbf37116d 100644 --- a/frontend/providers/costcenter/src/types/billing.ts +++ b/frontend/providers/costcenter/src/types/billing.ts @@ -4,7 +4,7 @@ export type BillingSpec = pageSize: number; //设置返回数据每页数据大小 startTime: string; //数据在 [startTime-endTime]之间,包括startTime和endTime endTime: string; - type: 0 | 1 | -1; //0为扣费,1为充值;用于billing数据查找:如为-1则查找type为0和1的数据,如果给定type值则查找type为给定值的数据 + type: 0 | 1 | -1 | 2 | 3; //0为扣费,1为充值;用于billing数据查找:如为-1则查找type为0和1的数据,如果给定type值则查找type为给定值的数据 owner?: string; //用于billing数据中查找的owner字段值 } | { diff --git a/frontend/providers/costcenter/src/types/env.ts b/frontend/providers/costcenter/src/types/env.ts new file mode 100644 index 00000000000..c747720add9 --- /dev/null +++ b/frontend/providers/costcenter/src/types/env.ts @@ -0,0 +1,5 @@ +export type EnvData = { + rechargeEnabled: boolean; + transferEnabled: boolean; + invoiceEnabled: boolean; +}; diff --git a/frontend/providers/costcenter/src/types/index.ts b/frontend/providers/costcenter/src/types/index.ts new file mode 100644 index 00000000000..989e204974e --- /dev/null +++ b/frontend/providers/costcenter/src/types/index.ts @@ -0,0 +1,11 @@ +import { MongoClient } from 'mongodb'; +export * from './api'; +export * from './billing'; +// export * from './db'; +export * from './invoice'; +export * from './session'; +export * from './Transfer'; +export * from './env'; +declare global { + var mongodb: MongoClient | null; +} diff --git a/frontend/providers/costcenter/src/types/invoice.ts b/frontend/providers/costcenter/src/types/invoice.ts new file mode 100644 index 00000000000..0e1a41d3a4a --- /dev/null +++ b/frontend/providers/costcenter/src/types/invoice.ts @@ -0,0 +1,42 @@ +export type TInvoiceDetail = { + title: string; + tax: string; + bank: string; + bankAccount: string; + address?: string; + phone?: string; + fax?: string; +}; +export type TInvoiceContract = { + person: string; + phone: string; + email: string; +}; +export type TInvoice = { + detail: TInvoiceDetail; + contract: TInvoiceContract; +}; +export type ReqGenInvoice = { + detail: TInvoiceDetail; + contract: TInvoiceContract & { code: string }; + billings: { + order_id: string; + amount: number; + // timeStamp + createdTime: number; + }[]; +}; +export type Tbilling = { + order_id: string; + amount: number; + createdTime: Date; +}; + +export type InvoicesCollection = { + amount: number; + detail: TInvoiceDetail; + billings: Tbilling[]; + contract: TInvoiceContract; + k8s_user: string; + createdTime: Date; +}; diff --git a/frontend/providers/costcenter/src/utils/tools.ts b/frontend/providers/costcenter/src/utils/tools.ts new file mode 100644 index 00000000000..f4ccb724066 --- /dev/null +++ b/frontend/providers/costcenter/src/utils/tools.ts @@ -0,0 +1,38 @@ +export const retrySerially = (fn: () => Promise, times: number) => + new Promise((res, rej) => { + let retries = 0; + const attempt = () => { + fn() + .then((_res) => { + res(_res); + }) + .catch((error) => { + retries++; + console.log(`Attempt ${retries} failed: ${error}`); + retries < times ? attempt() : rej(error); + }); + }; + attempt(); + }); +import crypto from 'crypto'; +export function genSign(secret: string, timestamp: number | string) { + const stringToSign = `${timestamp}\n${secret}`; + const hmac = crypto.createHmac('sha256', stringToSign); + const signature = hmac.digest('base64'); + return signature; +} +export const isValidPhoneNumber = (phone: string) => { + const regExp = /^1[3-9]\d{9}$/; + return regExp.test(phone); +}; +export const isValidCNTaxNumber = (taxNumber: string) => { + return [15, 17, 18].includes(taxNumber.length); +}; +export const isValidBANKAccount = (bankAccount: string) => { + const regExp = /^[0-9]{12,19}$/; + return regExp.test(bankAccount); +}; +export const isValidEmail = (email: string) => { + const regExp = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; + return regExp.test(email); +};