From 559f6fcd685d2144e931d2c4e56cbe38c2308d70 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 10 十二月 2025 17:42:51 +0800
Subject: [PATCH] 经销商管理

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java     |  113 +
 admin/src/views/business/labelsArea.vue                                                       |   91 +
 admin/dmmall_admin/index.html                                                                 |    2 
 admin/src/assets/style/style.scss                                                             |   39 
 admin/src/views/business/goodsLabels.vue                                                      |    6 
 server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java                 |   12 
 admin/vue.config.js                                                                           |   20 
 admin/src/components/business/OperaHotCityWindow.vue                                          |   21 
 admin/src/components/business/ResetPwdShopWindow.vue                                          |   91 +
 admin/src/views/business/article.vue                                                          |    3 
 admin/src/components/business/OperaGoodsBrandWindow.vue                                       |   13 
 web/package.json                                                                              |    6 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/LabelsServiceImpl.java   |   34 
 admin/src/components/common/CommonHeader.vue                                                  |    2 
 admin/src/views/business/areas.vue                                                            |    5 
 admin/src/views/business/goodsBrand.vue                                                       |    6 
 admin/src/views/login.vue                                                                     |   10 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java |    2 
 web/manifest.json                                                                             |    5 
 server/startsh/admin_start.sh                                                                 |    4 
 admin/src/components/business/OperaLabelsAreaWindow.vue                                       |  142 +
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java                   |   47 
 admin/src/views/business/shop.vue                                                             |  174 +-
 admin/src/views/business/member.vue                                                           |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java              |    3 
 admin/src/components/business/OperaGoodsLabelsWindow.vue                                      |   14 
 admin/public/index.html                                                                       |    4 
 admin/src/views/business/activity.vue                                                         |    4 
 admin/src/api/business/shop.js                                                                |    4 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java    |   15 
 web/package-lock.json                                                                         | 3746 ++---------------------------------------------
 31 files changed, 911 insertions(+), 3,729 deletions(-)

diff --git a/admin/dmmall_admin/index.html b/admin/dmmall_admin/index.html
index 2b4c0a3..031536d 100644
--- a/admin/dmmall_admin/index.html
+++ b/admin/dmmall_admin/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>鍜栧暋涔嬪0鍚庡彴绠$悊</title><link href="static/css/app.7d97a292.css" rel="preload" as="style"><link href="static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="static/js/app.5b8aadbb.js" rel="preload" as="script"><link href="static/js/chunk-vendors.433308b2.js" rel="preload" as="script"><link href="static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="static/css/app.7d97a292.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but 鍜栧暋涔嬪0鍚庡彴绠$悊 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.433308b2.js"></script><script src="static/js/app.5b8aadbb.js"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>榧庡厓鍐滄満鍚庡彴绠$悊</title><link href="static/css/app.7d97a292.css" rel="preload" as="style"><link href="static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="static/js/app.5b8aadbb.js" rel="preload" as="script"><link href="static/js/chunk-vendors.433308b2.js" rel="preload" as="script"><link href="static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="static/css/app.7d97a292.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but 鍜栧暋涔嬪0鍚庡彴绠$悊 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.433308b2.js"></script><script src="static/js/app.5b8aadbb.js"></script></body></html>
diff --git a/admin/public/index.html b/admin/public/index.html
index 701682b..afa8958 100644
--- a/admin/public/index.html
+++ b/admin/public/index.html
@@ -5,11 +5,11 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
-    <title>鍜栧暋涔嬪0鍚庡彴绠$悊</title>
+    <title>榧庡厓鍐滄満鍚庡彴绠$悊</title>
   </head>
   <body>
     <noscript>
-      <strong>We're sorry but 鍜栧暋涔嬪0鍚庡彴绠$悊 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+      <strong>We're sorry but 榧庡厓鍐滄満鍚庡彴绠$悊 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
     </noscript>
     <div id="app"></div>
     <!-- built files will be auto injected -->
diff --git a/admin/src/api/business/shop.js b/admin/src/api/business/shop.js
index 9968654..75c541a 100644
--- a/admin/src/api/business/shop.js
+++ b/admin/src/api/business/shop.js
@@ -30,6 +30,10 @@
 export function shopDetail (id) {
   return request.get(`/business/shop/${id}`)
 }
+// 閲嶇疆瀵嗙爜
+export function resetPwd (data) {
+  return request.post('/business/shop/resetPwd', data)
+}
 
 // 鎵归噺鍒犻櫎
 export function deleteByIdInBatch (ids) {
diff --git a/admin/src/assets/style/style.scss b/admin/src/assets/style/style.scss
index cd08f82..658bfcf 100644
--- a/admin/src/assets/style/style.scss
+++ b/admin/src/assets/style/style.scss
@@ -51,7 +51,17 @@
 .el-transfer__buttons {
   padding: 0 16px !important;
 }
-
+.red{
+  color: red;
+}
+.green{
+  color: green;
+}
+.blue{
+  color: blue;
+}.orange{
+   color: orange;
+ }
 .table-header {
   background-color: #F5F6F8!important;
   th {
@@ -77,3 +87,30 @@
 ::v-deep .el-table__cell {
   height: 100% !important;
 }
+
+.global-window {
+  .tip-header{
+    font-size: 16px;
+    font-weight: bold;
+    margin-bottom: 20px;
+  }
+  .tip {
+    em {
+      font-style: normal;
+      color: $primary-color;
+      font-weight: bold;
+    }
+  }
+  .tip-warn {
+    margin: 4px 0 12px 0;
+    font-size: 12px;
+    color: #999;
+    i {
+      color: orange;
+      margin-right: 4px;
+      font-size: 14px;
+      position: relative;
+      top: 1px;
+    }
+  }
+}
diff --git a/admin/src/components/business/OperaGoodsBrandWindow.vue b/admin/src/components/business/OperaGoodsBrandWindow.vue
index a3a9e01..e157910 100644
--- a/admin/src/components/business/OperaGoodsBrandWindow.vue
+++ b/admin/src/components/business/OperaGoodsBrandWindow.vue
@@ -6,11 +6,10 @@
     @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules" label-width="110px" label-suffix="锛�" inline>
-      
       <el-form-item label="鍝佺墝鍚嶇О" prop="name">
         <el-input v-model="form.name" placeholder="璇疯緭鍏ュ搧鐗屽悕绉�" v-trim/>
       </el-form-item>
-      <el-form-item label="鎵�灞炴澘鍧�" prop="module">
+<!--      <el-form-item label="鎵�灞炴澘鍧�" prop="module">
         <el-select
           v-model="form.module"
           placeholder="璇烽�夋嫨鎵�灞炴澘鍧�"
@@ -26,11 +25,11 @@
             label="鍜栬眴鍟嗗煄"
           ></el-option>
         </el-select>
-      </el-form-item>
+      </el-form-item>-->
       <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
         <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
-      
+
     </el-form>
   </GlobalAlertWindow>
 </template>
@@ -48,17 +47,17 @@
       form: {
         id: null,
         name: '',
-        module: '',
+        module: 0,
         type: '1',
         sortnum: ''
       },
       // 楠岃瘉瑙勫垯
       rules: {
         name: [
-          { required: true, messgae: '璇疯緭鍏ュ搧鐗屽悕绉�', tigger: 'blur' }
+          { required: true, message: '璇疯緭鍏ュ搧鐗屽悕绉�', tigger: 'blur' }
         ],
         type: [
-          { required: true, messgae: '璇烽�夋嫨鎵�灞炴澘鍧�', tigger: 'change' }
+          { required: true, message: '璇烽�夋嫨鎵�灞炴澘鍧�', tigger: 'change' }
         ],
       }
     }
diff --git a/admin/src/components/business/OperaGoodsLabelsWindow.vue b/admin/src/components/business/OperaGoodsLabelsWindow.vue
index b767193..6f27a32 100644
--- a/admin/src/components/business/OperaGoodsLabelsWindow.vue
+++ b/admin/src/components/business/OperaGoodsLabelsWindow.vue
@@ -6,11 +6,11 @@
     @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules" label-width="110px" label-suffix="锛�" inline>
-      
+
       <el-form-item label="鍒嗙被鍚嶇О" prop="name">
         <el-input v-model="form.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" v-trim/>
       </el-form-item>
-      <el-form-item label="鎵�灞炴澘鍧�" prop="module">
+<!--      <el-form-item label="鎵�灞炴澘鍧�" prop="module">
         <el-select
           v-model="form.module"
           placeholder="璇烽�夋嫨鎵�灞炴澘鍧�"
@@ -26,11 +26,11 @@
             label="鍜栬眴鍟嗗煄"
           ></el-option>
         </el-select>
-      </el-form-item>
+      </el-form-item>-->
       <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
         <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
-      
+
     </el-form>
   </GlobalAlertWindow>
 </template>
@@ -48,17 +48,17 @@
       form: {
         id: null,
         name: '',
-        module: '',
+        module: 0,
         type: '0',
         sortnum: ''
       },
       // 楠岃瘉瑙勫垯
       rules: {
         name: [
-          { required: true, messgae: '璇疯緭鍏ュ垎绫诲悕绉�', tigger: 'blur' }
+          { required: true, message: '璇疯緭鍏ュ垎绫诲悕绉�', tigger: 'blur' }
         ],
         type: [
-          { required: true, messgae: '璇烽�夋嫨鎵�灞炴澘鍧�', tigger: 'change' }
+          { required: true, message: '璇烽�夋嫨鎵�灞炴澘鍧�', tigger: 'change' }
         ],
       }
     }
diff --git a/admin/src/components/business/OperaHotCityWindow.vue b/admin/src/components/business/OperaHotCityWindow.vue
index 8f92be7..ad63c9d 100644
--- a/admin/src/components/business/OperaHotCityWindow.vue
+++ b/admin/src/components/business/OperaHotCityWindow.vue
@@ -48,7 +48,7 @@
         callback(new Error('璇峰厛閫夋嫨鐪佷唤'))
       } else if (!this.form.cityId) {
         callback(new Error('璇烽�夋嫨鍩庡競'))
-      }  else {
+      } else {
         callback()
       }
     }
@@ -72,7 +72,7 @@
       rules: {
         cityId: [
           { required: true, validator: newRule, trigger: 'change' }
-        ],
+        ]
       }
     }
   },
@@ -81,13 +81,13 @@
       api: '/business/hotCity',
       'field.id': 'id'
     })
-    listByParentId({type: 0, parentId: ''})
+    listByParentId({ type: 0, parentId: '' })
       .then(data => {
-          this.province = data
-        })
+        this.province = data
+      })
   },
   methods: {
-    selectProvince(val) {
+    selectProvince (val) {
       this.form.cityId = ''
       this.cities = []
       listByParentId({ type: 1, parentId: val })
@@ -97,13 +97,12 @@
         .catch(e => {
           this.$tip.error(e)
         })
-
     },
-    numInput() {
+    numInput () {
       // =""
-      this.form.sortnum = this.form.sortnum.replace(/^(0+)|[^\d]+/g,'')
-    },
-  },
+      this.form.sortnum = this.form.sortnum.replace(/^(0+)|[^\d]+/g, '')
+    }
+  }
 }
 </script>
 
diff --git a/admin/src/components/business/OperaLabelsAreaWindow.vue b/admin/src/components/business/OperaLabelsAreaWindow.vue
new file mode 100644
index 0000000..3b1ebe7
--- /dev/null
+++ b/admin/src/components/business/OperaLabelsAreaWindow.vue
@@ -0,0 +1,142 @@
+<template>
+  <GlobalAlertWindow
+    v-loading="isUploading"
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�"  inline>
+      <el-form-item label="鍖哄煙鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" :maxlength="5" v-trim/>
+      </el-form-item>
+      <el-form-item label="閫夋嫨鐪佷唤" prop="name">
+        <el-select v-model="form.areaIdList" placeholder="璇烽�夋嫨鐪佷唤" multiple filterable>
+          <el-option
+              v-for="item in province"
+              :key="item.id"
+              :value="item.id"
+              :label="item.name"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>
+    </el-form>
+  </GlobalAlertWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+import { listByParentId } from '@/api/business/areas'
+
+export default {
+  name: 'OperaLabelsWindow',
+  extends: BaseOpera,
+  components: { GlobalAlertWindow },
+  data () {
+    return {
+      isUploading: false,
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        name: '',
+        info: '',
+        type: 13,
+        module: 0,
+        sortnum: '',
+        areaIdList: [],
+        areaList: []
+      },
+      province: [],
+      // 楠岃瘉瑙勫垯
+      rules: {
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/labels',
+      'field.id': 'id'
+    })
+    listByParentId({ type: 0, parentId: '' })
+      .then(data => {
+        this.province = data
+      })
+  },
+  methods: {
+    open (title, target) {
+      var that =this
+      this.title = title
+      this.visible = true
+      // this.isEdit = false
+      this.form.areaList = []
+      this.form.areaIdList = []
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        this.isEdit = true
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+        that.form.areaIdList = []
+        if (this.form.areaList && this.form.areaList.length) {
+          this.form.areaList.forEach(item => {
+            that.form.areaIdList.push(item.id)
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/style/alertstyle.scss";
+$image-width: 100px;
+
+::v-deep .el-select {
+    width: 100%;
+    .el-input__inner {
+      width: 100%;
+    }
+  }
+.avatar-uploader {
+  width: $image-width;
+  height: $image-width;
+}
+::v-deep .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  width: $image-width;
+  height: $image-width;
+  overflow: hidden;
+}
+.avatar-uploader .el-upload:hover {
+  border-color: #409EFF;
+}
+.avatar-uploader-icon {
+  font-size: 28px;
+  color: #8c939d;
+  width: $image-width;
+  height: $image-width;
+  line-height: $image-width;
+  text-align: center;
+}
+.avatar {
+  width: $image-width;
+  height: $image-width;
+  display: block;
+}
+</style>
diff --git a/admin/src/components/business/ResetPwdShopWindow.vue b/admin/src/components/business/ResetPwdShopWindow.vue
new file mode 100644
index 0000000..f216366
--- /dev/null
+++ b/admin/src/components/business/ResetPwdShopWindow.vue
@@ -0,0 +1,91 @@
+<template>
+  <GlobalWindow
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    width="576px"
+    title="閲嶇疆瀵嗙爜"
+    @confirm="confirm"
+  >
+    <p class="tip" v-if="user != null">涓虹粡閿�鍟� <em>{{shop.realname}}</em> 閲嶇疆瀵嗙爜</p>
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鏂板瘑鐮�" prop="password" required>
+        <el-input v-model="form.password" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜" maxlength="30" show-password></el-input>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { resetPwd } from '@/api/business/shop'
+export default {
+  name: 'ResetPwdWindow',
+  components: { GlobalWindow },
+  data () {
+    return {
+      isWorking: false,
+      visible: false,
+      shop: null,
+      form: {
+        password: ''
+      },
+      rules: {
+        password: [
+          { required: true, message: '璇疯緭鍏ュ瘑鐮�' }
+        ]
+      }
+    }
+  },
+  methods: {
+    open (shop) {
+      this.shop = shop
+      this.visible = true
+      this.$nextTick(() => {
+        this.$refs.form.resetFields()
+      })
+    },
+    // 纭閲嶇疆瀵嗙爜
+    confirm () {
+      if (this.isWorking) {
+        return
+      }
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        this.isWorking = true
+        resetPwd({
+          id: this.user.id,
+          password: this.form.password
+        })
+          .then(() => {
+            this.$tip.apiSuccess('瀵嗙爜閲嶇疆鎴愬姛')
+            this.visible = false
+            this.$emit('success')
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking = false
+          })
+      })
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+@import "@/assets/style/variables.scss";
+// 瑙掕壊閰嶇疆
+.global-window {
+  .tip {
+    margin-bottom: 12px;
+    em {
+      font-style: normal;
+      color: $primary-color;
+      font-weight: bold;
+    }
+  }
+}
+</style>
diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index e7a4178..13a855c 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -2,7 +2,7 @@
   <div class="common-header">
     <div class="header">
       <div class="logo">
-        <div>鍜栧暋涔嬪0鍚庡彴绠$悊</div>
+        <div>榧庡厓鍐滄満鍚庡彴绠$悊</div>
         <!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> -->
       </div>
       <div class="user">
diff --git a/admin/src/views/business/activity.vue b/admin/src/views/business/activity.vue
index a998206..9d202a1 100644
--- a/admin/src/views/business/activity.vue
+++ b/admin/src/views/business/activity.vue
@@ -126,7 +126,7 @@
         endtime: '',
         type: 1 //绫诲瀷0鍟嗗娲诲姩 1骞冲彴娲诲姩 2鎺㈠簵 3璧勮
       },
-      
+
       activityStatus: [
         // 0鏈紑濮� 1鎶ュ悕涓�,2鎶ュ悕缁撴潫,3娲诲姩杩涜涓�,4娲诲姩宸茬粨鏉�
         { label: '鏈紑濮�', id: 0 },
@@ -166,7 +166,7 @@
       this.search()
     },
     shopDetail(row) {
-      
+
     }
   },
 }
diff --git a/admin/src/views/business/areas.vue b/admin/src/views/business/areas.vue
index 6151b4d..a266422 100644
--- a/admin/src/views/business/areas.vue
+++ b/admin/src/views/business/areas.vue
@@ -2,10 +2,6 @@
   <TableLayout :permissions="['business:areas:query']">
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
-      <!-- <ul class="toolbar" v-permissions="['business:areas:create', 'business:areas:delete']">
-        <li><el-button type="primary" @click="$refs.operaAreasWindow.open('鏂板缓鐪�')" icon="el-icon-plus" v-permissions="['business:areas:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:areas:delete']">鍒犻櫎</el-button></li>
-      </ul> -->
       <el-table
         ref="table"
         v-loading="isWorking.search"
@@ -22,6 +18,7 @@
       >
         <el-table-column prop="name" label="鍦板尯鍚嶇О" min-width="100px">
           <template slot-scope="{ row }">
+            {{row.name}}<span v-if="row.type ===0 && row.bigAreaName !=null && row.bigAreaName !=''" class="green">銆恵{row.bigAreaName}}銆�</span>
           </template>
         </el-table-column>
         <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" align="center" min-width="140px"></el-table-column>
diff --git a/admin/src/views/business/article.vue b/admin/src/views/business/article.vue
index 5029fda..8e2f6ce 100644
--- a/admin/src/views/business/article.vue
+++ b/admin/src/views/business/article.vue
@@ -2,7 +2,7 @@
   <TableLayout :permissions="['business:article:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      
+
       <el-form-item label="鏂囩珷鍚嶇О" prop="title">
         <el-input v-model="searchForm.title" placeholder="璇疯緭鍏ユ枃绔犲悕绉�" @keypress.enter.native="search"></el-input>
       </el-form-item>
@@ -14,7 +14,6 @@
           <el-option v-for="item in labels" :key="item.id" :value="item.id" :label="item.name" />
         </el-select>
       </el-form-item>
-      
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
diff --git a/admin/src/views/business/goodsBrand.vue b/admin/src/views/business/goodsBrand.vue
index 2b1a21d..47cba60 100644
--- a/admin/src/views/business/goodsBrand.vue
+++ b/admin/src/views/business/goodsBrand.vue
@@ -5,7 +5,7 @@
       <el-form-item label="鍝佺墝鍚嶇О" prop="name">
         <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ搧鐗屽悕绉�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鎵�灞炴澘鍧�" prop="module">
+<!--      <el-form-item label="鎵�灞炴澘鍧�" prop="module">
         <el-select
           v-model="searchForm.module"
           placeholder="璇烽�夋嫨鎵�灞炴澘鍧�"
@@ -21,7 +21,7 @@
             label="鍜栬眴鍟嗗煄"
           ></el-option>
         </el-select>
-      </el-form-item>
+      </el-form-item>-->
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
@@ -86,7 +86,7 @@
     return {
       // 鎼滅储
       searchForm: {
-       
+
         name: '',
         module: '',
         type: 1
diff --git a/admin/src/views/business/goodsLabels.vue b/admin/src/views/business/goodsLabels.vue
index ee46a46..5395235 100644
--- a/admin/src/views/business/goodsLabels.vue
+++ b/admin/src/views/business/goodsLabels.vue
@@ -5,7 +5,7 @@
       <el-form-item label="鍒嗙被鍚嶇О" prop="name">
         <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鎵�灞炴澘鍧�" prop="module">
+<!--      <el-form-item label="鎵�灞炴澘鍧�" prop="module">
         <el-select
           v-model="searchForm.module"
           placeholder="璇烽�夋嫨鎵�灞炴澘鍧�"
@@ -21,7 +21,7 @@
             label="鍜栬眴鍟嗗煄"
           ></el-option>
         </el-select>
-      </el-form-item>
+      </el-form-item>-->
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
@@ -86,7 +86,7 @@
     return {
       // 鎼滅储
       searchForm: {
-       
+
         name: '',
         module: '',
         type: 0
diff --git a/admin/src/views/business/labelsArea.vue b/admin/src/views/business/labelsArea.vue
new file mode 100644
index 0000000..e9d1d98
--- /dev/null
+++ b/admin/src/views/business/labelsArea.vue
@@ -0,0 +1,91 @@
+<template>
+  <TableLayout :permissions="['business:labels:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鍖哄煙鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:labels:create', 'business:labels:delete']">
+        <li><el-button type="primary" @click="$refs.operaLabelsWindow.open('鏂板缓澶у尯淇℃伅')" icon="el-icon-plus" v-permissions="['business:labels:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        border
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="name" label="鍒嗙被鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="areas" label="鍖呭惈鍦板尯" min-width="200px" align="center">
+          <template slot-scope="{row}">
+            <div v-if="row.areaList && row.areaList.length" >
+              <span v-for="item in row.areaList">{{item.name}}锛� </span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鏈�杩戞洿鏂版椂闂�" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:labels:update', 'business:labels:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaLabelsWindow.open('缂栬緫鍖哄煙淇℃伅', row)" icon="el-icon-edit" v-permissions="['business:labels:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaLabelsWindow ref="operaLabelsWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaLabelsWindow from '@/components/business/OperaLabelsAreaWindow'
+export default {
+  name: 'Labels',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaLabelsWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        name: '',
+        type: 13
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '鏍囩淇℃伅琛�',
+      api: '/business/labels',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+  }
+}
+</script>
diff --git a/admin/src/views/business/member.vue b/admin/src/views/business/member.vue
index 3fe85cf..1440ee6 100644
--- a/admin/src/views/business/member.vue
+++ b/admin/src/views/business/member.vue
@@ -28,7 +28,7 @@
         <el-table-column prop="name" label="鐪熷疄濮撳悕" align="center"  min-width="100px"></el-table-column>
         <el-table-column prop="phone" label="鎵嬫満鍙�" align="center"  min-width="100px"></el-table-column>
         <el-table-column prop="idcard" label="韬唤璇佸彿" align="center"  min-width="100px"></el-table-column>
-        <el-table-column prop="integral" label="鍜栬眴鏁伴噺" align="center"  min-width="100px"></el-table-column>
+        <el-table-column prop="integral" label="绉垎鏁伴噺" align="center"  min-width="100px"></el-table-column>
         <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" align="center"  min-width="140px"></el-table-column>
         <el-table-column label="鐘舵��" align="center"  min-width="100px">
           <template slot-scope="{row}">
diff --git a/admin/src/views/business/shop.vue b/admin/src/views/business/shop.vue
index 440885d..6dc4b7e 100644
--- a/admin/src/views/business/shop.vue
+++ b/admin/src/views/business/shop.vue
@@ -2,50 +2,28 @@
   <TableLayout :permissions="['business:shop:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="搴楅摵鍚嶇О" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ簵閾哄悕绉�" @keypress.enter.native="search"></el-input>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="搴楅摵鐘舵��" prop="status">
+      <el-form-item label="鐧诲綍璐﹀彿" prop="name">
+        <el-input v-model="searchForm.username" placeholder="璇疯緭鍏ョ櫥褰曡处鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="閿�鍞ā寮�" prop="saleType" >
         <!-- 0姝e父 1绂佺敤 -->
-        <el-select
-          v-model="searchForm.status"
-          placeholder="璇烽�夋嫨搴楅摵鐘舵��"
-        >
-          <el-option
-            :key="0"
-            :value="0"
-            label="姝e父"
-          ></el-option>
-          <el-option
-            :key="1"
-            :value="1"
-            label="绂佺敤"
-          ></el-option>
+        <el-select     v-model="searchForm.saleType"  placeholder="閿�鍞ā寮�"  @change="search"  >
+          <el-option  :key="0" :value="0"  label="骞冲彴閾鸿揣"  ></el-option>
+          <el-option   :key="1" :value="1" label="鑷富閲囪喘"  ></el-option>
         </el-select>
-        <!-- <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬�0姝e父 1绂佺敤" @keypress.enter.native="search"></el-input> -->
       </el-form-item>
-      <el-form-item label="鎺ㄨ崘" prop="isrec">
-        <!-- 0鍚� 1鏄� -->
-        <el-select
-          v-model="searchForm.isrec"
-          placeholder="璇烽�夋嫨搴楅摵鐘舵��"
-        >
-          <el-option
-            :key="0"
-            :value="0"
-            label="鍚�"
-          ></el-option>
-          <el-option
-            :key="1"
-            :value="1"
-            label="鏄�"
-          ></el-option>
+      <el-form-item label="鐘舵��" prop="status">
+        <!-- 0姝e父 1绂佺敤 -->
+        <el-select     v-model="searchForm.status"  placeholder="璇烽�夋嫨鐘舵��"    @change="search"   >
+          <el-option  :key="0" :value="0"  label="姝e父"  ></el-option>
+          <el-option   :key="1" :value="1" label="绂佺敤"  ></el-option>
         </el-select>
-        <!-- <el-input v-model="searchForm.isrec" placeholder="璇疯緭鍏ユ槸鍚︽帹鑽�0鍚� 1鏄�" @keypress.enter.native="search"></el-input> -->
       </el-form-item>
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
-        <!-- <el-button type="primary" @click="showDetail">鎼滅储</el-button> -->
         <el-button @click="reset">閲嶇疆</el-button>
       </section>
     </el-form>
@@ -63,37 +41,44 @@
         @selection-change="handleSelectionChange"
       >
         <!-- <el-table-column type="selection" width="55"></el-table-column> -->
-        <el-table-column prop="name" label="搴楅摵鍚嶇О" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="imgurl" label="搴楅摵LOGO" align="center" min-width="100px">
+        <el-table-column prop="name" label="鍚嶇О" fixed align="center" min-width="100px">
           <template slot-scope="{row}">
-            <el-image :scr="row.imgFullUrl + row.imgurl" :preview-src-list="[row.imgFullUrl + row.imgurl]"></el-image>
+            <el-button type="text" @click="showDetail(row)">{{row.name}}</el-button>
           </template>
         </el-table-column>
-        <el-table-column prop="addr" label="鍦板潃" align="center" min-width="100px"></el-table-column>
+        <el-table-column prop="code" label="闂ㄥ簵ID" align="center" min-width="100px"></el-table-column>
+        <el-table-column prop="integral" label="鐜版湁绉垎" align="center" min-width="100px">
+          <template slot-scope="{row}">
+            <span class="orange">{{(row.integral || 0).toFixed(0)}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="totalIntegral" label="绱绉垎" align="center" min-width="100px">
+          <template slot-scope="{row}">
+            <span class="orange">  {{(row.totalIntegral || 0).toFixed(0)}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="username" label="鐧诲綍璐﹀彿" align="center" min-width="100px"></el-table-column>
+        <el-table-column prop="bigAreaName" label="鎵�灞炲尯鍩�" align="center" min-width="100px"></el-table-column>
+        <el-table-column prop="areaFullName" label="鐪佸競鍖�" align="center" min-width="150px" show-overflow-tooltip>
+          <template slot-scope="{row}">
+            <span v-if="row.areas!=null">{{(row.areas.provinceName||'') + (row.areas.cityName||'') + (row.areas.name||'')}}</span>
+          </template>
+        </el-table-column>
+<!--        <el-table-column prop="imgurl" label="闂ㄥご鍥�" align="center" min-width="100px">
+          <template slot-scope="{row}">
+            <el-image v-if=" row.imgurl" :scr="row.imgFullUrl + row.imgurl" :preview-src-list="[row.imgFullUrl + row.imgurl]"></el-image>
+          </template>
+        </el-table-column>-->
+        <el-table-column prop="addr" label="璇︾粏鍦板潃" align="center" min-width="150px" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="realname" label="鑱旂郴浜�" align="center" min-width="100px"></el-table-column>
+        <el-table-column prop="phone" label="鑱旂郴鐢佃瘽" align="center" min-width="150px"></el-table-column>
+        <el-table-column prop="saleType"  label="閿�鍞ā寮�" align="center" min-width="150px">
+          <template slot-scope="{row}">
+            {{ row.saleType == 1?'鑷富閲囪喘':'骞冲彴閾鸿揣'}}
+          </template>
+        </el-table-column>
         <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" align="center" min-width="140px"></el-table-column>
-        <el-table-column label="璐熻矗浜�" align="center" min-width="150px">
-          <template slot-scope="{row}">
-            {{ `${row.nickName} ${row.memberPhone}` }}
-          </template>
-        </el-table-column>
-        <el-table-column label="缁忛攢鍟嗘暟鎹�" align="center" min-width="150px">
-          <template slot-scope="{row}">
-            <el-button type="text" @click="showDetail(row)">鏌ョ湅</el-button>
-          </template>
-        </el-table-column>
-        <el-table-column prop="isrec" label="鏄惁鎺ㄨ崘" align="center" min-width="100px">
-          <template slot-scope="{row}">
-            <el-switch
-              v-model="row.isrec"
-              active-color="#13ce66"
-              inactive-color="#999"
-              :active-value="1"
-              :inactive-value="0"
-              @change="statusChange(row)"
-            ></el-switch>
-          </template>
-        </el-table-column>
-        <el-table-column prop="status" label="鐘舵��" align="center" min-width="100px">
+        <el-table-column prop="status" label="鐘舵��" align="center" min-width="100px" fixed="right">
           <template slot-scope="{row}">
             <el-switch
               v-model="row.status"
@@ -105,38 +90,18 @@
             ></el-switch>
           </template>
         </el-table-column>
-
-        <!-- <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
-        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
-        <el-table-column prop="sex" label="鎬у埆 0鐢� 1濂� 2鏈煡" min-width="100px"></el-table-column>
-        <el-table-column prop="idcard" label="韬唤璇佸彿" min-width="100px"></el-table-column>
-        <el-table-column prop="idcardImg" label="韬唤璇佹闈㈢収" min-width="100px"></el-table-column>
-        <el-table-column prop="idcardImgBack" label="韬唤璇佸弽闈㈢収" min-width="100px"></el-table-column>
-        <el-table-column prop="businessImg" label="钀ヤ笟鎵х収" min-width="100px"></el-table-column>
-        <el-table-column prop="longitude" label="瀹氫綅缁忓害" min-width="100px"></el-table-column>
-        <el-table-column prop="latitude" label="瀹氫綅缁村害" min-width="100px"></el-table-column>
-        <el-table-column prop="areaId" label="鎵�灞炲幙鍖虹紪鐮侊紙鍏宠仈areas)" min-width="100px"></el-table-column>
-        <el-table-column prop="info" label="搴楅摵鎻忚堪" min-width="100px"></el-table-column>
-        <el-table-column prop="origin" label="鏁版嵁鏉ユ簮 0灏忕▼搴忕敵璇� 1鍚庡彴褰曞叆" min-width="100px"></el-table-column>
-        <el-table-column prop="memberId" label="鐢ㄦ埛缂栫爜锛堝叧鑱攎ember琛級" min-width="100px"></el-table-column>
-        <el-table-column prop="applyId" label="鐢宠缂栫爜锛堝叧鑱攕hop_apply琛級" min-width="100px"></el-table-column>
-        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="looknum" label="鎬绘祻瑙堥噺" min-width="100px"></el-table-column>
-        <el-table-column prop="startTime" label="钀ヤ笟寮�濮嬫椂闂�" min-width="100px"></el-table-column>
-        <el-table-column prop="endTime" label="钀ヤ笟缁撴潫鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="brandStory" label="鍝佺墝鏁呬簨" min-width="100px"></el-table-column> -->
         <el-table-column
           v-if="containPermissions(['business:shop:update', 'business:shop:delete'])"
           label="鎿嶄綔"
-          min-width="120"
+          min-width="200"
           fixed="right"
           align="center"
         >
           <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaShopWindow.open('缂栬緫搴楅摵', row)" icon="el-icon-edit" v-permissions="['business:shop:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:shop:delete']">鍒犻櫎</el-button>
+            <el-button type="text" @click="$refs.operaShopWindow.open('缂栬緫缁忛攢鍟�', row)" icon="el-icon-edit" v-permissions="['business:shop:update']">缂栬緫</el-button>
+            <el-button type="text" @click="resetPwd(row)" icon="el-icon-edit"  v-permissions="['business:shop:update']">閲嶇疆瀵嗙爜</el-button>
+            <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:shop:delete']">鍒犻櫎</el-button>
+
           </template>
         </el-table-column>
       </el-table>
@@ -150,6 +115,7 @@
     <!-- 鏂板缓/淇敼 -->
     <OperaShopWindow ref="operaShopWindow" @success="handlePageChange"/>
     <OperaShopDetailWindow ref="operaShopDetailWindow" />
+    <ResetPwdShopWindow ref="resetPwdWindow"/>
   </TableLayout>
 </template>
 
@@ -159,19 +125,22 @@
 import Pagination from '@/components/common/Pagination'
 import OperaShopWindow from '@/components/business/OperaShopWindow'
 import OperaShopDetailWindow from '@/components/business/OperaShopDetailWindow'
-import { updateIsRecById } from '@/api/business/shop'
+import { resetPwd, updateIsRecById } from '@/api/business/shop'
+import ResetPwdShopWindow from '@/components/business/ResetPwdShopWindow'
 export default {
   name: 'Shop',
   extends: BaseTable,
-  components: { TableLayout, Pagination, OperaShopWindow, OperaShopDetailWindow },
+  components: { TableLayout, Pagination, OperaShopWindow, OperaShopDetailWindow, ResetPwdShopWindow },
   data () {
     return {
 
       // 鎼滅储
       searchForm: {
         name: '',
+        username: '',
         status: '',
-        isrec: '',
+        saleType: '',
+        isrec: ''
       }
     }
   },
@@ -185,7 +154,24 @@
     this.search()
   },
   methods: {
-    statusChange(row) {
+    resetPwd (row) {
+      this.$dialog.messageWaring('纭閲嶇疆璇ョ粡閿�鍟嗐��' + row.name + '銆戠殑鐧诲綍瀵嗙爜鍚楋紵')
+        .then(() => {
+          resetPwd({
+            id: row.id
+          })
+            .then(() => {
+              this.$tip.apiSuccess('瀵嗙爜閲嶇疆鎴愬姛')
+            })
+            .catch(e => {
+              this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+
+            })
+        })
+    },
+    statusChange (row) {
       updateIsRecById(row)
         .then(() => {
           this.$message.success('鎿嶄綔鎴愬姛')
@@ -197,9 +183,9 @@
           this.handlePageChange()
         })
     },
-    showDetail(row) {
+    showDetail (row) {
       this.$refs.operaShopDetailWindow.open('搴楅摵璇︽儏', row)
     }
-  },
+  }
 }
 </script>
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index 7bb49b3..1289453 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -3,9 +3,9 @@
     <CommonHeader :isLogined="false" />
     <div class="login-content">
       <div class="wrap">
-        
+
         <div class="introduce">
-          <h2>鍜栧暋涔嬪0鍚庡彴绠$悊</h2>
+          <h2>榧庡厓鍐滄満鍚庡彴绠$悊</h2>
         </div>
         <div class="login">
           <h1>璐﹀彿鐧诲綍</h1>
@@ -126,7 +126,7 @@
 .contant {
   height: 100%;
   background-color: #F3F7FA;
-  
+
 }
 .login-content {
   height: calc(100% - 70px);
@@ -179,7 +179,7 @@
       line-height: 34px;
       text-shadow: 0px 2px 14px rgba(0,0,0,0.17);
     }
-    
+
   }
   // 鍙宠竟鐧诲綍
   .login {
@@ -286,6 +286,6 @@
   color: #333;
   // font-weight: 600;
   line-height: 14px;
-  
+
 }
 </style>
diff --git a/admin/vue.config.js b/admin/vue.config.js
index 6716627..5587382 100644
--- a/admin/vue.config.js
+++ b/admin/vue.config.js
@@ -1,9 +1,12 @@
 // 璇︾粏閰嶇疆璇峰弬鑰僪ttps://cli.vuejs.org/zh/config/#vue-config-js
-const outputDir = process.env.VUE_APP_CONTEXT_PATH.substring(1, process.env.VUE_APP_CONTEXT_PATH.length)
-const webpack = require('webpack')
+//const outputDir = process.env.VUE_APP_CONTEXT_PATH.substring(1, process.env.VUE_APP_CONTEXT_PATH.length)
+const path = require('path')
+function resolve (dir) {
+  return path.join(__dirname, dir)
+}
 module.exports = {
   publicPath: './',
-  outputDir: outputDir || 'test',
+  outputDir: 'dmmall_admin' || 'test',
   assetsDir: 'static',
   lintOnSave: false,
   devServer: {
@@ -20,11 +23,10 @@
     }
   },
   configureWebpack: {
-    plugins: [
-      new webpack.ProvidePlugin({
-        'window.Quill': 'quill/dist/quill.js',
-        Quill: 'quill/dist/quill.js'
-      })
-    ]
+    resolve: {
+      alias: {
+        '@': resolve('src')
+      }
+    }
   }
 }
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java
index cc1ffc4..66a9497 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java
@@ -3,15 +3,18 @@
 import com.doumee.api.BaseController;
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
 import com.doumee.dao.business.model.Shop;
+import com.doumee.dao.web.dto.ResetSystemUserPwdDTO;
 import com.doumee.service.business.ShopService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.shiro.authz.annotation.RequiresPermissions;    
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
 
@@ -105,4 +108,13 @@
     public ApiResponse findById(@PathVariable Integer id) {
         return ApiResponse.success(shopService.findById(id));
     }
+
+    @PreventRepeat
+    @ApiOperation("閲嶇疆缁忛攢鍟嗗瘑鐮�")
+    @PostMapping("/resetPwd")
+    @RequiresPermissions("system:user:resetPwd")
+    public ApiResponse resetPwd ( @RequestBody Shop dto) {
+        shopService.resetPwd(dto);
+        return ApiResponse.success(null);
+    }
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java
index 2f702c6..805e067 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java
@@ -81,6 +81,12 @@
     @ApiModelProperty(value = "韬唤璇佹闈㈢収")
     @ExcelColumn(name="韬唤璇佹闈㈢収")
     private String idcardImg;
+    @ApiModelProperty(value = "娉曚汉濮撳悕")
+    @ExcelColumn(name="娉曚汉濮撳悕")
+    private String legalPersonName;
+    @ApiModelProperty(value = "娉曚汉鐢佃瘽")
+    @ExcelColumn(name="娉曚汉鐢佃瘽")
+    private String legalPersonPhone;
 
     @ApiModelProperty(value = "韬唤璇佸弽闈㈢収")
     @ExcelColumn(name="韬唤璇佸弽闈㈢収")
@@ -89,23 +95,45 @@
     @ApiModelProperty(value = "钀ヤ笟鎵х収")
     @ExcelColumn(name="钀ヤ笟鎵х収")
     private String businessImg;
-
+    @ApiModelProperty(value = "鍟嗗缂栧彿")
+    @ExcelColumn(name="鍟嗗缂栧彿")
+    private String code;
+    @ApiModelProperty(value = "鐧诲綍鍚�")
+    @ExcelColumn(name="鐧诲綍鍚�")
+    private String username;
+    @ApiModelProperty(value = "瀵嗙爜鐩�")
+    @ExcelColumn(name="瀵嗙爜鐩�")
+    private String salt;
+    @ApiModelProperty(value = "鐧诲綍瀵嗙爜")
+    @ExcelColumn(name="鐧诲綍瀵嗙爜")
+    private String password;
+    @ApiModelProperty(value = "瀹d紶娴锋姤")
+    @ExcelColumn(name="瀹d紶娴锋姤")
+    private String posterImg;
+    @ApiModelProperty(value = "閿�鍞ā寮� 0骞冲彴搴楅摵 1鑷富閲囪喘")
+    @ExcelColumn(name="閿�鍞ā寮� 0骞冲彴搴楅摵 1鑷富閲囪喘")
+    private Integer saleType;
+    @ApiModelProperty(value = "閿�鍞ā寮� 0骞冲彴搴楅摵 1鑷富閲囪喘")
+    @ExcelColumn(name="閿�鍞ā寮� 0骞冲彴搴楅摵 1鑷富閲囪喘")
+    private Integer bigAreaId;
+    @ApiModelProperty(value = "绉垎浣欓")
+    @ExcelColumn(name="绉垎浣欓")
+    private BigDecimal integral;
+    @ApiModelProperty(value = "绉垎绱")
+    @ExcelColumn(name="绉垎绱")
+    private BigDecimal totalIntegral;
     @ApiModelProperty(value = "鐘舵��0姝e父 1绂佺敤", example = "1")
     @ExcelColumn(name="鐘舵��0姝e父 1绂佺敤")
     private Integer status;
-
     @ApiModelProperty(value = "瀹氫綅缁忓害", example = "1")
     @ExcelColumn(name="瀹氫綅缁忓害")
     private BigDecimal longitude;
-
     @ApiModelProperty(value = "瀹氫綅缁村害", example = "1")
     @ExcelColumn(name="瀹氫綅缁村害")
     private BigDecimal latitude;
-
     @ApiModelProperty(value = "鎵�灞炲幙鍖虹紪鐮侊紙鍏宠仈areas)", example = "1")
     @ExcelColumn(name="鎵�灞炲幙鍖虹紪鐮侊紙鍏宠仈areas)")
     private Integer areaId;
-
     @ApiModelProperty(value = "鍦板潃")
     @ExcelColumn(name="鍦板潃")
     private String addr;
@@ -160,10 +188,19 @@
     @ApiModelProperty(value = "鐢ㄦ埛鐢佃瘽")
     @TableField(exist = false)
     private String memberPhone;
+    @ApiModelProperty(value = "鐪佸競鍖�")
+    @TableField(exist = false)
+    private Areas areas;
+    @ApiModelProperty(value = "鎵�灞炲ぇ鍖哄悕绉�")
+    @TableField(exist = false)
+    private String bigAreaName;
 
     @ApiModelProperty(value = "鏂囦欢鍦板潃")
     @TableField(exist = false)
     private String imgFullUrl;
+    @ApiModelProperty(value = "瀹氫綅淇℃伅")
+    @TableField(exist = false)
+    private String locationInfo;
 
     @ApiModelProperty(value = "闂ㄥ簵鎵撳垎")
     @TableField(exist = false)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
index 57dadf4..d2e7d19 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
@@ -4,6 +4,7 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.dao.business.model.Shop;
 import com.doumee.dao.web.dto.MemberDTO;
+import com.doumee.dao.web.dto.ResetSystemUserPwdDTO;
 import com.doumee.dao.web.dto.shop.ShopDTO;
 import com.doumee.dao.web.dto.shop.ShopDataStatisticsDTO;
 import com.doumee.dao.web.dto.shop.ShopFaceDetailDTO;
@@ -157,4 +158,6 @@
      * @return
      */
     ShopDataStatisticsDTO getShopDataStatisticsDTO(Integer shopId);
+
+    void resetPwd(Shop dto);
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java
index 26bf531..890e8bd 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java
@@ -497,7 +497,20 @@
         String areaName = Optional.ofNullable(areas).map(s -> s.getName()).orElse("");
         return cityName+areaName;
     }
-
+    public static Areas getAddressByAreaId(Integer areaId) {
+        if(areaId ==null){
+            return null;
+        }
+        if(AREA_LIST!=null){
+            for(Areas a : AREA_LIST){
+                if(Constants.equalsInteger(a.getId(),areaId)){
+                    return a;
+//                    return  StringUtils.defaultString(a.getProvinceName(),"")+StringUtils.defaultString(a.getCityName(),"")+StringUtils.defaultString(a.getName(),"")
+                }
+            }
+        }
+        return null;
+    }
     @Override
     public List<Areas> getCityList(Areas areas)  {
         //鏌ヨ鍏ㄩ儴鍩庡競鏁版嵁
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
index e4b4a8c..5ed3b67 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
@@ -16,6 +16,7 @@
 import com.doumee.dao.business.model.Member;
 import com.doumee.dao.web.dto.IntegralDTO;
 import com.doumee.dao.web.request.DealIntegralRequest;
+import com.doumee.service.business.AreasService;
 import com.doumee.service.business.IntegralService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -51,7 +52,6 @@
 
     @Autowired
     private IntegralJoinMapper integralJoinMapper;
-
 
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/LabelsServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/LabelsServiceImpl.java
index 5e2cce9..691b616 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/LabelsServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/LabelsServiceImpl.java
@@ -18,12 +18,14 @@
 import com.doumee.dao.business.model.Goods;
 import com.doumee.dao.business.model.Labels;
 import com.doumee.dao.web.response.LabelsResponse;
+import com.doumee.service.business.AreasService;
 import com.doumee.service.business.LabelsService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.models.auth.In;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.BeanUtils;
@@ -54,6 +56,8 @@
     private AreasMapper areasMapper;
 
     @Autowired
+    private AreasService areasService;
+    @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
     @Autowired
@@ -64,6 +68,8 @@
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         labels.setCreator(user.getId());
         labels.setCreateDate(new Date());
+        labels.setEditor(user.getId());
+        labels.setEditDate(labels.getCreateDate());
         labels.setIsdeleted(Constants.ZERO);
         labels.setStatus(Constants.ZERO);
     /*  if(labels.getParentId()!=null){
@@ -79,6 +85,7 @@
             areasMapper.update(null,new UpdateWrapper<Areas>().lambda()
                     .set(Areas::getBigAreaId,labels.getId())
                     .in(Areas::getId,labels.getAreaIdList()));
+            areasService.cacheData();
         }
         return labels.getId();
     }
@@ -106,6 +113,15 @@
         labels.setEditDate(new Date());
         labels.setEditor(user.getId());
         labelsMapper.updateById(labels);
+        if(query!=null && Constants.equalsInteger(query.getType(),Constants.LabelsType.BIG_AREA.getKey())){
+            int num =  areasMapper.update(null, new UpdateWrapper<Areas>().lambda()
+                    .set(Areas::getBigAreaId, null)
+                    .eq(Areas::getBigAreaId, labels.getId()));
+            if(num>0){
+                areasService.cacheData();
+            }
+        }
+
     }
 
     @Override
@@ -125,13 +141,20 @@
         }
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         Labels labels=new Labels();
-        ids.stream().forEach(s->{
+        int num =0;
+        for(Integer s : ids){
             labels.setId(s);
             labels.setIsdeleted(Constants.ONE);
             labels.setEditDate(new Date());
             labels.setEditor(user.getId());
             labelsMapper.updateById(labels);
-        });
+            num +=  areasMapper.update(null, new UpdateWrapper<Areas>().lambda()
+                    .set(Areas::getBigAreaId, null)
+                    .eq(Areas::getBigAreaId, labels.getId()));
+        }
+        if(num>0){
+            areasService.cacheData();
+        }
     }
 
     @Override
@@ -149,16 +172,19 @@
         labelsMapper.updateById(labels);
         if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())){
             //鍏堟竻绌哄師鏉ユ墍鏈夌粦瀹氱殑鏁版嵁
-            areasMapper.update(null, new UpdateWrapper<Areas>().lambda()
+           int num =  areasMapper.update(null, new UpdateWrapper<Areas>().lambda()
                     .set(Areas::getBigAreaId, null)
                     .eq(Areas::getBigAreaId, labels.getId()));
             if( labels.getAreaIdList()!=null
                     &&labels.getAreaIdList().size()>0){
                 //璁剧疆鏈�鏂扮粦瀹氱殑鏁版嵁
-                areasMapper.update(null, new UpdateWrapper<Areas>().lambda()
+                num +=   areasMapper.update(null, new UpdateWrapper<Areas>().lambda()
                         .set(Areas::getBigAreaId, labels.getId())
                         .in(Areas::getId, labels.getAreaIdList()));
             }
+            if(num>0){
+                areasService.cacheData();
+            }
         }
     }
 
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
index fba01ff..e797e19 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -10,6 +10,7 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.LabelsMapper;
 import com.doumee.dao.business.MemberMapper;
 import com.doumee.dao.business.ShopJoinMapper;
 import com.doumee.dao.business.ShopMapper;
@@ -24,6 +25,7 @@
 import com.doumee.dao.web.dto.CouponDTO;
 import com.doumee.dao.web.dto.MemberDTO;
 import com.doumee.dao.web.dto.MultiFileDTO;
+import com.doumee.dao.web.dto.ResetSystemUserPwdDTO;
 import com.doumee.dao.web.dto.shop.*;
 import com.doumee.service.business.*;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -31,6 +33,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.shiro.SecurityUtils;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
@@ -101,6 +104,8 @@
 
     @Autowired
     private ShopNewsService shopNewsService;
+    @Autowired
+    private LabelsMapper labelsMapper;
 
     @Autowired
     private MultifileService multifileService;
@@ -112,44 +117,68 @@
         isCreateParamValid(shop,user);
         shop.setCreator(user.getId());
         shop.setCreateDate(new Date());
+        shop.setEditor(user.getId());
+        shop.setEditDate(shop.getCreateDate());
         shop.setIsdeleted(Constants.ZERO);
         shop.setStatus(Constants.ZERO);
         shop.setIsrec(Constants.ONE);
         shop.setOrigin(Constants.ONE);
+        shop.setSaleType(Constants.formatIntegerNum(shop.getSaleType()));
+        String salt = RandomStringUtils.randomAlphabetic(6);
+
+        shop.setPassword(shop.getCode()+"@123456");
+        // 鐢熸垚瀵嗙爜
+        shop.setPassword(Utils.Secure.encryptPassword(shop.getPassword(), salt));
+        shop.setSalt(salt);
         shopMapper.insert(shop);
         return shop.getId();
     }
 
     public void isCreateParamValid(Shop shop , LoginUserInfo user){
-        if(StringUtils.isBlank(shop.getName())||
-        StringUtils.isBlank(shop.getImgurl())||
-                shop.getMemberId()==null
-        ){
-            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
+        try {
+            String[] ss = shop.getLocationInfo().split(",");
+            shop.setLatitude(BigDecimal.valueOf(Double.parseDouble(ss[0])));
+            shop.setLongitude(BigDecimal.valueOf(Double.parseDouble(ss[1])));
+        }catch (Exception e){
         }
-        Member member=memberMapper.selectById(shop.getMemberId());
-
-        if(Objects.isNull(member)){
-            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"搴楅摵璐熻矗浜轰笉瀛樺湪");
+        if(StringUtils.isBlank(shop.getUsername())
+                ||  StringUtils.isBlank(shop.getPhone())
+                ||  StringUtils.isBlank(shop.getBusinessImg())
+                ||  StringUtils.isBlank(shop.getStartTime())
+                ||   shop.getLatitude()==null
+                ||   shop.getLongitude()==null
+                ||   shop.getBigAreaId()==null
+                ||   shop.getAreaId()==null
+                ||  StringUtils.isBlank(shop.getRealname())
+                ||  StringUtils.isBlank(shop.getName())
+                ||  StringUtils.isBlank(shop.getCode())){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
         }
+        if(AreasServiceImpl.getAddressByAreaId(shop.getAreaId()) ==null){
 
-        Shop query=new Shop();
-        query.setIsdeleted(Constants.ZERO);
-        query.setMemberId(shop.getMemberId());
-        if(shop.getId()!=null){
-            Shop result= shopMapper.selectOne(new QueryWrapper<>(query)
-            .last("limit 1")
-            );
-            if(!Constants.equalsInteger(result.getId(),shop.getId())){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"搴楅摵璐熻矗浜哄凡琚叧鑱旓紝璇蜂粠鏂伴�夋嫨璐熻矗浜�");
-            }
-        }else{
-            List<Shop> result= shopMapper.selectList(new QueryWrapper<>(query));
-            if(org.apache.commons.collections.CollectionUtils.isNotEmpty(result)){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"搴楅摵璐熻矗浜哄凡瀛樺湪锛岃浠庢柊閫夋嫨璐熻矗浜�");
-            }
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璇烽�夋嫨姝g‘鐨勭渷甯傚尯淇℃伅~");
         }
-
+        if(labelsMapper.selectById(shop.getBigAreaId()) ==null){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璇烽�夋嫨姝g‘鐨勫尯鍩熶俊鎭瘇");
+        }
+        if(shopMapper.selectCount(new QueryWrapper<Shop>().lambda()
+                .eq(Shop::getName,shop.getName())
+                .ne(shop.getId()!=null,Shop::getId,shop.getId())
+                .eq(Shop::getIsdeleted,Constants.ZERO))>0){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"缁忛攢鍟嗗悕绉伴噸澶嶏紝璇疯繑鍥炰慨鏀箏");
+        }
+        if(shopMapper.selectCount(new QueryWrapper<Shop>().lambda()
+                .eq(Shop::getCode,shop.getCode())
+                .ne(shop.getId()!=null,Shop::getId,shop.getId())
+                .eq(Shop::getIsdeleted,Constants.ZERO))>0){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闂ㄥ簵ID閲嶅锛岃杩斿洖淇敼~");
+        }
+        if(shopMapper.selectCount(new QueryWrapper<Shop>().lambda()
+                .eq(Shop::getUsername,shop.getUsername())
+                .ne(shop.getId()!=null,Shop::getId,shop.getId())
+                .eq(Shop::getIsdeleted,Constants.ZERO))>0){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐧诲綍璐﹀彿閲嶅锛岃杩斿洖淇敼~");
+        }
     }
 
     @Override
@@ -180,7 +209,7 @@
     @Override
     public void updateById(Shop shop) {
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-        if(shop.getId()==null){
+        if(shop.getId()==null ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
         }
         isCreateParamValid(shop,user);
@@ -279,6 +308,10 @@
         if(Objects.nonNull(shop)&&StringUtils.isNotBlank(shop.getImgurl())){
             shop.setImgFullUrl(path+shop.getImgurl());
         }
+        shop.setAreas(AreasServiceImpl.getAddressByAreaId(shop.getAreaId()));
+        if(shop.getLatitude()!=null && shop.getLongitude()!=null){
+            shop.setLocationInfo(shop.getLatitude().doubleValue()+","+shop.getLongitude().doubleValue());
+        }
         MPJLambdaWrapper<ProductLabel> queryproduct = new MPJLambdaWrapper<>();
         queryproduct.selectAs(Labels::getName,ProductLabel::getLablesName);
         queryproduct.eq(ProductLabel::getIsdeleted,Constants.ZERO);
@@ -308,24 +341,32 @@
         Utils.MP.blankToNull(pageWrap.getModel());
 
         queryWrapper.selectAll(Shop.class);
+        queryWrapper.selectAs(Labels::getName,Shop::getBigAreaName);
         queryWrapper.selectAs(Member::getNickname,Shop::getNickName);
         queryWrapper.selectAs(Member::getImgurl,Shop::getMemberImgurl);
         queryWrapper.selectAs(Member::getPhone,Shop::getMemberPhone);
 
         queryWrapper.leftJoin(Member.class,Member::getId,Shop::getMemberId);
+        queryWrapper.leftJoin(Labels.class,Labels::getId,Shop::getBigAreaId);
 
         queryWrapper.eq(Shop::getIsdeleted, Constants.ZERO);
-
-        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getName()),s->s.like(Shop::getName,pageWrap.getModel().getName()));
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCode()) ,Shop::getCode,pageWrap.getModel().getCode());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getUsername()) ,Shop::getName,pageWrap.getModel().getUsername());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()) ,Shop::getName,pageWrap.getModel().getName());
+        queryWrapper.eq(pageWrap.getModel().getSaleType()!=null, Shop::getSaleType, pageWrap.getModel().getSaleType());
         queryWrapper.eq(pageWrap.getModel().getStatus()!=null, Shop::getStatus, pageWrap.getModel().getStatus());
         queryWrapper.eq(pageWrap.getModel().getIsrec()!=null, Shop::getIsrec, pageWrap.getModel().getIsrec());
         queryWrapper.orderByDesc(Shop::getCreateDate);
         IPage<Shop> result = shopJoinMapper.selectJoinPage(page, Shop.class, queryWrapper);
-
         String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                 + systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode();
         for(Shop model:result.getRecords()){
             model.setImgFullUrl(path);
+            model.setAreas( AreasServiceImpl.getAddressByAreaId(model.getAreaId()));
+            if(model.getLatitude()!=null && model.getLongitude()!=null){
+                model.setLocationInfo(model.getLatitude().doubleValue()+","+model.getLongitude().doubleValue());
+            }
+
         }
         return PageData.from(result );
     }
@@ -530,4 +571,18 @@
         shopScan.setMemberId(shop.getMemberId());
         shopScanService.create(shopScan);
     }
+
+    @Override
+    public void resetPwd(Shop dto) {
+        // 鏌ヨ鐢ㄦ埛
+        Shop shop = findById(dto.getId());
+        if (shop == null) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        // 淇敼瀵嗙爜
+        Shop updateUserDto = new Shop();
+        updateUserDto.setId(dto.getId());
+        updateUserDto.setPassword(Utils.Secure.encryptPassword( shop.getCode()+"@123456", shop.getSalt()));
+        shopMapper.updateById(updateUserDto);
+    }
 }
diff --git a/server/startsh/admin_start.sh b/server/startsh/admin_start.sh
index f0d02aa..58267c5 100644
--- a/server/startsh/admin_start.sh
+++ b/server/startsh/admin_start.sh
@@ -9,7 +9,3 @@
 nohup java -jar /usr/local/jars/dmmall/dmmall_web_api.jar > /dev/null 2>&1 &
 
 
-
-cd /usr/local/ortools/java_or-tools
-
-
diff --git a/web/manifest.json b/web/manifest.json
index 286e027..900bf10 100644
--- a/web/manifest.json
+++ b/web/manifest.json
@@ -1,6 +1,6 @@
 {
     "name" : "smallRoutine",
-    "appid" : "",
+    "appid" : "__UNI__7C0C90D",
     "description" : "",
     "versionName" : "1.0.0",
     "versionCode" : "100",
@@ -45,6 +45,7 @@
             "sdkConfigs" : {}
         }
     },
+	"sassImplementationName": "node-sass",
     /* SDK閰嶇疆 */
     "quickapp" : {},
     /* 蹇簲鐢ㄧ壒鏈夌浉鍏� */
@@ -62,7 +63,7 @@
                 "desc" : "鐢ㄤ簬鑾峰彇鍛ㄨ竟搴楅摵"
             }
         },
-				"requiredPrivateInfos": ["getLocation"]
+        "requiredPrivateInfos" : [ "getLocation" ]
     },
     "vueVersion" : "2"
 }
diff --git a/web/package-lock.json b/web/package-lock.json
index 39c6db6..e0c9282 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -1,3008 +1,125 @@
 {
     "name": "uView",
     "version": "1.8.6",
-    "lockfileVersion": 2,
+    "lockfileVersion": 1,
     "requires": true,
-    "packages": {
-        "": {
-            "name": "uView",
-            "version": "1.8.6",
-            "license": "MIT",
-            "devDependencies": {
-                "node-sass": "^4.14.0",
-                "sass-loader": "^8.0.2"
-            }
-        },
-        "node_modules/@jridgewell/gen-mapping": {
-            "version": "0.3.2",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
-            "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@jridgewell/set-array": "^1.0.1",
-                "@jridgewell/sourcemap-codec": "^1.4.10",
-                "@jridgewell/trace-mapping": "^0.3.9"
-            },
-            "engines": {
-                "node": ">=6.0.0"
-            }
-        },
-        "node_modules/@jridgewell/resolve-uri": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
-            "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=6.0.0"
-            }
-        },
-        "node_modules/@jridgewell/set-array": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
-            "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=6.0.0"
-            }
-        },
-        "node_modules/@jridgewell/source-map": {
-            "version": "0.3.2",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz",
-            "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@jridgewell/gen-mapping": "^0.3.0",
-                "@jridgewell/trace-mapping": "^0.3.9"
-            }
-        },
-        "node_modules/@jridgewell/sourcemap-codec": {
-            "version": "1.4.14",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
-            "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/@jridgewell/trace-mapping": {
-            "version": "0.3.17",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
-            "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@jridgewell/resolve-uri": "3.1.0",
-                "@jridgewell/sourcemap-codec": "1.4.14"
-            }
-        },
-        "node_modules/@types/eslint": {
-            "version": "8.37.0",
-            "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.37.0.tgz",
-            "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@types/estree": "*",
-                "@types/json-schema": "*"
-            }
-        },
-        "node_modules/@types/eslint-scope": {
-            "version": "3.7.4",
-            "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
-            "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@types/eslint": "*",
-                "@types/estree": "*"
-            }
-        },
-        "node_modules/@types/estree": {
-            "version": "0.0.51",
-            "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-0.0.51.tgz",
-            "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/@types/json-schema": {
-            "version": "7.0.11",
-            "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz",
-            "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
-            "dev": true
-        },
-        "node_modules/@types/node": {
-            "version": "18.15.11",
-            "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.15.11.tgz",
-            "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/@webassemblyjs/ast": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.1.tgz",
-            "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@webassemblyjs/helper-numbers": "1.11.1",
-                "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
-            }
-        },
-        "node_modules/@webassemblyjs/floating-point-hex-parser": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
-            "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/@webassemblyjs/helper-api-error": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
-            "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/@webassemblyjs/helper-buffer": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
-            "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/@webassemblyjs/helper-numbers": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
-            "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@webassemblyjs/floating-point-hex-parser": "1.11.1",
-                "@webassemblyjs/helper-api-error": "1.11.1",
-                "@xtuc/long": "4.2.2"
-            }
-        },
-        "node_modules/@webassemblyjs/helper-wasm-bytecode": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
-            "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/@webassemblyjs/helper-wasm-section": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
-            "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/helper-buffer": "1.11.1",
-                "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-                "@webassemblyjs/wasm-gen": "1.11.1"
-            }
-        },
-        "node_modules/@webassemblyjs/ieee754": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
-            "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@xtuc/ieee754": "^1.2.0"
-            }
-        },
-        "node_modules/@webassemblyjs/leb128": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
-            "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@xtuc/long": "4.2.2"
-            }
-        },
-        "node_modules/@webassemblyjs/utf8": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
-            "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/@webassemblyjs/wasm-edit": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
-            "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/helper-buffer": "1.11.1",
-                "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-                "@webassemblyjs/helper-wasm-section": "1.11.1",
-                "@webassemblyjs/wasm-gen": "1.11.1",
-                "@webassemblyjs/wasm-opt": "1.11.1",
-                "@webassemblyjs/wasm-parser": "1.11.1",
-                "@webassemblyjs/wast-printer": "1.11.1"
-            }
-        },
-        "node_modules/@webassemblyjs/wasm-gen": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
-            "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-                "@webassemblyjs/ieee754": "1.11.1",
-                "@webassemblyjs/leb128": "1.11.1",
-                "@webassemblyjs/utf8": "1.11.1"
-            }
-        },
-        "node_modules/@webassemblyjs/wasm-opt": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
-            "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/helper-buffer": "1.11.1",
-                "@webassemblyjs/wasm-gen": "1.11.1",
-                "@webassemblyjs/wasm-parser": "1.11.1"
-            }
-        },
-        "node_modules/@webassemblyjs/wasm-parser": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
-            "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/helper-api-error": "1.11.1",
-                "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-                "@webassemblyjs/ieee754": "1.11.1",
-                "@webassemblyjs/leb128": "1.11.1",
-                "@webassemblyjs/utf8": "1.11.1"
-            }
-        },
-        "node_modules/@webassemblyjs/wast-printer": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
-            "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@xtuc/long": "4.2.2"
-            }
-        },
-        "node_modules/@xtuc/ieee754": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
-            "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/@xtuc/long": {
-            "version": "4.2.2",
-            "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
-            "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/abbrev": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz",
-            "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-            "dev": true
-        },
-        "node_modules/acorn": {
-            "version": "8.8.2",
-            "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
-            "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
-            "dev": true,
-            "peer": true,
-            "bin": {
-                "acorn": "bin/acorn"
-            },
-            "engines": {
-                "node": ">=0.4.0"
-            }
-        },
-        "node_modules/acorn-import-assertions": {
-            "version": "1.8.0",
-            "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
-            "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
-            "dev": true,
-            "peer": true,
-            "peerDependencies": {
-                "acorn": "^8"
-            }
-        },
-        "node_modules/ajv": {
-            "version": "6.12.6",
-            "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
-            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-            "dev": true,
-            "dependencies": {
-                "fast-deep-equal": "^3.1.1",
-                "fast-json-stable-stringify": "^2.0.0",
-                "json-schema-traverse": "^0.4.1",
-                "uri-js": "^4.2.2"
-            }
-        },
-        "node_modules/ajv-keywords": {
-            "version": "3.5.2",
-            "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-            "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-            "dev": true,
-            "peerDependencies": {
-                "ajv": "^6.9.1"
-            }
-        },
-        "node_modules/amdefine": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz",
-            "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.4.2"
-            }
-        },
-        "node_modules/ansi-regex": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
-            "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/ansi-styles": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz",
-            "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/aproba": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz",
-            "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
-            "dev": true
-        },
-        "node_modules/are-we-there-yet": {
-            "version": "1.1.7",
-            "resolved": "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
-            "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
-            "dev": true,
-            "dependencies": {
-                "delegates": "^1.0.0",
-                "readable-stream": "^2.0.6"
-            }
-        },
-        "node_modules/array-find-index": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmmirror.com/array-find-index/-/array-find-index-1.0.2.tgz",
-            "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/asn1": {
-            "version": "0.2.6",
-            "resolved": "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz",
-            "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
-            "dev": true,
-            "dependencies": {
-                "safer-buffer": "~2.1.0"
-            }
-        },
-        "node_modules/assert-plus": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz",
-            "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.8"
-            }
-        },
-        "node_modules/async-foreach": {
-            "version": "0.1.3",
-            "resolved": "https://registry.npmmirror.com/async-foreach/-/async-foreach-0.1.3.tgz",
-            "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==",
-            "dev": true,
-            "engines": {
-                "node": "*"
-            }
-        },
-        "node_modules/asynckit": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
-            "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
-            "dev": true
-        },
-        "node_modules/aws-sign2": {
-            "version": "0.7.0",
-            "resolved": "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz",
-            "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
-            "dev": true,
-            "engines": {
-                "node": "*"
-            }
-        },
-        "node_modules/aws4": {
-            "version": "1.12.0",
-            "resolved": "https://registry.npmmirror.com/aws4/-/aws4-1.12.0.tgz",
-            "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==",
-            "dev": true
-        },
-        "node_modules/balanced-match": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
-            "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-            "dev": true
-        },
-        "node_modules/bcrypt-pbkdf": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-            "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
-            "dev": true,
-            "dependencies": {
-                "tweetnacl": "^0.14.3"
-            }
-        },
-        "node_modules/big.js": {
-            "version": "5.2.2",
-            "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz",
-            "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
-            "dev": true,
-            "engines": {
-                "node": "*"
-            }
-        },
-        "node_modules/block-stream": {
-            "version": "0.0.9",
-            "resolved": "https://registry.npmmirror.com/block-stream/-/block-stream-0.0.9.tgz",
-            "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==",
-            "dev": true,
-            "dependencies": {
-                "inherits": "~2.0.0"
-            },
-            "engines": {
-                "node": "0.4 || >=0.5.8"
-            }
-        },
-        "node_modules/brace-expansion": {
-            "version": "1.1.11",
-            "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
-            "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-            "dev": true,
-            "dependencies": {
-                "balanced-match": "^1.0.0",
-                "concat-map": "0.0.1"
-            }
-        },
-        "node_modules/browserslist": {
-            "version": "4.21.5",
-            "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.5.tgz",
-            "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "caniuse-lite": "^1.0.30001449",
-                "electron-to-chromium": "^1.4.284",
-                "node-releases": "^2.0.8",
-                "update-browserslist-db": "^1.0.10"
-            },
-            "bin": {
-                "browserslist": "cli.js"
-            },
-            "engines": {
-                "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
-            }
-        },
-        "node_modules/buffer-from": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
-            "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/camelcase": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-2.1.1.tgz",
-            "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/camelcase-keys": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
-            "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==",
-            "dev": true,
-            "dependencies": {
-                "camelcase": "^2.0.0",
-                "map-obj": "^1.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/caniuse-lite": {
-            "version": "1.0.30001472",
-            "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz",
-            "integrity": "sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/caseless": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz",
-            "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
-            "dev": true
-        },
-        "node_modules/chalk": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz",
-            "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
-            "dev": true,
-            "dependencies": {
-                "ansi-styles": "^2.2.1",
-                "escape-string-regexp": "^1.0.2",
-                "has-ansi": "^2.0.0",
-                "strip-ansi": "^3.0.0",
-                "supports-color": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/chrome-trace-event": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
-            "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=6.0"
-            }
-        },
-        "node_modules/cliui": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz",
-            "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
-            "dev": true,
-            "dependencies": {
-                "string-width": "^3.1.0",
-                "strip-ansi": "^5.2.0",
-                "wrap-ansi": "^5.1.0"
-            }
-        },
-        "node_modules/cliui/node_modules/ansi-regex": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
-            "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
-            "dev": true,
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/cliui/node_modules/is-fullwidth-code-point": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-            "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
-            "dev": true,
-            "engines": {
-                "node": ">=4"
-            }
-        },
-        "node_modules/cliui/node_modules/string-width": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
-            "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-            "dev": true,
-            "dependencies": {
-                "emoji-regex": "^7.0.1",
-                "is-fullwidth-code-point": "^2.0.0",
-                "strip-ansi": "^5.1.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/cliui/node_modules/strip-ansi": {
-            "version": "5.2.0",
-            "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
-            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-            "dev": true,
-            "dependencies": {
-                "ansi-regex": "^4.1.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/clone-deep": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz",
-            "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
-            "dev": true,
-            "dependencies": {
-                "is-plain-object": "^2.0.4",
-                "kind-of": "^6.0.2",
-                "shallow-clone": "^3.0.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/code-point-at": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz",
-            "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/color-convert": {
-            "version": "1.9.3",
-            "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
-            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-            "dev": true,
-            "dependencies": {
-                "color-name": "1.1.3"
-            }
-        },
-        "node_modules/color-name": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
-            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
-            "dev": true
-        },
-        "node_modules/combined-stream": {
-            "version": "1.0.8",
-            "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
-            "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-            "dev": true,
-            "dependencies": {
-                "delayed-stream": "~1.0.0"
-            },
-            "engines": {
-                "node": ">= 0.8"
-            }
-        },
-        "node_modules/commander": {
-            "version": "2.20.3",
-            "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
-            "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/concat-map": {
-            "version": "0.0.1",
-            "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
-            "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-            "dev": true
-        },
-        "node_modules/console-control-strings": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz",
-            "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
-            "dev": true
-        },
-        "node_modules/core-util-is": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
-            "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
-            "dev": true
-        },
-        "node_modules/cross-spawn": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-3.0.1.tgz",
-            "integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==",
-            "dev": true,
-            "dependencies": {
-                "lru-cache": "^4.0.1",
-                "which": "^1.2.9"
-            }
-        },
-        "node_modules/currently-unhandled": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmmirror.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
-            "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==",
-            "dev": true,
-            "dependencies": {
-                "array-find-index": "^1.0.1"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/dashdash": {
-            "version": "1.14.1",
-            "resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz",
-            "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
-            "dev": true,
-            "dependencies": {
-                "assert-plus": "^1.0.0"
-            },
-            "engines": {
-                "node": ">=0.10"
-            }
-        },
-        "node_modules/decamelize": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
-            "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/delayed-stream": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
-            "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.4.0"
-            }
-        },
-        "node_modules/delegates": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz",
-            "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
-            "dev": true
-        },
-        "node_modules/ecc-jsbn": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-            "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
-            "dev": true,
-            "dependencies": {
-                "jsbn": "~0.1.0",
-                "safer-buffer": "^2.1.0"
-            }
-        },
-        "node_modules/electron-to-chromium": {
-            "version": "1.4.342",
-            "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.342.tgz",
-            "integrity": "sha512-dTei3VResi5bINDENswBxhL+N0Mw5YnfWyTqO75KGsVldurEkhC9+CelJVAse8jycWyP8pv3VSj4BSyP8wTWJA==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/emoji-regex": {
-            "version": "7.0.3",
-            "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
-            "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-            "dev": true
-        },
-        "node_modules/emojis-list": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz",
-            "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
-            "dev": true,
-            "engines": {
-                "node": ">= 4"
-            }
-        },
-        "node_modules/enhanced-resolve": {
-            "version": "5.12.0",
-            "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
-            "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "graceful-fs": "^4.2.4",
-                "tapable": "^2.2.0"
-            },
-            "engines": {
-                "node": ">=10.13.0"
-            }
-        },
-        "node_modules/error-ex": {
-            "version": "1.3.2",
-            "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
-            "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-            "dev": true,
-            "dependencies": {
-                "is-arrayish": "^0.2.1"
-            }
-        },
-        "node_modules/es-module-lexer": {
-            "version": "0.9.3",
-            "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
-            "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/escalade": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
-            "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/escape-string-regexp": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-            "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.8.0"
-            }
-        },
-        "node_modules/eslint-scope": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
-            "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "esrecurse": "^4.3.0",
-                "estraverse": "^4.1.1"
-            },
-            "engines": {
-                "node": ">=8.0.0"
-            }
-        },
-        "node_modules/esrecurse": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
-            "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "estraverse": "^5.2.0"
-            },
-            "engines": {
-                "node": ">=4.0"
-            }
-        },
-        "node_modules/esrecurse/node_modules/estraverse": {
-            "version": "5.3.0",
-            "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
-            "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=4.0"
-            }
-        },
-        "node_modules/estraverse": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
-            "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=4.0"
-            }
-        },
-        "node_modules/events": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
-            "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=0.8.x"
-            }
-        },
-        "node_modules/extend": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
-            "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
-            "dev": true
-        },
-        "node_modules/extsprintf": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz",
-            "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
-            "dev": true,
-            "engines": [
-                "node >=0.6.0"
-            ]
-        },
-        "node_modules/fast-deep-equal": {
-            "version": "3.1.3",
-            "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-            "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-            "dev": true
-        },
-        "node_modules/fast-json-stable-stringify": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-            "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-            "dev": true
-        },
-        "node_modules/find-up": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz",
-            "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
-            "dev": true,
-            "dependencies": {
-                "path-exists": "^2.0.0",
-                "pinkie-promise": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/forever-agent": {
-            "version": "0.6.1",
-            "resolved": "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz",
-            "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
-            "dev": true,
-            "engines": {
-                "node": "*"
-            }
-        },
-        "node_modules/form-data": {
-            "version": "2.3.3",
-            "resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz",
-            "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
-            "dev": true,
-            "dependencies": {
-                "asynckit": "^0.4.0",
-                "combined-stream": "^1.0.6",
-                "mime-types": "^2.1.12"
-            },
-            "engines": {
-                "node": ">= 0.12"
-            }
-        },
-        "node_modules/fs.realpath": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
-            "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
-            "dev": true
-        },
-        "node_modules/fstream": {
-            "version": "1.0.12",
-            "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz",
-            "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
-            "dev": true,
-            "dependencies": {
-                "graceful-fs": "^4.1.2",
-                "inherits": "~2.0.0",
-                "mkdirp": ">=0.5 0",
-                "rimraf": "2"
-            },
-            "engines": {
-                "node": ">=0.6"
-            }
-        },
-        "node_modules/function-bind": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
-            "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-            "dev": true
-        },
-        "node_modules/gauge": {
-            "version": "2.7.4",
-            "resolved": "https://registry.npmmirror.com/gauge/-/gauge-2.7.4.tgz",
-            "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==",
-            "dev": true,
-            "dependencies": {
-                "aproba": "^1.0.3",
-                "console-control-strings": "^1.0.0",
-                "has-unicode": "^2.0.0",
-                "object-assign": "^4.1.0",
-                "signal-exit": "^3.0.0",
-                "string-width": "^1.0.1",
-                "strip-ansi": "^3.0.1",
-                "wide-align": "^1.1.0"
-            }
-        },
-        "node_modules/gaze": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmmirror.com/gaze/-/gaze-1.1.3.tgz",
-            "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
-            "dev": true,
-            "dependencies": {
-                "globule": "^1.0.0"
-            },
-            "engines": {
-                "node": ">= 4.0.0"
-            }
-        },
-        "node_modules/get-caller-file": {
-            "version": "2.0.5",
-            "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
-            "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-            "dev": true,
-            "engines": {
-                "node": "6.* || 8.* || >= 10.*"
-            }
-        },
-        "node_modules/get-stdin": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-4.0.1.tgz",
-            "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/getpass": {
-            "version": "0.1.7",
-            "resolved": "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz",
-            "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
-            "dev": true,
-            "dependencies": {
-                "assert-plus": "^1.0.0"
-            }
-        },
-        "node_modules/glob": {
-            "version": "7.2.3",
-            "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
-            "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-            "dev": true,
-            "dependencies": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.1.1",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
-            },
-            "engines": {
-                "node": "*"
-            }
-        },
-        "node_modules/glob-to-regexp": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
-            "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/globule": {
-            "version": "1.3.4",
-            "resolved": "https://registry.npmmirror.com/globule/-/globule-1.3.4.tgz",
-            "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==",
-            "dev": true,
-            "dependencies": {
-                "glob": "~7.1.1",
-                "lodash": "^4.17.21",
-                "minimatch": "~3.0.2"
-            },
-            "engines": {
-                "node": ">= 0.10"
-            }
-        },
-        "node_modules/globule/node_modules/glob": {
-            "version": "7.1.7",
-            "resolved": "https://registry.npmmirror.com/glob/-/glob-7.1.7.tgz",
-            "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
-            "dev": true,
-            "dependencies": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.0.4",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
-            },
-            "engines": {
-                "node": "*"
-            }
-        },
-        "node_modules/globule/node_modules/minimatch": {
-            "version": "3.0.8",
-            "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz",
-            "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
-            "dev": true,
-            "dependencies": {
-                "brace-expansion": "^1.1.7"
-            },
-            "engines": {
-                "node": "*"
-            }
-        },
-        "node_modules/graceful-fs": {
-            "version": "4.2.11",
-            "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
-            "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
-            "dev": true
-        },
-        "node_modules/har-schema": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz",
-            "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
-            "dev": true,
-            "engines": {
-                "node": ">=4"
-            }
-        },
-        "node_modules/har-validator": {
-            "version": "5.1.5",
-            "resolved": "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz",
-            "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
-            "deprecated": "this library is no longer supported",
-            "dev": true,
-            "dependencies": {
-                "ajv": "^6.12.3",
-                "har-schema": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/has": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
-            "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-            "dev": true,
-            "dependencies": {
-                "function-bind": "^1.1.1"
-            },
-            "engines": {
-                "node": ">= 0.4.0"
-            }
-        },
-        "node_modules/has-ansi": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz",
-            "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
-            "dev": true,
-            "dependencies": {
-                "ansi-regex": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/has-flag": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
-            "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=8"
-            }
-        },
-        "node_modules/has-unicode": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz",
-            "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
-            "dev": true
-        },
-        "node_modules/hosted-git-info": {
-            "version": "2.8.9",
-            "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-            "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
-            "dev": true
-        },
-        "node_modules/http-signature": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz",
-            "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
-            "dev": true,
-            "dependencies": {
-                "assert-plus": "^1.0.0",
-                "jsprim": "^1.2.2",
-                "sshpk": "^1.7.0"
-            },
-            "engines": {
-                "node": ">=0.8",
-                "npm": ">=1.3.7"
-            }
-        },
-        "node_modules/in-publish": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmmirror.com/in-publish/-/in-publish-2.0.1.tgz",
-            "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==",
-            "dev": true,
-            "bin": {
-                "in-install": "in-install.js",
-                "in-publish": "in-publish.js",
-                "not-in-install": "not-in-install.js",
-                "not-in-publish": "not-in-publish.js"
-            }
-        },
-        "node_modules/indent-string": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-2.1.0.tgz",
-            "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==",
-            "dev": true,
-            "dependencies": {
-                "repeating": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/inflight": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
-            "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
-            "dev": true,
-            "dependencies": {
-                "once": "^1.3.0",
-                "wrappy": "1"
-            }
-        },
-        "node_modules/inherits": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
-            "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-            "dev": true
-        },
-        "node_modules/is-arrayish": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
-            "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
-            "dev": true
-        },
-        "node_modules/is-core-module": {
-            "version": "2.11.0",
-            "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz",
-            "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-            "dev": true,
-            "dependencies": {
-                "has": "^1.0.3"
-            }
-        },
-        "node_modules/is-finite": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmmirror.com/is-finite/-/is-finite-1.1.0.tgz",
-            "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/is-fullwidth-code-point": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-            "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
-            "dev": true,
-            "dependencies": {
-                "number-is-nan": "^1.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/is-plain-object": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
-            "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-            "dev": true,
-            "dependencies": {
-                "isobject": "^3.0.1"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/is-typedarray": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
-            "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
-            "dev": true
-        },
-        "node_modules/is-utf8": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmmirror.com/is-utf8/-/is-utf8-0.2.1.tgz",
-            "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
-            "dev": true
-        },
-        "node_modules/isarray": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
-            "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
-            "dev": true
-        },
-        "node_modules/isexe": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
-            "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-            "dev": true
-        },
-        "node_modules/isobject": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
-            "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/isstream": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz",
-            "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
-            "dev": true
-        },
-        "node_modules/jest-worker": {
-            "version": "27.5.1",
-            "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz",
-            "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@types/node": "*",
-                "merge-stream": "^2.0.0",
-                "supports-color": "^8.0.0"
-            },
-            "engines": {
-                "node": ">= 10.13.0"
-            }
-        },
-        "node_modules/jest-worker/node_modules/supports-color": {
-            "version": "8.1.1",
-            "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
-            "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "has-flag": "^4.0.0"
-            },
-            "engines": {
-                "node": ">=10"
-            }
-        },
-        "node_modules/js-base64": {
-            "version": "2.6.4",
-            "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz",
-            "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
-            "dev": true
-        },
-        "node_modules/jsbn": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz",
-            "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
-            "dev": true
-        },
-        "node_modules/json-parse-even-better-errors": {
-            "version": "2.3.1",
-            "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
-            "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/json-schema": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz",
-            "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
-            "dev": true
-        },
-        "node_modules/json-schema-traverse": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-            "dev": true
-        },
-        "node_modules/json-stringify-safe": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-            "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
-            "dev": true
-        },
-        "node_modules/json5": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz",
-            "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
-            "dev": true,
-            "dependencies": {
-                "minimist": "^1.2.0"
-            },
-            "bin": {
-                "json5": "lib/cli.js"
-            }
-        },
-        "node_modules/jsprim": {
-            "version": "1.4.2",
-            "resolved": "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz",
-            "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
-            "dev": true,
-            "dependencies": {
-                "assert-plus": "1.0.0",
-                "extsprintf": "1.3.0",
-                "json-schema": "0.4.0",
-                "verror": "1.10.0"
-            },
-            "engines": {
-                "node": ">=0.6.0"
-            }
-        },
-        "node_modules/kind-of": {
-            "version": "6.0.3",
-            "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
-            "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/load-json-file": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-1.1.0.tgz",
-            "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
-            "dev": true,
-            "dependencies": {
-                "graceful-fs": "^4.1.2",
-                "parse-json": "^2.2.0",
-                "pify": "^2.0.0",
-                "pinkie-promise": "^2.0.0",
-                "strip-bom": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/loader-runner": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
-            "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=6.11.5"
-            }
-        },
-        "node_modules/loader-utils": {
-            "version": "1.4.2",
-            "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz",
-            "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
-            "dev": true,
-            "dependencies": {
-                "big.js": "^5.2.2",
-                "emojis-list": "^3.0.0",
-                "json5": "^1.0.1"
-            },
-            "engines": {
-                "node": ">=4.0.0"
-            }
-        },
-        "node_modules/locate-path": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
-            "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-            "dev": true,
-            "dependencies": {
-                "p-locate": "^3.0.0",
-                "path-exists": "^3.0.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/locate-path/node_modules/path-exists": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
-            "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-            "dev": true,
-            "engines": {
-                "node": ">=4"
-            }
-        },
-        "node_modules/lodash": {
-            "version": "4.17.21",
-            "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
-            "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-            "dev": true
-        },
-        "node_modules/loud-rejection": {
-            "version": "1.6.0",
-            "resolved": "https://registry.npmmirror.com/loud-rejection/-/loud-rejection-1.6.0.tgz",
-            "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==",
-            "dev": true,
-            "dependencies": {
-                "currently-unhandled": "^0.4.1",
-                "signal-exit": "^3.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/lru-cache": {
-            "version": "4.1.5",
-            "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz",
-            "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-            "dev": true,
-            "dependencies": {
-                "pseudomap": "^1.0.2",
-                "yallist": "^2.1.2"
-            }
-        },
-        "node_modules/map-obj": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz",
-            "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/meow": {
-            "version": "3.7.0",
-            "resolved": "https://registry.npmmirror.com/meow/-/meow-3.7.0.tgz",
-            "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==",
-            "dev": true,
-            "dependencies": {
-                "camelcase-keys": "^2.0.0",
-                "decamelize": "^1.1.2",
-                "loud-rejection": "^1.0.0",
-                "map-obj": "^1.0.1",
-                "minimist": "^1.1.3",
-                "normalize-package-data": "^2.3.4",
-                "object-assign": "^4.0.1",
-                "read-pkg-up": "^1.0.1",
-                "redent": "^1.0.0",
-                "trim-newlines": "^1.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/merge-stream": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
-            "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/mime-db": {
-            "version": "1.52.0",
-            "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
-            "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-            "dev": true,
-            "engines": {
-                "node": ">= 0.6"
-            }
-        },
-        "node_modules/mime-types": {
-            "version": "2.1.35",
-            "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
-            "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-            "dev": true,
-            "dependencies": {
-                "mime-db": "1.52.0"
-            },
-            "engines": {
-                "node": ">= 0.6"
-            }
-        },
-        "node_modules/minimatch": {
-            "version": "3.1.2",
-            "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
-            "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-            "dev": true,
-            "dependencies": {
-                "brace-expansion": "^1.1.7"
-            },
-            "engines": {
-                "node": "*"
-            }
-        },
-        "node_modules/minimist": {
-            "version": "1.2.8",
-            "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
-            "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
-            "dev": true
-        },
-        "node_modules/mkdirp": {
-            "version": "0.5.6",
-            "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz",
-            "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
-            "dev": true,
-            "dependencies": {
-                "minimist": "^1.2.6"
-            },
-            "bin": {
-                "mkdirp": "bin/cmd.js"
-            }
-        },
-        "node_modules/nan": {
-            "version": "2.17.0",
-            "resolved": "https://registry.npmmirror.com/nan/-/nan-2.17.0.tgz",
-            "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
-            "dev": true
-        },
-        "node_modules/neo-async": {
-            "version": "2.6.2",
-            "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
-            "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
-            "dev": true
-        },
-        "node_modules/node-gyp": {
-            "version": "3.8.0",
-            "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-3.8.0.tgz",
-            "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
-            "dev": true,
-            "dependencies": {
-                "fstream": "^1.0.0",
-                "glob": "^7.0.3",
-                "graceful-fs": "^4.1.2",
-                "mkdirp": "^0.5.0",
-                "nopt": "2 || 3",
-                "npmlog": "0 || 1 || 2 || 3 || 4",
-                "osenv": "0",
-                "request": "^2.87.0",
-                "rimraf": "2",
-                "semver": "~5.3.0",
-                "tar": "^2.0.0",
-                "which": "1"
-            },
-            "bin": {
-                "node-gyp": "bin/node-gyp.js"
-            },
-            "engines": {
-                "node": ">= 0.8.0"
-            }
-        },
-        "node_modules/node-releases": {
-            "version": "2.0.10",
-            "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.10.tgz",
-            "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/node-sass": {
-            "version": "4.14.1",
-            "resolved": "https://registry.npmmirror.com/node-sass/-/node-sass-4.14.1.tgz",
-            "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
-            "dev": true,
-            "hasInstallScript": true,
-            "dependencies": {
-                "async-foreach": "^0.1.3",
-                "chalk": "^1.1.1",
-                "cross-spawn": "^3.0.0",
-                "gaze": "^1.0.0",
-                "get-stdin": "^4.0.1",
-                "glob": "^7.0.3",
-                "in-publish": "^2.0.0",
-                "lodash": "^4.17.15",
-                "meow": "^3.7.0",
-                "mkdirp": "^0.5.1",
-                "nan": "^2.13.2",
-                "node-gyp": "^3.8.0",
-                "npmlog": "^4.0.0",
-                "request": "^2.88.0",
-                "sass-graph": "2.2.5",
-                "stdout-stream": "^1.4.0",
-                "true-case-path": "^1.0.2"
-            },
-            "bin": {
-                "node-sass": "bin/node-sass"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/nopt": {
-            "version": "3.0.6",
-            "resolved": "https://registry.npmmirror.com/nopt/-/nopt-3.0.6.tgz",
-            "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
-            "dev": true,
-            "dependencies": {
-                "abbrev": "1"
-            },
-            "bin": {
-                "nopt": "bin/nopt.js"
-            }
-        },
-        "node_modules/normalize-package-data": {
-            "version": "2.5.0",
-            "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-            "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-            "dev": true,
-            "dependencies": {
-                "hosted-git-info": "^2.1.4",
-                "resolve": "^1.10.0",
-                "semver": "2 || 3 || 4 || 5",
-                "validate-npm-package-license": "^3.0.1"
-            }
-        },
-        "node_modules/npmlog": {
-            "version": "4.1.2",
-            "resolved": "https://registry.npmmirror.com/npmlog/-/npmlog-4.1.2.tgz",
-            "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
-            "dev": true,
-            "dependencies": {
-                "are-we-there-yet": "~1.1.2",
-                "console-control-strings": "~1.1.0",
-                "gauge": "~2.7.3",
-                "set-blocking": "~2.0.0"
-            }
-        },
-        "node_modules/number-is-nan": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz",
-            "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/oauth-sign": {
-            "version": "0.9.0",
-            "resolved": "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz",
-            "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-            "dev": true,
-            "engines": {
-                "node": "*"
-            }
-        },
-        "node_modules/object-assign": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
-            "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/once": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
-            "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-            "dev": true,
-            "dependencies": {
-                "wrappy": "1"
-            }
-        },
-        "node_modules/os-homedir": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmmirror.com/os-homedir/-/os-homedir-1.0.2.tgz",
-            "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/os-tmpdir": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-            "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/osenv": {
-            "version": "0.1.5",
-            "resolved": "https://registry.npmmirror.com/osenv/-/osenv-0.1.5.tgz",
-            "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
-            "dev": true,
-            "dependencies": {
-                "os-homedir": "^1.0.0",
-                "os-tmpdir": "^1.0.0"
-            }
-        },
-        "node_modules/p-limit": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
-            "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-            "dev": true,
-            "dependencies": {
-                "p-try": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/p-locate": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
-            "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-            "dev": true,
-            "dependencies": {
-                "p-limit": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/p-try": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
-            "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-            "dev": true,
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/parse-json": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-2.2.0.tgz",
-            "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
-            "dev": true,
-            "dependencies": {
-                "error-ex": "^1.2.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/path-exists": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz",
-            "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
-            "dev": true,
-            "dependencies": {
-                "pinkie-promise": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/path-is-absolute": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-            "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/path-parse": {
-            "version": "1.0.7",
-            "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
-            "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-            "dev": true
-        },
-        "node_modules/path-type": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmmirror.com/path-type/-/path-type-1.1.0.tgz",
-            "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
-            "dev": true,
-            "dependencies": {
-                "graceful-fs": "^4.1.2",
-                "pify": "^2.0.0",
-                "pinkie-promise": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/performance-now": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
-            "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
-            "dev": true
-        },
-        "node_modules/picocolors": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
-            "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
-            "dev": true,
-            "peer": true
-        },
-        "node_modules/pify": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz",
-            "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/pinkie": {
-            "version": "2.0.4",
-            "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz",
-            "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/pinkie-promise": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-            "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
-            "dev": true,
-            "dependencies": {
-                "pinkie": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/process-nextick-args": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-            "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-            "dev": true
-        },
-        "node_modules/pseudomap": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz",
-            "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
-            "dev": true
-        },
-        "node_modules/psl": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz",
-            "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
-            "dev": true
-        },
-        "node_modules/punycode": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz",
-            "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
-            "dev": true,
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/qs": {
-            "version": "6.5.3",
-            "resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz",
-            "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.6"
-            }
-        },
-        "node_modules/randombytes": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
-            "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "safe-buffer": "^5.1.0"
-            }
-        },
-        "node_modules/read-pkg": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-1.1.0.tgz",
-            "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
-            "dev": true,
-            "dependencies": {
-                "load-json-file": "^1.0.0",
-                "normalize-package-data": "^2.3.2",
-                "path-type": "^1.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/read-pkg-up": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
-            "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
-            "dev": true,
-            "dependencies": {
-                "find-up": "^1.0.0",
-                "read-pkg": "^1.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/readable-stream": {
-            "version": "2.3.8",
-            "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
-            "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
-            "dev": true,
-            "dependencies": {
-                "core-util-is": "~1.0.0",
-                "inherits": "~2.0.3",
-                "isarray": "~1.0.0",
-                "process-nextick-args": "~2.0.0",
-                "safe-buffer": "~5.1.1",
-                "string_decoder": "~1.1.1",
-                "util-deprecate": "~1.0.1"
-            }
-        },
-        "node_modules/redent": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/redent/-/redent-1.0.0.tgz",
-            "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==",
-            "dev": true,
-            "dependencies": {
-                "indent-string": "^2.1.0",
-                "strip-indent": "^1.0.1"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/repeating": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmmirror.com/repeating/-/repeating-2.0.1.tgz",
-            "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==",
-            "dev": true,
-            "dependencies": {
-                "is-finite": "^1.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/request": {
-            "version": "2.88.2",
-            "resolved": "https://registry.npmmirror.com/request/-/request-2.88.2.tgz",
-            "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
-            "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
-            "dev": true,
-            "dependencies": {
-                "aws-sign2": "~0.7.0",
-                "aws4": "^1.8.0",
-                "caseless": "~0.12.0",
-                "combined-stream": "~1.0.6",
-                "extend": "~3.0.2",
-                "forever-agent": "~0.6.1",
-                "form-data": "~2.3.2",
-                "har-validator": "~5.1.3",
-                "http-signature": "~1.2.0",
-                "is-typedarray": "~1.0.0",
-                "isstream": "~0.1.2",
-                "json-stringify-safe": "~5.0.1",
-                "mime-types": "~2.1.19",
-                "oauth-sign": "~0.9.0",
-                "performance-now": "^2.1.0",
-                "qs": "~6.5.2",
-                "safe-buffer": "^5.1.2",
-                "tough-cookie": "~2.5.0",
-                "tunnel-agent": "^0.6.0",
-                "uuid": "^3.3.2"
-            },
-            "engines": {
-                "node": ">= 6"
-            }
-        },
-        "node_modules/require-directory": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
-            "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/require-main-filename": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
-            "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-            "dev": true
-        },
-        "node_modules/resolve": {
-            "version": "1.22.1",
-            "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
-            "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
-            "dev": true,
-            "dependencies": {
-                "is-core-module": "^2.9.0",
-                "path-parse": "^1.0.7",
-                "supports-preserve-symlinks-flag": "^1.0.0"
-            },
-            "bin": {
-                "resolve": "bin/resolve"
-            }
-        },
-        "node_modules/rimraf": {
-            "version": "2.7.1",
-            "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz",
-            "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-            "dev": true,
-            "dependencies": {
-                "glob": "^7.1.3"
-            },
-            "bin": {
-                "rimraf": "bin.js"
-            }
-        },
-        "node_modules/safe-buffer": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
-            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-            "dev": true
-        },
-        "node_modules/safer-buffer": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
-            "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-            "dev": true
-        },
-        "node_modules/sass-graph": {
-            "version": "2.2.5",
-            "resolved": "https://registry.npmmirror.com/sass-graph/-/sass-graph-2.2.5.tgz",
-            "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
-            "dev": true,
-            "dependencies": {
-                "glob": "^7.0.0",
-                "lodash": "^4.0.0",
-                "scss-tokenizer": "^0.2.3",
-                "yargs": "^13.3.2"
-            },
-            "bin": {
-                "sassgraph": "bin/sassgraph"
-            }
-        },
-        "node_modules/sass-loader": {
-            "version": "8.0.2",
-            "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-8.0.2.tgz",
-            "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==",
-            "dev": true,
-            "dependencies": {
-                "clone-deep": "^4.0.1",
-                "loader-utils": "^1.2.3",
-                "neo-async": "^2.6.1",
-                "schema-utils": "^2.6.1",
-                "semver": "^6.3.0"
-            },
-            "engines": {
-                "node": ">= 8.9.0"
-            },
-            "peerDependencies": {
-                "fibers": ">= 3.1.0",
-                "node-sass": "^4.0.0",
-                "sass": "^1.3.0",
-                "webpack": "^4.36.0 || ^5.0.0"
-            },
-            "peerDependenciesMeta": {
-                "fibers": {
-                    "optional": true
-                },
-                "node-sass": {
-                    "optional": true
-                },
-                "sass": {
-                    "optional": true
-                }
-            }
-        },
-        "node_modules/sass-loader/node_modules/semver": {
-            "version": "6.3.0",
-            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
-            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-            "dev": true,
-            "bin": {
-                "semver": "bin/semver.js"
-            }
-        },
-        "node_modules/schema-utils": {
-            "version": "2.7.1",
-            "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz",
-            "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-            "dev": true,
-            "dependencies": {
-                "@types/json-schema": "^7.0.5",
-                "ajv": "^6.12.4",
-                "ajv-keywords": "^3.5.2"
-            },
-            "engines": {
-                "node": ">= 8.9.0"
-            }
-        },
-        "node_modules/scss-tokenizer": {
-            "version": "0.2.3",
-            "resolved": "https://registry.npmmirror.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
-            "integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==",
-            "dev": true,
-            "dependencies": {
-                "js-base64": "^2.1.8",
-                "source-map": "^0.4.2"
-            }
-        },
-        "node_modules/semver": {
-            "version": "5.3.0",
-            "resolved": "https://registry.npmmirror.com/semver/-/semver-5.3.0.tgz",
-            "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==",
-            "dev": true,
-            "bin": {
-                "semver": "bin/semver"
-            }
-        },
-        "node_modules/serialize-javascript": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
-            "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "randombytes": "^2.1.0"
-            }
-        },
-        "node_modules/set-blocking": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
-            "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
-            "dev": true
-        },
-        "node_modules/shallow-clone": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz",
-            "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
-            "dev": true,
-            "dependencies": {
-                "kind-of": "^6.0.2"
-            },
-            "engines": {
-                "node": ">=8"
-            }
-        },
-        "node_modules/signal-exit": {
-            "version": "3.0.7",
-            "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
-            "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
-            "dev": true
-        },
-        "node_modules/source-map": {
-            "version": "0.4.4",
-            "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.4.4.tgz",
-            "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==",
-            "dev": true,
-            "dependencies": {
-                "amdefine": ">=0.0.4"
-            },
-            "engines": {
-                "node": ">=0.8.0"
-            }
-        },
-        "node_modules/source-map-support": {
-            "version": "0.5.21",
-            "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
-            "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "buffer-from": "^1.0.0",
-                "source-map": "^0.6.0"
-            }
-        },
-        "node_modules/source-map-support/node_modules/source-map": {
-            "version": "0.6.1",
-            "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
-            "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/spdx-correct": {
-            "version": "3.2.0",
-            "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz",
-            "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
-            "dev": true,
-            "dependencies": {
-                "spdx-expression-parse": "^3.0.0",
-                "spdx-license-ids": "^3.0.0"
-            }
-        },
-        "node_modules/spdx-exceptions": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-            "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-            "dev": true
-        },
-        "node_modules/spdx-expression-parse": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-            "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-            "dev": true,
-            "dependencies": {
-                "spdx-exceptions": "^2.1.0",
-                "spdx-license-ids": "^3.0.0"
-            }
-        },
-        "node_modules/spdx-license-ids": {
-            "version": "3.0.13",
-            "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
-            "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
-            "dev": true
-        },
-        "node_modules/sshpk": {
-            "version": "1.17.0",
-            "resolved": "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz",
-            "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
-            "dev": true,
-            "dependencies": {
-                "asn1": "~0.2.3",
-                "assert-plus": "^1.0.0",
-                "bcrypt-pbkdf": "^1.0.0",
-                "dashdash": "^1.12.0",
-                "ecc-jsbn": "~0.1.1",
-                "getpass": "^0.1.1",
-                "jsbn": "~0.1.0",
-                "safer-buffer": "^2.0.2",
-                "tweetnacl": "~0.14.0"
-            },
-            "bin": {
-                "sshpk-conv": "bin/sshpk-conv",
-                "sshpk-sign": "bin/sshpk-sign",
-                "sshpk-verify": "bin/sshpk-verify"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/stdout-stream": {
-            "version": "1.4.1",
-            "resolved": "https://registry.npmmirror.com/stdout-stream/-/stdout-stream-1.4.1.tgz",
-            "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
-            "dev": true,
-            "dependencies": {
-                "readable-stream": "^2.0.1"
-            }
-        },
-        "node_modules/string_decoder": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
-            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-            "dev": true,
-            "dependencies": {
-                "safe-buffer": "~5.1.0"
-            }
-        },
-        "node_modules/string-width": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz",
-            "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
-            "dev": true,
-            "dependencies": {
-                "code-point-at": "^1.0.0",
-                "is-fullwidth-code-point": "^1.0.0",
-                "strip-ansi": "^3.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/strip-ansi": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz",
-            "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
-            "dev": true,
-            "dependencies": {
-                "ansi-regex": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/strip-bom": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz",
-            "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
-            "dev": true,
-            "dependencies": {
-                "is-utf8": "^0.2.0"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/strip-indent": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-1.0.1.tgz",
-            "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==",
-            "dev": true,
-            "dependencies": {
-                "get-stdin": "^4.0.1"
-            },
-            "bin": {
-                "strip-indent": "cli.js"
-            },
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/supports-color": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz",
-            "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.8.0"
-            }
-        },
-        "node_modules/supports-preserve-symlinks-flag": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-            "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-            "dev": true,
-            "engines": {
-                "node": ">= 0.4"
-            }
-        },
-        "node_modules/tapable": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
-            "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/tar": {
-            "version": "2.2.2",
-            "resolved": "https://registry.npmmirror.com/tar/-/tar-2.2.2.tgz",
-            "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
-            "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.",
-            "dev": true,
-            "dependencies": {
-                "block-stream": "*",
-                "fstream": "^1.0.12",
-                "inherits": "2"
-            }
-        },
-        "node_modules/terser": {
-            "version": "5.16.8",
-            "resolved": "https://registry.npmmirror.com/terser/-/terser-5.16.8.tgz",
-            "integrity": "sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@jridgewell/source-map": "^0.3.2",
-                "acorn": "^8.5.0",
-                "commander": "^2.20.0",
-                "source-map-support": "~0.5.20"
-            },
-            "bin": {
-                "terser": "bin/terser"
-            },
-            "engines": {
-                "node": ">=10"
-            }
-        },
-        "node_modules/terser-webpack-plugin": {
-            "version": "5.3.7",
-            "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz",
-            "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@jridgewell/trace-mapping": "^0.3.17",
-                "jest-worker": "^27.4.5",
-                "schema-utils": "^3.1.1",
-                "serialize-javascript": "^6.0.1",
-                "terser": "^5.16.5"
-            },
-            "engines": {
-                "node": ">= 10.13.0"
-            },
-            "peerDependencies": {
-                "webpack": "^5.1.0"
-            },
-            "peerDependenciesMeta": {
-                "@swc/core": {
-                    "optional": true
-                },
-                "esbuild": {
-                    "optional": true
-                },
-                "uglify-js": {
-                    "optional": true
-                }
-            }
-        },
-        "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz",
-            "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@types/json-schema": "^7.0.8",
-                "ajv": "^6.12.5",
-                "ajv-keywords": "^3.5.2"
-            },
-            "engines": {
-                "node": ">= 10.13.0"
-            }
-        },
-        "node_modules/tough-cookie": {
-            "version": "2.5.0",
-            "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz",
-            "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
-            "dev": true,
-            "dependencies": {
-                "psl": "^1.1.28",
-                "punycode": "^2.1.1"
-            },
-            "engines": {
-                "node": ">=0.8"
-            }
-        },
-        "node_modules/trim-newlines": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-1.0.0.tgz",
-            "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/true-case-path": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmmirror.com/true-case-path/-/true-case-path-1.0.3.tgz",
-            "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
-            "dev": true,
-            "dependencies": {
-                "glob": "^7.1.2"
-            }
-        },
-        "node_modules/tunnel-agent": {
-            "version": "0.6.0",
-            "resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-            "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
-            "dev": true,
-            "dependencies": {
-                "safe-buffer": "^5.0.1"
-            },
-            "engines": {
-                "node": "*"
-            }
-        },
-        "node_modules/tweetnacl": {
-            "version": "0.14.5",
-            "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz",
-            "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
-            "dev": true
-        },
-        "node_modules/update-browserslist-db": {
-            "version": "1.0.10",
-            "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
-            "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "escalade": "^3.1.1",
-                "picocolors": "^1.0.0"
-            },
-            "bin": {
-                "browserslist-lint": "cli.js"
-            },
-            "peerDependencies": {
-                "browserslist": ">= 4.21.0"
-            }
-        },
-        "node_modules/uri-js": {
-            "version": "4.4.1",
-            "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
-            "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-            "dev": true,
-            "dependencies": {
-                "punycode": "^2.1.0"
-            }
-        },
-        "node_modules/util-deprecate": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
-            "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
-            "dev": true
-        },
-        "node_modules/uuid": {
-            "version": "3.4.0",
-            "resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz",
-            "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.",
-            "dev": true,
-            "bin": {
-                "uuid": "bin/uuid"
-            }
-        },
-        "node_modules/validate-npm-package-license": {
-            "version": "3.0.4",
-            "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-            "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-            "dev": true,
-            "dependencies": {
-                "spdx-correct": "^3.0.0",
-                "spdx-expression-parse": "^3.0.0"
-            }
-        },
-        "node_modules/verror": {
-            "version": "1.10.0",
-            "resolved": "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz",
-            "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
-            "dev": true,
-            "engines": [
-                "node >=0.6.0"
-            ],
-            "dependencies": {
-                "assert-plus": "^1.0.0",
-                "core-util-is": "1.0.2",
-                "extsprintf": "^1.2.0"
-            }
-        },
-        "node_modules/verror/node_modules/core-util-is": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz",
-            "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
-            "dev": true
-        },
-        "node_modules/watchpack": {
-            "version": "2.4.0",
-            "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
-            "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "glob-to-regexp": "^0.4.1",
-                "graceful-fs": "^4.1.2"
-            },
-            "engines": {
-                "node": ">=10.13.0"
-            }
-        },
-        "node_modules/webpack": {
-            "version": "5.77.0",
-            "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.77.0.tgz",
-            "integrity": "sha512-sbGNjBr5Ya5ss91yzjeJTLKyfiwo5C628AFjEa6WSXcZa4E+F57om3Cc8xLb1Jh0b243AWuSYRf3dn7HVeFQ9Q==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@types/eslint-scope": "^3.7.3",
-                "@types/estree": "^0.0.51",
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/wasm-edit": "1.11.1",
-                "@webassemblyjs/wasm-parser": "1.11.1",
-                "acorn": "^8.7.1",
-                "acorn-import-assertions": "^1.7.6",
-                "browserslist": "^4.14.5",
-                "chrome-trace-event": "^1.0.2",
-                "enhanced-resolve": "^5.10.0",
-                "es-module-lexer": "^0.9.0",
-                "eslint-scope": "5.1.1",
-                "events": "^3.2.0",
-                "glob-to-regexp": "^0.4.1",
-                "graceful-fs": "^4.2.9",
-                "json-parse-even-better-errors": "^2.3.1",
-                "loader-runner": "^4.2.0",
-                "mime-types": "^2.1.27",
-                "neo-async": "^2.6.2",
-                "schema-utils": "^3.1.0",
-                "tapable": "^2.1.1",
-                "terser-webpack-plugin": "^5.1.3",
-                "watchpack": "^2.4.0",
-                "webpack-sources": "^3.2.3"
-            },
-            "bin": {
-                "webpack": "bin/webpack.js"
-            },
-            "engines": {
-                "node": ">=10.13.0"
-            },
-            "peerDependenciesMeta": {
-                "webpack-cli": {
-                    "optional": true
-                }
-            }
-        },
-        "node_modules/webpack-sources": {
-            "version": "3.2.3",
-            "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
-            "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
-            "dev": true,
-            "peer": true,
-            "engines": {
-                "node": ">=10.13.0"
-            }
-        },
-        "node_modules/webpack/node_modules/schema-utils": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz",
-            "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-            "dev": true,
-            "peer": true,
-            "dependencies": {
-                "@types/json-schema": "^7.0.8",
-                "ajv": "^6.12.5",
-                "ajv-keywords": "^3.5.2"
-            },
-            "engines": {
-                "node": ">= 10.13.0"
-            }
-        },
-        "node_modules/which": {
-            "version": "1.3.1",
-            "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
-            "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-            "dev": true,
-            "dependencies": {
-                "isexe": "^2.0.0"
-            },
-            "bin": {
-                "which": "bin/which"
-            }
-        },
-        "node_modules/which-module": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.0.tgz",
-            "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
-            "dev": true
-        },
-        "node_modules/wide-align": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz",
-            "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
-            "dev": true,
-            "dependencies": {
-                "string-width": "^1.0.2 || 2 || 3 || 4"
-            }
-        },
-        "node_modules/wrap-ansi": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
-            "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
-            "dev": true,
-            "dependencies": {
-                "ansi-styles": "^3.2.0",
-                "string-width": "^3.0.0",
-                "strip-ansi": "^5.0.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/wrap-ansi/node_modules/ansi-regex": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
-            "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
-            "dev": true,
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/wrap-ansi/node_modules/ansi-styles": {
-            "version": "3.2.1",
-            "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
-            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-            "dev": true,
-            "dependencies": {
-                "color-convert": "^1.9.0"
-            },
-            "engines": {
-                "node": ">=4"
-            }
-        },
-        "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-            "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
-            "dev": true,
-            "engines": {
-                "node": ">=4"
-            }
-        },
-        "node_modules/wrap-ansi/node_modules/string-width": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
-            "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-            "dev": true,
-            "dependencies": {
-                "emoji-regex": "^7.0.1",
-                "is-fullwidth-code-point": "^2.0.0",
-                "strip-ansi": "^5.1.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/wrap-ansi/node_modules/strip-ansi": {
-            "version": "5.2.0",
-            "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
-            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-            "dev": true,
-            "dependencies": {
-                "ansi-regex": "^4.1.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/wrappy": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
-            "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
-            "dev": true
-        },
-        "node_modules/y18n": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
-            "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
-            "dev": true
-        },
-        "node_modules/yallist": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
-            "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
-            "dev": true
-        },
-        "node_modules/yargs": {
-            "version": "13.3.2",
-            "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz",
-            "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
-            "dev": true,
-            "dependencies": {
-                "cliui": "^5.0.0",
-                "find-up": "^3.0.0",
-                "get-caller-file": "^2.0.1",
-                "require-directory": "^2.1.1",
-                "require-main-filename": "^2.0.0",
-                "set-blocking": "^2.0.0",
-                "string-width": "^3.0.0",
-                "which-module": "^2.0.0",
-                "y18n": "^4.0.0",
-                "yargs-parser": "^13.1.2"
-            }
-        },
-        "node_modules/yargs-parser": {
-            "version": "13.1.2",
-            "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz",
-            "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
-            "dev": true,
-            "dependencies": {
-                "camelcase": "^5.0.0",
-                "decamelize": "^1.2.0"
-            }
-        },
-        "node_modules/yargs-parser/node_modules/camelcase": {
-            "version": "5.3.1",
-            "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
-            "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-            "dev": true,
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/yargs/node_modules/ansi-regex": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
-            "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
-            "dev": true,
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/yargs/node_modules/find-up": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
-            "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-            "dev": true,
-            "dependencies": {
-                "locate-path": "^3.0.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/yargs/node_modules/is-fullwidth-code-point": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-            "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
-            "dev": true,
-            "engines": {
-                "node": ">=4"
-            }
-        },
-        "node_modules/yargs/node_modules/string-width": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
-            "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-            "dev": true,
-            "dependencies": {
-                "emoji-regex": "^7.0.1",
-                "is-fullwidth-code-point": "^2.0.0",
-                "strip-ansi": "^5.1.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/yargs/node_modules/strip-ansi": {
-            "version": "5.2.0",
-            "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
-            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-            "dev": true,
-            "dependencies": {
-                "ansi-regex": "^4.1.0"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        }
-    },
     "dependencies": {
-        "@jridgewell/gen-mapping": {
-            "version": "0.3.2",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
-            "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+        "@parcel/watcher": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.1.tgz",
+            "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
             "dev": true,
-            "peer": true,
+            "optional": true,
             "requires": {
-                "@jridgewell/set-array": "^1.0.1",
-                "@jridgewell/sourcemap-codec": "^1.4.10",
-                "@jridgewell/trace-mapping": "^0.3.9"
+                "@parcel/watcher-android-arm64": "2.5.1",
+                "@parcel/watcher-darwin-arm64": "2.5.1",
+                "@parcel/watcher-darwin-x64": "2.5.1",
+                "@parcel/watcher-freebsd-x64": "2.5.1",
+                "@parcel/watcher-linux-arm-glibc": "2.5.1",
+                "@parcel/watcher-linux-arm-musl": "2.5.1",
+                "@parcel/watcher-linux-arm64-glibc": "2.5.1",
+                "@parcel/watcher-linux-arm64-musl": "2.5.1",
+                "@parcel/watcher-linux-x64-glibc": "2.5.1",
+                "@parcel/watcher-linux-x64-musl": "2.5.1",
+                "@parcel/watcher-win32-arm64": "2.5.1",
+                "@parcel/watcher-win32-ia32": "2.5.1",
+                "@parcel/watcher-win32-x64": "2.5.1",
+                "detect-libc": "^1.0.3",
+                "is-glob": "^4.0.3",
+                "micromatch": "^4.0.5",
+                "node-addon-api": "^7.0.0"
             }
         },
-        "@jridgewell/resolve-uri": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
-            "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+        "@parcel/watcher-android-arm64": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
+            "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
             "dev": true,
-            "peer": true
+            "optional": true
         },
-        "@jridgewell/set-array": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
-            "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+        "@parcel/watcher-darwin-arm64": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
+            "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
             "dev": true,
-            "peer": true
+            "optional": true
         },
-        "@jridgewell/source-map": {
-            "version": "0.3.2",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz",
-            "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
+        "@parcel/watcher-darwin-x64": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
+            "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
             "dev": true,
-            "peer": true,
-            "requires": {
-                "@jridgewell/gen-mapping": "^0.3.0",
-                "@jridgewell/trace-mapping": "^0.3.9"
-            }
+            "optional": true
         },
-        "@jridgewell/sourcemap-codec": {
-            "version": "1.4.14",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
-            "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+        "@parcel/watcher-freebsd-x64": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
+            "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
             "dev": true,
-            "peer": true
+            "optional": true
         },
-        "@jridgewell/trace-mapping": {
-            "version": "0.3.17",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
-            "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+        "@parcel/watcher-linux-arm-glibc": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
+            "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
             "dev": true,
-            "peer": true,
-            "requires": {
-                "@jridgewell/resolve-uri": "3.1.0",
-                "@jridgewell/sourcemap-codec": "1.4.14"
-            }
+            "optional": true
         },
-        "@types/eslint": {
-            "version": "8.37.0",
-            "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.37.0.tgz",
-            "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==",
+        "@parcel/watcher-linux-arm-musl": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
+            "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
             "dev": true,
-            "peer": true,
-            "requires": {
-                "@types/estree": "*",
-                "@types/json-schema": "*"
-            }
+            "optional": true
         },
-        "@types/eslint-scope": {
-            "version": "3.7.4",
-            "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
-            "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
+        "@parcel/watcher-linux-arm64-glibc": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
+            "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
             "dev": true,
-            "peer": true,
-            "requires": {
-                "@types/eslint": "*",
-                "@types/estree": "*"
-            }
+            "optional": true
         },
-        "@types/estree": {
-            "version": "0.0.51",
-            "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-0.0.51.tgz",
-            "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
+        "@parcel/watcher-linux-arm64-musl": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
+            "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
             "dev": true,
-            "peer": true
+            "optional": true
+        },
+        "@parcel/watcher-linux-x64-glibc": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
+            "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+            "dev": true,
+            "optional": true
+        },
+        "@parcel/watcher-linux-x64-musl": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
+            "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+            "dev": true,
+            "optional": true
+        },
+        "@parcel/watcher-win32-arm64": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
+            "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
+            "dev": true,
+            "optional": true
+        },
+        "@parcel/watcher-win32-ia32": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
+            "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
+            "dev": true,
+            "optional": true
+        },
+        "@parcel/watcher-win32-x64": {
+            "version": "2.5.1",
+            "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
+            "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
+            "dev": true,
+            "optional": true
         },
         "@types/json-schema": {
             "version": "7.0.11",
@@ -3010,208 +127,11 @@
             "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
             "dev": true
         },
-        "@types/node": {
-            "version": "18.15.11",
-            "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.15.11.tgz",
-            "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==",
-            "dev": true,
-            "peer": true
-        },
-        "@webassemblyjs/ast": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.1.tgz",
-            "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@webassemblyjs/helper-numbers": "1.11.1",
-                "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
-            }
-        },
-        "@webassemblyjs/floating-point-hex-parser": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
-            "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
-            "dev": true,
-            "peer": true
-        },
-        "@webassemblyjs/helper-api-error": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
-            "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
-            "dev": true,
-            "peer": true
-        },
-        "@webassemblyjs/helper-buffer": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
-            "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
-            "dev": true,
-            "peer": true
-        },
-        "@webassemblyjs/helper-numbers": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
-            "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@webassemblyjs/floating-point-hex-parser": "1.11.1",
-                "@webassemblyjs/helper-api-error": "1.11.1",
-                "@xtuc/long": "4.2.2"
-            }
-        },
-        "@webassemblyjs/helper-wasm-bytecode": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
-            "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
-            "dev": true,
-            "peer": true
-        },
-        "@webassemblyjs/helper-wasm-section": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
-            "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/helper-buffer": "1.11.1",
-                "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-                "@webassemblyjs/wasm-gen": "1.11.1"
-            }
-        },
-        "@webassemblyjs/ieee754": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
-            "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@xtuc/ieee754": "^1.2.0"
-            }
-        },
-        "@webassemblyjs/leb128": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
-            "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@xtuc/long": "4.2.2"
-            }
-        },
-        "@webassemblyjs/utf8": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
-            "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
-            "dev": true,
-            "peer": true
-        },
-        "@webassemblyjs/wasm-edit": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
-            "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/helper-buffer": "1.11.1",
-                "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-                "@webassemblyjs/helper-wasm-section": "1.11.1",
-                "@webassemblyjs/wasm-gen": "1.11.1",
-                "@webassemblyjs/wasm-opt": "1.11.1",
-                "@webassemblyjs/wasm-parser": "1.11.1",
-                "@webassemblyjs/wast-printer": "1.11.1"
-            }
-        },
-        "@webassemblyjs/wasm-gen": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
-            "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-                "@webassemblyjs/ieee754": "1.11.1",
-                "@webassemblyjs/leb128": "1.11.1",
-                "@webassemblyjs/utf8": "1.11.1"
-            }
-        },
-        "@webassemblyjs/wasm-opt": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
-            "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/helper-buffer": "1.11.1",
-                "@webassemblyjs/wasm-gen": "1.11.1",
-                "@webassemblyjs/wasm-parser": "1.11.1"
-            }
-        },
-        "@webassemblyjs/wasm-parser": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
-            "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/helper-api-error": "1.11.1",
-                "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
-                "@webassemblyjs/ieee754": "1.11.1",
-                "@webassemblyjs/leb128": "1.11.1",
-                "@webassemblyjs/utf8": "1.11.1"
-            }
-        },
-        "@webassemblyjs/wast-printer": {
-            "version": "1.11.1",
-            "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
-            "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.11.1",
-                "@xtuc/long": "4.2.2"
-            }
-        },
-        "@xtuc/ieee754": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
-            "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
-            "dev": true,
-            "peer": true
-        },
-        "@xtuc/long": {
-            "version": "4.2.2",
-            "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
-            "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
-            "dev": true,
-            "peer": true
-        },
         "abbrev": {
             "version": "1.1.1",
             "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz",
             "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
             "dev": true
-        },
-        "acorn": {
-            "version": "8.8.2",
-            "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
-            "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
-            "dev": true,
-            "peer": true
-        },
-        "acorn-import-assertions": {
-            "version": "1.8.0",
-            "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
-            "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
-            "dev": true,
-            "peer": true,
-            "requires": {}
         },
         "ajv": {
             "version": "6.12.6",
@@ -3229,8 +149,7 @@
             "version": "3.5.2",
             "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
             "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-            "dev": true,
-            "requires": {}
+            "dev": true
         },
         "amdefine": {
             "version": "1.0.1",
@@ -3351,25 +270,15 @@
                 "concat-map": "0.0.1"
             }
         },
-        "browserslist": {
-            "version": "4.21.5",
-            "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.5.tgz",
-            "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+        "braces": {
+            "version": "3.0.3",
+            "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
+            "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
             "dev": true,
-            "peer": true,
+            "optional": true,
             "requires": {
-                "caniuse-lite": "^1.0.30001449",
-                "electron-to-chromium": "^1.4.284",
-                "node-releases": "^2.0.8",
-                "update-browserslist-db": "^1.0.10"
+                "fill-range": "^7.1.1"
             }
-        },
-        "buffer-from": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
-            "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-            "dev": true,
-            "peer": true
         },
         "camelcase": {
             "version": "2.1.1",
@@ -3386,13 +295,6 @@
                 "camelcase": "^2.0.0",
                 "map-obj": "^1.0.0"
             }
-        },
-        "caniuse-lite": {
-            "version": "1.0.30001472",
-            "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz",
-            "integrity": "sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg==",
-            "dev": true,
-            "peer": true
         },
         "caseless": {
             "version": "0.12.0",
@@ -3413,12 +315,14 @@
                 "supports-color": "^2.0.0"
             }
         },
-        "chrome-trace-event": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
-            "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+        "chokidar": {
+            "version": "4.0.3",
+            "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz",
+            "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
             "dev": true,
-            "peer": true
+            "requires": {
+                "readdirp": "^4.0.1"
+            }
         },
         "cliui": {
             "version": "5.0.0",
@@ -3506,13 +410,6 @@
                 "delayed-stream": "~1.0.0"
             }
         },
-        "commander": {
-            "version": "2.20.3",
-            "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
-            "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-            "dev": true,
-            "peer": true
-        },
         "concat-map": {
             "version": "0.0.1",
             "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
@@ -3577,6 +474,13 @@
             "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
             "dev": true
         },
+        "detect-libc": {
+            "version": "1.0.3",
+            "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
+            "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+            "dev": true,
+            "optional": true
+        },
         "ecc-jsbn": {
             "version": "0.1.2",
             "resolved": "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -3586,13 +490,6 @@
                 "jsbn": "~0.1.0",
                 "safer-buffer": "^2.1.0"
             }
-        },
-        "electron-to-chromium": {
-            "version": "1.4.342",
-            "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.342.tgz",
-            "integrity": "sha512-dTei3VResi5bINDENswBxhL+N0Mw5YnfWyTqO75KGsVldurEkhC9+CelJVAse8jycWyP8pv3VSj4BSyP8wTWJA==",
-            "dev": true,
-            "peer": true
         },
         "emoji-regex": {
             "version": "7.0.3",
@@ -3606,17 +503,6 @@
             "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
             "dev": true
         },
-        "enhanced-resolve": {
-            "version": "5.12.0",
-            "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
-            "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "graceful-fs": "^4.2.4",
-                "tapable": "^2.2.0"
-            }
-        },
         "error-ex": {
             "version": "1.3.2",
             "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
@@ -3626,69 +512,11 @@
                 "is-arrayish": "^0.2.1"
             }
         },
-        "es-module-lexer": {
-            "version": "0.9.3",
-            "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
-            "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
-            "dev": true,
-            "peer": true
-        },
-        "escalade": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
-            "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-            "dev": true,
-            "peer": true
-        },
         "escape-string-regexp": {
             "version": "1.0.5",
             "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
             "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
             "dev": true
-        },
-        "eslint-scope": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
-            "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "esrecurse": "^4.3.0",
-                "estraverse": "^4.1.1"
-            }
-        },
-        "esrecurse": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
-            "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "estraverse": "^5.2.0"
-            },
-            "dependencies": {
-                "estraverse": {
-                    "version": "5.3.0",
-                    "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
-                    "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-                    "dev": true,
-                    "peer": true
-                }
-            }
-        },
-        "estraverse": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
-            "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-            "dev": true,
-            "peer": true
-        },
-        "events": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
-            "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
-            "dev": true,
-            "peer": true
         },
         "extend": {
             "version": "3.0.2",
@@ -3713,6 +541,16 @@
             "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
             "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
             "dev": true
+        },
+        "fill-range": {
+            "version": "7.1.1",
+            "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
+            "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+            "dev": true,
+            "optional": true,
+            "requires": {
+                "to-regex-range": "^5.0.1"
+            }
         },
         "find-up": {
             "version": "1.1.2",
@@ -3825,13 +663,6 @@
                 "path-is-absolute": "^1.0.0"
             }
         },
-        "glob-to-regexp": {
-            "version": "0.4.1",
-            "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
-            "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
-            "dev": true,
-            "peer": true
-        },
         "globule": {
             "version": "1.3.4",
             "resolved": "https://registry.npmmirror.com/globule/-/globule-1.3.4.tgz",
@@ -3908,13 +739,6 @@
                 "ansi-regex": "^2.0.0"
             }
         },
-        "has-flag": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
-            "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-            "dev": true,
-            "peer": true
-        },
         "has-unicode": {
             "version": "2.0.1",
             "resolved": "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz",
@@ -3937,6 +761,12 @@
                 "jsprim": "^1.2.2",
                 "sshpk": "^1.7.0"
             }
+        },
+        "immutable": {
+            "version": "5.1.4",
+            "resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.1.4.tgz",
+            "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
+            "dev": true
         },
         "in-publish": {
             "version": "2.0.1",
@@ -3984,6 +814,13 @@
                 "has": "^1.0.3"
             }
         },
+        "is-extglob": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+            "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+            "dev": true,
+            "optional": true
+        },
         "is-finite": {
             "version": "1.1.0",
             "resolved": "https://registry.npmmirror.com/is-finite/-/is-finite-1.1.0.tgz",
@@ -3998,6 +835,23 @@
             "requires": {
                 "number-is-nan": "^1.0.0"
             }
+        },
+        "is-glob": {
+            "version": "4.0.3",
+            "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+            "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+            "dev": true,
+            "optional": true,
+            "requires": {
+                "is-extglob": "^2.1.1"
+            }
+        },
+        "is-number": {
+            "version": "7.0.0",
+            "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+            "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+            "dev": true,
+            "optional": true
         },
         "is-plain-object": {
             "version": "2.0.4",
@@ -4044,30 +898,6 @@
             "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
             "dev": true
         },
-        "jest-worker": {
-            "version": "27.5.1",
-            "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz",
-            "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@types/node": "*",
-                "merge-stream": "^2.0.0",
-                "supports-color": "^8.0.0"
-            },
-            "dependencies": {
-                "supports-color": {
-                    "version": "8.1.1",
-                    "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
-                    "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
-                    "dev": true,
-                    "peer": true,
-                    "requires": {
-                        "has-flag": "^4.0.0"
-                    }
-                }
-            }
-        },
         "js-base64": {
             "version": "2.6.4",
             "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz",
@@ -4079,13 +909,6 @@
             "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz",
             "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
             "dev": true
-        },
-        "json-parse-even-better-errors": {
-            "version": "2.3.1",
-            "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
-            "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-            "dev": true,
-            "peer": true
         },
         "json-schema": {
             "version": "0.4.0",
@@ -4144,13 +967,6 @@
                 "pinkie-promise": "^2.0.0",
                 "strip-bom": "^2.0.0"
             }
-        },
-        "loader-runner": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
-            "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
-            "dev": true,
-            "peer": true
         },
         "loader-utils": {
             "version": "1.4.2",
@@ -4231,12 +1047,16 @@
                 "trim-newlines": "^1.0.0"
             }
         },
-        "merge-stream": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
-            "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+        "micromatch": {
+            "version": "4.0.8",
+            "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
+            "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
             "dev": true,
-            "peer": true
+            "optional": true,
+            "requires": {
+                "braces": "^3.0.3",
+                "picomatch": "^2.3.1"
+            }
         },
         "mime-db": {
             "version": "1.52.0",
@@ -4289,6 +1109,13 @@
             "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
             "dev": true
         },
+        "node-addon-api": {
+            "version": "7.1.1",
+            "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz",
+            "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+            "dev": true,
+            "optional": true
+        },
         "node-gyp": {
             "version": "3.8.0",
             "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-3.8.0.tgz",
@@ -4308,13 +1135,6 @@
                 "tar": "^2.0.0",
                 "which": "1"
             }
-        },
-        "node-releases": {
-            "version": "2.0.10",
-            "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.10.tgz",
-            "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
-            "dev": true,
-            "peer": true
         },
         "node-sass": {
             "version": "4.14.1",
@@ -4494,12 +1314,12 @@
             "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
             "dev": true
         },
-        "picocolors": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
-            "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+        "picomatch": {
+            "version": "2.3.1",
+            "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+            "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
             "dev": true,
-            "peer": true
+            "optional": true
         },
         "pify": {
             "version": "2.3.0",
@@ -4552,16 +1372,6 @@
             "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
             "dev": true
         },
-        "randombytes": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
-            "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "safe-buffer": "^5.1.0"
-            }
-        },
         "read-pkg": {
             "version": "1.1.0",
             "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-1.1.0.tgz",
@@ -4597,6 +1407,12 @@
                 "string_decoder": "~1.1.1",
                 "util-deprecate": "~1.0.1"
             }
+        },
+        "readdirp": {
+            "version": "4.1.2",
+            "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz",
+            "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+            "dev": true
         },
         "redent": {
             "version": "1.0.0",
@@ -4689,6 +1505,18 @@
             "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
             "dev": true
         },
+        "sass": {
+            "version": "1.95.1",
+            "resolved": "https://registry.npmmirror.com/sass/-/sass-1.95.1.tgz",
+            "integrity": "sha512-uPoDh5NIEZV4Dp5GBodkmNY9tSQfXY02pmCcUo+FR1P+x953HGkpw+vV28D4IqYB6f8webZtwoSaZaiPtpTeMg==",
+            "dev": true,
+            "requires": {
+                "@parcel/watcher": "^2.4.1",
+                "chokidar": "^4.0.0",
+                "immutable": "^5.0.2",
+                "source-map-js": ">=0.6.2 <2.0.0"
+            }
+        },
         "sass-graph": {
             "version": "2.2.5",
             "resolved": "https://registry.npmmirror.com/sass-graph/-/sass-graph-2.2.5.tgz",
@@ -4749,16 +1577,6 @@
             "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==",
             "dev": true
         },
-        "serialize-javascript": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
-            "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "randombytes": "^2.1.0"
-            }
-        },
         "set-blocking": {
             "version": "2.0.0",
             "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -4789,25 +1607,11 @@
                 "amdefine": ">=0.0.4"
             }
         },
-        "source-map-support": {
-            "version": "0.5.21",
-            "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
-            "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "buffer-from": "^1.0.0",
-                "source-map": "^0.6.0"
-            },
-            "dependencies": {
-                "source-map": {
-                    "version": "0.6.1",
-                    "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
-                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                    "dev": true,
-                    "peer": true
-                }
-            }
+        "source-map-js": {
+            "version": "1.2.1",
+            "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
+            "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+            "dev": true
         },
         "spdx-correct": {
             "version": "3.2.0",
@@ -4867,15 +1671,6 @@
                 "readable-stream": "^2.0.1"
             }
         },
-        "string_decoder": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
-            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-            "dev": true,
-            "requires": {
-                "safe-buffer": "~5.1.0"
-            }
-        },
         "string-width": {
             "version": "1.0.2",
             "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz",
@@ -4885,6 +1680,15 @@
                 "code-point-at": "^1.0.0",
                 "is-fullwidth-code-point": "^1.0.0",
                 "strip-ansi": "^3.0.0"
+            }
+        },
+        "string_decoder": {
+            "version": "1.1.1",
+            "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+            "dev": true,
+            "requires": {
+                "safe-buffer": "~5.1.0"
             }
         },
         "strip-ansi": {
@@ -4926,13 +1730,6 @@
             "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
             "dev": true
         },
-        "tapable": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
-            "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
-            "dev": true,
-            "peer": true
-        },
         "tar": {
             "version": "2.2.2",
             "resolved": "https://registry.npmmirror.com/tar/-/tar-2.2.2.tgz",
@@ -4944,45 +1741,14 @@
                 "inherits": "2"
             }
         },
-        "terser": {
-            "version": "5.16.8",
-            "resolved": "https://registry.npmmirror.com/terser/-/terser-5.16.8.tgz",
-            "integrity": "sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==",
+        "to-regex-range": {
+            "version": "5.0.1",
+            "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+            "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
             "dev": true,
-            "peer": true,
+            "optional": true,
             "requires": {
-                "@jridgewell/source-map": "^0.3.2",
-                "acorn": "^8.5.0",
-                "commander": "^2.20.0",
-                "source-map-support": "~0.5.20"
-            }
-        },
-        "terser-webpack-plugin": {
-            "version": "5.3.7",
-            "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz",
-            "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@jridgewell/trace-mapping": "^0.3.17",
-                "jest-worker": "^27.4.5",
-                "schema-utils": "^3.1.1",
-                "serialize-javascript": "^6.0.1",
-                "terser": "^5.16.5"
-            },
-            "dependencies": {
-                "schema-utils": {
-                    "version": "3.1.1",
-                    "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz",
-                    "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-                    "dev": true,
-                    "peer": true,
-                    "requires": {
-                        "@types/json-schema": "^7.0.8",
-                        "ajv": "^6.12.5",
-                        "ajv-keywords": "^3.5.2"
-                    }
-                }
+                "is-number": "^7.0.0"
             }
         },
         "tough-cookie": {
@@ -5024,17 +1790,6 @@
             "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz",
             "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
             "dev": true
-        },
-        "update-browserslist-db": {
-            "version": "1.0.10",
-            "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
-            "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "escalade": "^3.1.1",
-                "picocolors": "^1.0.0"
-            }
         },
         "uri-js": {
             "version": "4.4.1",
@@ -5085,71 +1840,6 @@
                     "dev": true
                 }
             }
-        },
-        "watchpack": {
-            "version": "2.4.0",
-            "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
-            "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "glob-to-regexp": "^0.4.1",
-                "graceful-fs": "^4.1.2"
-            }
-        },
-        "webpack": {
-            "version": "5.77.0",
-            "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.77.0.tgz",
-            "integrity": "sha512-sbGNjBr5Ya5ss91yzjeJTLKyfiwo5C628AFjEa6WSXcZa4E+F57om3Cc8xLb1Jh0b243AWuSYRf3dn7HVeFQ9Q==",
-            "dev": true,
-            "peer": true,
-            "requires": {
-                "@types/eslint-scope": "^3.7.3",
-                "@types/estree": "^0.0.51",
-                "@webassemblyjs/ast": "1.11.1",
-                "@webassemblyjs/wasm-edit": "1.11.1",
-                "@webassemblyjs/wasm-parser": "1.11.1",
-                "acorn": "^8.7.1",
-                "acorn-import-assertions": "^1.7.6",
-                "browserslist": "^4.14.5",
-                "chrome-trace-event": "^1.0.2",
-                "enhanced-resolve": "^5.10.0",
-                "es-module-lexer": "^0.9.0",
-                "eslint-scope": "5.1.1",
-                "events": "^3.2.0",
-                "glob-to-regexp": "^0.4.1",
-                "graceful-fs": "^4.2.9",
-                "json-parse-even-better-errors": "^2.3.1",
-                "loader-runner": "^4.2.0",
-                "mime-types": "^2.1.27",
-                "neo-async": "^2.6.2",
-                "schema-utils": "^3.1.0",
-                "tapable": "^2.1.1",
-                "terser-webpack-plugin": "^5.1.3",
-                "watchpack": "^2.4.0",
-                "webpack-sources": "^3.2.3"
-            },
-            "dependencies": {
-                "schema-utils": {
-                    "version": "3.1.1",
-                    "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz",
-                    "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-                    "dev": true,
-                    "peer": true,
-                    "requires": {
-                        "@types/json-schema": "^7.0.8",
-                        "ajv": "^6.12.5",
-                        "ajv-keywords": "^3.5.2"
-                    }
-                }
-            }
-        },
-        "webpack-sources": {
-            "version": "3.2.3",
-            "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
-            "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
-            "dev": true,
-            "peer": true
         },
         "which": {
             "version": "1.3.1",
diff --git a/web/package.json b/web/package.json
index f911d31..1b50bed 100644
--- a/web/package.json
+++ b/web/package.json
@@ -17,6 +17,7 @@
     },
     "devDependencies": {
         "node-sass": "^4.14.0",
+        "sass": "^1.95.1",
         "sass-loader": "^8.0.2"
     },
     "author": "uView",
@@ -27,5 +28,6 @@
             "鍓嶇缁勪欢",
             "閫氱敤缁勪欢"
         ]
-    }
-}
\ No newline at end of file
+    },
+    "dependencies": {}
+}

--
Gitblit v1.9.3