diff --git a/.gitignore b/.gitignore
index 3c3629e..08b2553 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-node_modules
+node_modules
diff --git a/App.vue b/App.vue
index 9e17150..2e8a907 100644
--- a/App.vue
+++ b/App.vue
@@ -1,44 +1,44 @@
-
-
-
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..506f3cf
--- /dev/null
+++ b/README.md
@@ -0,0 +1,300 @@
+# Uni-Fans API 接口文档
+
+本文档详细说明了 Uni-Fans 应用中使用的所有接口,包括参数说明和使用示例。
+
+## 目录
+
+1. [订单查询接口](#1-订单查询接口)
+2. [设备信息查询接口](#2-设备信息查询接口)
+3. [订单套餐更新接口](#3-订单套餐更新接口)
+4. [用户余额更新接口](#4-用户余额更新接口)
+5. [微信支付订单创建接口](#5-微信支付订单创建接口)
+6. [设备租借指令接口](#6-设备租借指令接口)
+
+## 1. 订单查询接口
+
+### 描述
+根据订单ID查询订单详细信息。
+
+### 接口信息
+- **方法名**: `queryById`
+- **请求方式**: GET
+- **URL**: `/app/order/query/{orderId}`
+
+### 请求参数
+
+| 参数名 | 类型 | 必须 | 描述 |
+| ----- | ---- | ---- | ---- |
+| orderId | String | 是 | 订单ID |
+
+### 响应参数
+
+```json
+{
+ "code": 200,
+ "msg": "操作成功",
+ "data": {
+ "orderId": "订单ID",
+ "orderNo": "订单编号",
+ "deviceNo": "设备编号",
+ "createTime": "创建时间",
+ "phone": "联系电话",
+ "depositAmount": "押金金额",
+ "packageTime": "套餐时间(分钟)",
+ "packagePrice": "套餐价格"
+ }
+}
+```
+
+### 使用示例
+
+```javascript
+const orderInfo = await queryById('12345');
+if (orderInfo.code === 200) {
+ // 处理订单信息
+ console.log(orderInfo.data);
+}
+```
+
+## 2. 设备信息查询接口
+
+### 描述
+根据设备编号查询设备详细信息。
+
+### 接口信息
+- **方法名**: `getDeviceInfo`
+- **请求方式**: GET
+- **URL**: `/app/device/info/{deviceNo}`
+
+### 请求参数
+
+| 参数名 | 类型 | 必须 | 描述 |
+| ----- | ---- | ---- | ---- |
+| deviceNo | String | 是 | 设备编号 |
+
+### 响应参数
+
+```json
+{
+ "code": 200,
+ "msg": "操作成功",
+ "data": {
+ "device": {
+ "deviceNo": "设备编号",
+ "deviceName": "设备名称",
+ "deviceStatus": "设备状态",
+ "depositAmount": "押金金额",
+ "feeType": "收费类型(hour/times)",
+ "feeConfig": "费用配置JSON字符串"
+ }
+ }
+}
+```
+
+### 使用示例
+
+```javascript
+const deviceInfo = await getDeviceInfo('D001');
+if (deviceInfo.code === 200) {
+ // 处理设备信息
+ console.log(deviceInfo.data.device);
+}
+```
+
+## 3. 订单套餐更新接口
+
+### 描述
+更新订单的套餐信息。
+
+### 接口信息
+- **方法名**: `updateOrderPackage`
+- **请求方式**: POST
+- **URL**: `/app/order/update-package`
+
+### 请求参数
+
+| 参数名 | 类型 | 必须 | 描述 |
+| ----- | ---- | ---- | ---- |
+| orderId | String | 是 | 订单ID |
+| packageTime | Number | 是 | 套餐时间(分钟) |
+| packagePrice | Number | 是 | 套餐价格 |
+
+### 响应参数
+
+```json
+{
+ "code": 200,
+ "msg": "操作成功",
+ "data": null
+}
+```
+
+### 使用示例
+
+```javascript
+const result = await updateOrderPackage({
+ orderId: '12345',
+ packageTime: 360, // 6小时(分钟)
+ packagePrice: 30 // 30元
+});
+if (result.code === 200) {
+ console.log('套餐更新成功');
+}
+```
+
+## 4. 用户余额更新接口
+
+### 描述
+支付成功后更新用户余额信息。
+
+### 接口信息
+- **方法名**: `updateUserBalance`
+- **请求方式**: POST
+- **URL**: `/app/user/update-balance`
+
+### 请求参数
+
+| 参数名 | 类型 | 必须 | 描述 |
+| ----- | ---- | ---- | ---- |
+| orderId | String | 是 | 订单ID |
+
+### 响应参数
+
+```json
+{
+ "code": 200,
+ "msg": "操作成功",
+ "data": {
+ "userId": "用户ID",
+ "balance": "更新后余额"
+ }
+}
+```
+
+### 使用示例
+
+```javascript
+const result = await updateUserBalance('12345');
+if (result.code === 200) {
+ console.log('用户余额更新成功');
+}
+```
+
+## 5. 微信支付订单创建接口
+
+### 描述
+创建微信支付订单。
+
+### 接口信息
+- **请求方式**: GET
+- **URL**: `/app/wx-payment/create/{orderNo}`
+
+### 请求参数
+
+| 参数名 | 类型 | 必须 | 描述 |
+| ----- | ---- | ---- | ---- |
+| orderNo | String | 是 | 订单编号 |
+
+### 请求头
+
+| 参数名 | 必须 | 描述 |
+| ----- | ---- | ---- |
+| Authorization | 是 | Bearer 认证令牌 |
+| Clientid | 是 | 客户端ID |
+
+### 响应参数
+
+```json
+{
+ "code": 200,
+ "msg": "操作成功",
+ "data": {
+ "appId": "微信应用ID",
+ "timeStamp": "时间戳",
+ "nonceStr": "随机字符串",
+ "package": "预支付交易会话标识",
+ "signType": "签名类型",
+ "paySign": "签名"
+ }
+}
+```
+
+### 使用示例
+
+```javascript
+const res = await uni.request({
+ url: `${URL}/app/wx-payment/create/${orderNo}`,
+ method: 'GET',
+ header: {
+ 'Authorization': "Bearer " + uni.getStorageSync('token'),
+ 'Clientid': uni.getStorageSync('client_id')
+ }
+});
+
+if (res.statusCode === 200 && res.data.code === 200) {
+ const payParams = res.data.data;
+ await uni.requestPayment({
+ ...payParams,
+ success: () => {
+ console.log('支付成功');
+ },
+ fail: (err) => {
+ console.error('支付失败:', err);
+ }
+ });
+}
+```
+
+## 6. 设备租借指令接口
+
+### 描述
+发送设备租借指令。
+
+### 接口信息
+- **请求方式**: POST
+- **URL**: `/app/device/sendRentCommand`
+
+### 请求参数
+
+| 参数名 | 类型 | 必须 | 描述 |
+| ----- | ---- | ---- | ---- |
+| orderId | String | 是 | 订单ID |
+
+### 请求头
+
+| 参数名 | 必须 | 描述 |
+| ----- | ---- | ---- |
+| Content-Type | 是 | application/x-www-form-urlencoded |
+| Authorization | 是 | Bearer 认证令牌 |
+| Clientid | 是 | 客户端ID |
+
+### 响应参数
+
+```json
+{
+ "code": 200,
+ "msg": "操作成功",
+ "data": null
+}
+```
+
+### 使用示例
+
+```javascript
+const res = await uni.request({
+ url: `${URL}/app/device/sendRentCommand`,
+ method: 'POST',
+ data: {
+ orderId: '12345'
+ },
+ header: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'Authorization': "Bearer " + uni.getStorageSync('token'),
+ 'Clientid': uni.getStorageSync('client_id')
+ }
+});
+
+if (res.statusCode === 200 && res.data.code === 200) {
+ console.log('租借指令发送成功');
+}
+```
\ No newline at end of file
diff --git a/config/http.js b/config/http.js
index 70e89f8..fa43e4c 100644
--- a/config/http.js
+++ b/config/http.js
@@ -1,61 +1,88 @@
-import {
- URL,
- appid
-} from './url'
-
-const request = (option) => {
- return new Promise((resolve, reject) => {
- // Debug request info
- console.log(`发起请求: ${option.method} ${URL + option.url}`, option.data)
-
- uni.request({
- url: URL + option.url,
- method: option.method,
- data: option.data,
- header: {
- "Content-Type": "application/x-www-form-urlencoded",
- ...option.headers,
- 'appid': appid,
- 'Authorization': "Bearer " + uni.getStorageSync('token'),
- 'Clientid': uni.getStorageSync('client_id')
- },
- success(res) {
- // 记录响应
- console.log(`请求响应: ${option.url}`, res)
-
- // 检查响应状态码
- if (res.statusCode !== 200) {
- console.error(`HTTP状态码错误: ${res.statusCode}`, res.data)
-
- // 为了适应某些服务器的异常响应,我们仍然返回数据
- if (res.data) {
- resolve(res.data)
- return
- }
-
- reject({msg: `请求失败,状态码:${res.statusCode}`})
- return
- }
-
- // 检查业务状态码
- if (res.data && res.data.code !== 200) {
- console.warn(`业务状态码错误: ${res.data.code}`, res.data)
-
- // 仍然返回数据,由业务逻辑处理
- resolve(res.data)
- return
- }
-
- resolve(res.data)
- },
- fail(err) {
- // 网络请求本身失败
- console.error(`请求失败: ${option.url}`, err)
- reject(err)
- }
- })
- })
-}
-
-
+import {
+ URL,
+ appid
+} from './url'
+
+const request = (option) => {
+ return new Promise((resolve, reject) => {
+ // Debug request info
+ console.log(`发起请求: ${option.method} ${URL + option.url}`, option.data)
+
+ // 默认不显示加载中提示
+ if (!option.hideLoading) {
+ uni.showLoading({
+ title: option.loadingText || '加载中...',
+ mask: true
+ })
+ }
+
+ uni.request({
+ url: URL + option.url,
+ method: option.method,
+ data: option.data,
+ header: {
+ "Content-Type": "application/x-www-form-urlencoded",
+ ...option.headers,
+ 'appid': appid,
+ 'Authorization': "Bearer " + uni.getStorageSync('token'),
+ 'Clientid': uni.getStorageSync('client_id')
+ },
+ success(res) {
+ // 记录响应
+ console.log(`请求响应: ${option.url}`, res)
+
+ // 检查响应状态码
+ if (res.statusCode !== 200) {
+ console.error(`HTTP状态码错误: ${res.statusCode}`, res.data)
+
+ // 为了适应某些服务器的异常响应,我们仍然返回数据
+ if (res.data) {
+ resolve(res.data)
+ return
+ }
+
+ reject({msg: `请求失败,状态码:${res.statusCode}`})
+ return
+ }
+
+ // 检查业务状态码
+ if (res.data && res.data.code !== 200) {
+ console.warn(`业务状态码错误: ${res.data.code}`, res.data)
+
+ // 判断是否需要忽略数据为空的错误
+ if (option.ignoreEmptyError &&
+ (res.data.code === 500 && res.data.msg &&
+ (res.data.msg.includes('未找到') || res.data.msg.includes('不存在')))) {
+ // 对于指定需要忽略的错误,返回一个标准的"成功但数据为空"的响应
+ resolve({
+ code: 200,
+ msg: "操作成功",
+ data: []
+ })
+ return
+ }
+
+ // 仍然返回数据,由业务逻辑处理
+ resolve(res.data)
+ return
+ }
+
+ resolve(res.data)
+ },
+ fail(err) {
+ // 网络请求本身失败
+ console.error(`请求失败: ${option.url}`, err)
+ reject(err)
+ },
+ complete() {
+ // 隐藏加载提示
+ if (!option.hideLoading) {
+ uni.hideLoading()
+ }
+ }
+ })
+ })
+}
+
+
export default request
\ No newline at end of file
diff --git a/config/url.js b/config/url.js
index 7108441..305e9fb 100644
--- a/config/url.js
+++ b/config/url.js
@@ -1,4 +1,4 @@
-// export const URL = "https://notify.gxfs123.com"
-export const URL = "http://127.0.0.1:8080"
-
-export const appid = "wx3ae63fb09936b379"
\ No newline at end of file
+// export const URL = "https://unifans.gxfs123.com"
+export const URL = "http://127.0.0.1:8080"
+
+export const appid = "wxe752f45e7f7aa271"
\ No newline at end of file
diff --git a/config/user.js b/config/user.js
index bb3d6a0..3c5dbe5 100644
--- a/config/user.js
+++ b/config/user.js
@@ -18,6 +18,16 @@ export const getMyIndexInfo = (data) => {
})
}
+// 添加押金提现API
+export const withdrawDeposit = (orderNo) => {
+ console.log('调用提现API,订单号:', orderNo)
+ return request({
+ url: `/app/withdraw/add/${orderNo}`,
+ method: 'get',
+ hideLoading: true
+ })
+}
+
//获取所有全部订单
export const getOrderList = (data) => {
return request({
@@ -36,6 +46,18 @@ export const queryHasOrder = (deviceNo) => {
})
}
+// 查询指定设备号下,特定状态的订单列表
+export const checkOrdersByStatus = (deviceNo, statuses) => {
+ // statuses 是一个包含状态字符串的数组,例如 ['in_used', 'waiting_for_payment']
+ const statusQuery = statuses.join(','); // 后端需要支持逗号分隔的状态查询
+ return request({
+ url: `/app/order/list?deviceNo=${deviceNo}&orderStatus=${statusQuery}`,
+ method: 'get',
+ hideLoading: true, // 隐藏加载提示,避免干扰用户
+ ignoreEmptyError: true // 添加标记,表示即使返回空数据也不视为错误
+ })
+}
+
//设备查询
export const getDeviceInfo = (deviceNo) => {
return request({
@@ -56,9 +78,11 @@ export const createOrder = (data) => {
//查询订单
export const queryById = (id) => {
+ console.log(`查询订单详情, orderId: ${id}`)
return request({
url: `/app/order/${id}`,
method: 'get',
+ hideLoading: true
})
}
@@ -91,6 +115,16 @@ export const rentPowerBank = (deviceNo, phone) => {
})
}
+//确认支付并弹出充电宝
+export const confirmPaymentAndRent = (orderId) => {
+ console.log(`确认支付并弹出充电宝, orderId: ${orderId}`)
+ return request({
+ url: `/app/device/confirmPaymentAndRent?orderId=${orderId}`,
+ method: 'post'
+ })
+}
+
+
//投诉反馈
export const addUserFeedback = (data) => {
@@ -100,3 +134,41 @@ export const addUserFeedback = (data) => {
data,
})
}
+
+//强制打开空格子
+export const forcefOpenEmptyGrid = (deviceNo) => {
+ console.log(`强制打开空格子, deviceNo: ${deviceNo}`)
+ return request({
+ url: `/app/device/forcef/${deviceNo}`,
+ method: 'post'
+ })
+}
+
+// 通过订单号获取订单信息
+export const getOrderByOrderNo = (orderNo) => {
+ console.log('通过订单号获取订单信息:', orderNo)
+ return request({
+ url: `/app/order/byOrderNo/${orderNo}`,
+ method: 'get',
+ hideLoading: true
+ })
+}
+
+// 更新订单套餐信息
+export const updateOrderPackage = (data) => {
+ console.log('更新订单套餐信息:', data)
+ return request({
+ url: '/app/device/updateOrderPackage',
+ method: 'post',
+ data
+ })
+}
+
+// 更新用户余额
+export const updateUserBalance = (orderId) => {
+ return request({
+ url: `/app/user/updateBalance/${orderId}`,
+ method: 'post',
+ hideLoading: true
+ })
+}
diff --git a/constants/help.js b/constants/help.js
index 342f217..4aab95d 100644
--- a/constants/help.js
+++ b/constants/help.js
@@ -1,39 +1,39 @@
-// 帮助中心文案配置
-export const HELP_CONTENT = {
- // FAQ列表
- FAQ_LIST: [
- {
- question: '如何租借风扇?',
- answer: '点击首页"扫码租借"按钮,使用微信扫描设备上的二维码,按提示完成支付即可使用。'
- },
- {
- question: '收费标准是怎样的?',
- answer: '使用费用为2元/小时,不足1小时按1小时计算。押金99元,归还后自动退还。'
- },
- {
- question: '如何归还风扇?',
- answer: '将风扇带到任意归还点,点击首页"扫码归还"按钮,扫描归还点二维码即可完成归还。'
- },
- {
- question: '押金多久能退还?',
- answer: '归还设备后押金将自动发起退款,预计0-7个工作日到账。'
- },
- {
- question: '设备无法正常使用怎么办?',
- answer: '您可以通过"我的-投诉与建议"提交故障反馈,或直接拨打客服电话处理。'
- }
- ],
-
- // 联系方式
- CONTACT: {
- TITLE: '联系客服',
- PHONE: {
- LABEL: '客服电话',
- VALUE: '400-888-8888'
- },
- SERVICE_TIME: {
- LABEL: '服务时间',
- VALUE: '周一至周日 09:00-22:00'
- }
- }
+// 帮助中心文案配置
+export const HELP_CONTENT = {
+ // FAQ列表
+ FAQ_LIST: [
+ {
+ question: '如何租借风扇?',
+ answer: '点击首页"扫码租借"按钮,使用微信扫描设备上的二维码,按提示完成支付即可使用。'
+ },
+ {
+ question: '收费标准是怎样的?',
+ answer: '使用费用为2元/小时,不足1小时按1小时计算。押金99元,归还后自动退还。'
+ },
+ {
+ question: '如何归还风扇?',
+ answer: '将风扇带到任意归还点,点击首页"扫码归还"按钮,扫描归还点二维码即可完成归还。'
+ },
+ {
+ question: '押金多久能退还?',
+ answer: '归还设备后押金将自动发起退款,预计0-7个工作日到账。'
+ },
+ {
+ question: '设备无法正常使用怎么办?',
+ answer: '您可以通过"我的-投诉与建议"提交故障反馈,或直接拨打客服电话处理。'
+ }
+ ],
+
+ // 联系方式
+ CONTACT: {
+ TITLE: '联系客服',
+ PHONE: {
+ LABEL: '客服电话',
+ VALUE: '400-888-8888'
+ },
+ SERVICE_TIME: {
+ LABEL: '服务时间',
+ VALUE: '周一至周日 09:00-22:00'
+ }
+ }
}
\ No newline at end of file
diff --git a/constants/orderStatus.js b/constants/orderStatus.js
index fd841db..4674974 100644
--- a/constants/orderStatus.js
+++ b/constants/orderStatus.js
@@ -1,55 +1,55 @@
-/**
- * 订单状态映射
- */
-export const OrderStatusMap = {
- waiting_for_payment: {
- text: '待支付',
- class: 'status-waiting'
- },
- payment_in_progress: {
- text: '支付中',
- class: 'status-progress'
- },
- payment_successful: {
- text: '支付成功',
- class: 'status-success'
- },
- in_used: {
- text: '使用中',
- class: 'status-using'
- },
- payment_failed: {
- text: '支付失败',
- class: 'status-failed'
- },
- order_cancelled: {
- text: '已取消',
- class: 'status-cancelled'
- },
- used_done: {
- text: '已完成',
- class: 'status-finished'
- }
-}
-
-/**
- * 订单状态分类
- */
-export const OrderStatusTabs = [
- {
- text: '全部',
- status: []
- },
- {
- text: '待支付',
- status: ['waiting_for_payment', 'payment_in_progress']
- },
- {
- text: '使用中',
- status: ['payment_successful', 'in_used']
- },
- {
- text: '已完成',
- status: ['used_done', 'payment_failed', 'order_cancelled']
- }
+/**
+ * 订单状态映射
+ */
+export const OrderStatusMap = {
+ waiting_for_payment: {
+ text: '待支付',
+ class: 'status-waiting'
+ },
+ payment_in_progress: {
+ text: '支付中',
+ class: 'status-progress'
+ },
+ payment_successful: {
+ text: '支付成功',
+ class: 'status-success'
+ },
+ in_used: {
+ text: '使用中',
+ class: 'status-using'
+ },
+ payment_failed: {
+ text: '支付失败',
+ class: 'status-failed'
+ },
+ order_cancelled: {
+ text: '已取消',
+ class: 'status-cancelled'
+ },
+ used_done: {
+ text: '已完成',
+ class: 'status-finished'
+ }
+}
+
+/**
+ * 订单状态分类
+ */
+export const OrderStatusTabs = [
+ {
+ text: '全部',
+ status: []
+ },
+ {
+ text: '待支付',
+ status: ['waiting_for_payment', 'payment_in_progress']
+ },
+ {
+ text: '使用中',
+ status: ['payment_successful', 'in_used']
+ },
+ {
+ text: '已完成',
+ status: ['used_done', 'payment_failed', 'order_cancelled']
+ }
]
\ No newline at end of file
diff --git a/index.html b/index.html
index c3ff205..d6df0d5 100644
--- a/index.html
+++ b/index.html
@@ -1,20 +1,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/main.js b/main.js
index 3337180..6bcaf9b 100644
--- a/main.js
+++ b/main.js
@@ -1,27 +1,35 @@
-import App from './App'
-
-import uView from "uview-ui";
-
-
-// #ifndef VUE3
-import Vue from 'vue'
-import './uni.promisify.adaptor'
-Vue.config.productionTip = false
-App.mpType = 'app'
-Vue.use(uView)
-const app = new Vue({
- ...App
-})
-app.$mount()
-// #endif
-
-// #ifdef VUE3
-import { createSSRApp } from 'vue'
-export function createApp() {
- const app = createSSRApp(App)
-
- return {
- app
- }
-}
+import App from './App'
+import { orderMonitor } from './utils/orderMonitor.js'
+
+import uView from "uview-ui";
+
+
+// #ifndef VUE3
+import Vue from 'vue'
+import './uni.promisify.adaptor'
+Vue.config.productionTip = false
+
+// 注册全局订单监控服务
+Vue.prototype.$orderMonitor = orderMonitor
+
+App.mpType = 'app'
+Vue.use(uView)
+const app = new Vue({
+ ...App
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import { createSSRApp } from 'vue'
+export function createApp() {
+ const app = createSSRApp(App)
+
+ // 注册全局订单监控服务到VUE3
+ app.config.globalProperties.$orderMonitor = orderMonitor
+
+ return {
+ app
+ }
+}
// #endif
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index 4656b91..638c563 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,6 +1,6 @@
{
"name" : "fs",
- "appid" : "__UNI__66470C9",
+ "appid" : "__UNI__4630191",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
@@ -50,7 +50,7 @@
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
- "appid" : "wx3ae63fb09936b379",
+ "appid" : "wxe752f45e7f7aa271",
"setting" : {
"urlCheck" : false
},
diff --git a/package-lock.json b/package-lock.json
index 5de7fd3..8e73d66 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,1757 +1,1757 @@
-{
- "name": "uni-fans",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "dependencies": {
- "axios": "^1.7.9",
- "axios-miniprogram-adapter": "0.3.4",
- "uniapp-axios-adapter": "^0.3.2",
- "uview-ui": "1.8.8"
- },
- "devDependencies": {
- "sass": "^1.57.1",
- "sass-loader": "^13.2.0"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.8",
- "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
- "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/source-map": {
- "version": "0.3.6",
- "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz",
- "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@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,
- "hasInstallScript": true,
- "optional": true,
- "dependencies": {
- "detect-libc": "^1.0.3",
- "is-glob": "^4.0.3",
- "micromatch": "^4.0.5",
- "node-addon-api": "^7.0.0"
- },
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- },
- "optionalDependencies": {
- "@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"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@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==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@types/eslint": {
- "version": "9.6.1",
- "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-9.6.1.tgz",
- "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
- "node_modules/@types/eslint-scope": {
- "version": "3.7.7",
- "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
- "node_modules/@types/estree": {
- "version": "1.0.7",
- "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.7.tgz",
- "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true,
- "peer": true
- },
- "node_modules/@types/node": {
- "version": "22.14.0",
- "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.14.0.tgz",
- "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "undici-types": "~6.21.0"
- }
- },
- "node_modules/@webassemblyjs/ast": {
- "version": "1.14.1",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.14.1.tgz",
- "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/helper-numbers": "1.13.2",
- "@webassemblyjs/helper-wasm-bytecode": "1.13.2"
- }
- },
- "node_modules/@webassemblyjs/floating-point-hex-parser": {
- "version": "1.13.2",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
- "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
- "dev": true,
- "peer": true
- },
- "node_modules/@webassemblyjs/helper-api-error": {
- "version": "1.13.2",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
- "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/@webassemblyjs/helper-buffer": {
- "version": "1.14.1",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
- "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
- "dev": true,
- "peer": true
- },
- "node_modules/@webassemblyjs/helper-numbers": {
- "version": "1.13.2",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
- "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/floating-point-hex-parser": "1.13.2",
- "@webassemblyjs/helper-api-error": "1.13.2",
- "@xtuc/long": "4.2.2"
- }
- },
- "node_modules/@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.13.2",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
- "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
- "dev": true,
- "peer": true
- },
- "node_modules/@webassemblyjs/helper-wasm-section": {
- "version": "1.14.1",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
- "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.14.1",
- "@webassemblyjs/helper-buffer": "1.14.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
- "@webassemblyjs/wasm-gen": "1.14.1"
- }
- },
- "node_modules/@webassemblyjs/ieee754": {
- "version": "1.13.2",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
- "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@xtuc/ieee754": "^1.2.0"
- }
- },
- "node_modules/@webassemblyjs/leb128": {
- "version": "1.13.2",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
- "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@xtuc/long": "4.2.2"
- }
- },
- "node_modules/@webassemblyjs/utf8": {
- "version": "1.13.2",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
- "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/@webassemblyjs/wasm-edit": {
- "version": "1.14.1",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
- "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.14.1",
- "@webassemblyjs/helper-buffer": "1.14.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
- "@webassemblyjs/helper-wasm-section": "1.14.1",
- "@webassemblyjs/wasm-gen": "1.14.1",
- "@webassemblyjs/wasm-opt": "1.14.1",
- "@webassemblyjs/wasm-parser": "1.14.1",
- "@webassemblyjs/wast-printer": "1.14.1"
- }
- },
- "node_modules/@webassemblyjs/wasm-gen": {
- "version": "1.14.1",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
- "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.14.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
- "@webassemblyjs/ieee754": "1.13.2",
- "@webassemblyjs/leb128": "1.13.2",
- "@webassemblyjs/utf8": "1.13.2"
- }
- },
- "node_modules/@webassemblyjs/wasm-opt": {
- "version": "1.14.1",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
- "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.14.1",
- "@webassemblyjs/helper-buffer": "1.14.1",
- "@webassemblyjs/wasm-gen": "1.14.1",
- "@webassemblyjs/wasm-parser": "1.14.1"
- }
- },
- "node_modules/@webassemblyjs/wasm-parser": {
- "version": "1.14.1",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
- "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.14.1",
- "@webassemblyjs/helper-api-error": "1.13.2",
- "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
- "@webassemblyjs/ieee754": "1.13.2",
- "@webassemblyjs/leb128": "1.13.2",
- "@webassemblyjs/utf8": "1.13.2"
- }
- },
- "node_modules/@webassemblyjs/wast-printer": {
- "version": "1.14.1",
- "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
- "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@webassemblyjs/ast": "1.14.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/acorn": {
- "version": "8.14.1",
- "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.14.1.tgz",
- "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
- "dev": true,
- "peer": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^3.0.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ajv-formats": {
- "version": "2.1.1",
- "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz",
- "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
- }
- },
- "node_modules/ajv-keywords": {
- "version": "5.1.0",
- "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
- "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3"
- },
- "peerDependencies": {
- "ajv": "^8.8.2"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "node_modules/axios": {
- "version": "1.8.4",
- "resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.4.tgz",
- "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
- "dependencies": {
- "follow-redirects": "^1.15.6",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "node_modules/axios-miniprogram-adapter": {
- "version": "0.3.4",
- "resolved": "https://registry.npmmirror.com/axios-miniprogram-adapter/-/axios-miniprogram-adapter-0.3.4.tgz",
- "integrity": "sha512-nQVl5bIUn9bW9IWT/pWBjsFt0RtXTMc24t5ISHS6NVYg/U6EUDzbPW1vWq5nXFc3MniJYi+6iNlliVB6lWpfNg==",
- "dependencies": {
- "axios": "^0.19.2"
- }
- },
- "node_modules/axios-miniprogram-adapter/node_modules/axios": {
- "version": "0.19.2",
- "resolved": "https://registry.npmmirror.com/axios/-/axios-0.19.2.tgz",
- "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
- "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410",
- "dependencies": {
- "follow-redirects": "1.5.10"
- }
- },
- "node_modules/axios-miniprogram-adapter/node_modules/follow-redirects": {
- "version": "1.5.10",
- "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.5.10.tgz",
- "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
- "dependencies": {
- "debug": "=3.1.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/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,
- "optional": true,
- "dependencies": {
- "fill-range": "^7.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browserslist": {
- "version": "4.24.4",
- "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.4.tgz",
- "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "peer": true,
- "dependencies": {
- "caniuse-lite": "^1.0.30001688",
- "electron-to-chromium": "^1.5.73",
- "node-releases": "^2.0.19",
- "update-browserslist-db": "^1.1.1"
- },
- "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/call-bind-apply-helpers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
- "dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001707",
- "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz",
- "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "peer": true
- },
- "node_modules/chokidar": {
- "version": "4.0.3",
- "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz",
- "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
- "dev": true,
- "dependencies": {
- "readdirp": "^4.0.1"
- },
- "engines": {
- "node": ">= 14.16.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/chrome-trace-event": {
- "version": "1.0.4",
- "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
- "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.0"
- }
- },
- "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==",
- "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/debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dependencies": {
- "ms": "2.0.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==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/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,
- "bin": {
- "detect-libc": "bin/detect-libc.js"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/dunder-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.1",
- "es-errors": "^1.3.0",
- "gopd": "^1.2.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/electron-to-chromium": {
- "version": "1.5.130",
- "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.130.tgz",
- "integrity": "sha512-Ou2u7L9j2XLZbhqzyX0jWDj6gA8D3jIfVzt4rikLf3cGBa0VdReuFimBKS9tQJA4+XpeCxj1NoWlfBXzbMa9IA==",
- "dev": true,
- "peer": true
- },
- "node_modules/enhanced-resolve": {
- "version": "5.18.1",
- "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
- "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/es-define-property": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz",
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-module-lexer": {
- "version": "1.6.0",
- "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
- "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/es-object-atoms": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
- "dependencies": {
- "es-errors": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-set-tostringtag": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
- "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
- "dependencies": {
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.6",
- "has-tostringtag": "^1.0.2",
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
- "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/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,
- "peer": true
- },
- "node_modules/fast-uri": {
- "version": "3.0.6",
- "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.6.tgz",
- "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "peer": true
- },
- "node_modules/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,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/follow-redirects": {
- "version": "1.15.9",
- "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz",
- "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/form-data": {
- "version": "4.0.2",
- "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.2.tgz",
- "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "es-set-tostringtag": "^2.1.0",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.2",
- "es-define-property": "^1.0.1",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.1.1",
- "function-bind": "^1.1.2",
- "get-proto": "^1.0.1",
- "gopd": "^1.2.0",
- "has-symbols": "^1.1.0",
- "hasown": "^2.0.2",
- "math-intrinsics": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz",
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
- "dependencies": {
- "dunder-proto": "^1.0.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "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/gopd": {
- "version": "1.2.0",
- "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "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,
- "peer": true
- },
- "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-symbols": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "dependencies": {
- "has-symbols": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/immutable": {
- "version": "5.1.1",
- "resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.1.1.tgz",
- "integrity": "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==",
- "dev": true
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "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/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-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true,
- "peer": true
- },
- "node_modules/loader-runner": {
- "version": "4.3.0",
- "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
- "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.11.5"
- }
- },
- "node_modules/math-intrinsics": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "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/micromatch": {
- "version": "4.0.8",
- "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "braces": "^3.0.3",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "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==",
- "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==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "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-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_modules/node-releases": {
- "version": "2.0.19",
- "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.19.tgz",
- "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
- "dev": true,
- "peer": true
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true,
- "peer": true
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/proxy-from-env": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
- },
- "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/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,
- "engines": {
- "node": ">= 14.18.0"
- },
- "funding": {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "peer": true
- },
- "node_modules/sass": {
- "version": "1.86.2",
- "resolved": "https://registry.npmmirror.com/sass/-/sass-1.86.2.tgz",
- "integrity": "sha512-Rpfn0zAIDqvnSb2DihJTDFjbhqLHu91Wqac9rxontWk7R+2txcPjuujMqu1eeoezh5kAblVCS5EdFdyr0Jmu+w==",
- "dev": true,
- "dependencies": {
- "chokidar": "^4.0.0",
- "immutable": "^5.0.2",
- "source-map-js": ">=0.6.2 <2.0.0"
- },
- "bin": {
- "sass": "sass.js"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "optionalDependencies": {
- "@parcel/watcher": "^2.4.1"
- }
- },
- "node_modules/sass-loader": {
- "version": "13.3.3",
- "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-13.3.3.tgz",
- "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==",
- "dev": true,
- "dependencies": {
- "neo-async": "^2.6.2"
- },
- "engines": {
- "node": ">= 14.15.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "fibers": ">= 3.1.0",
- "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
- "sass": "^1.3.0",
- "sass-embedded": "*",
- "webpack": "^5.0.0"
- },
- "peerDependenciesMeta": {
- "fibers": {
- "optional": true
- },
- "node-sass": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- }
- }
- },
- "node_modules/schema-utils": {
- "version": "4.3.0",
- "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.0.tgz",
- "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/json-schema": "^7.0.9",
- "ajv": "^8.9.0",
- "ajv-formats": "^2.1.1",
- "ajv-keywords": "^5.1.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/serialize-javascript": {
- "version": "6.0.2",
- "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
- "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
- "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/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "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/terser": {
- "version": "5.39.0",
- "resolved": "https://registry.npmmirror.com/terser/-/terser-5.39.0.tgz",
- "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.8.2",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/terser-webpack-plugin": {
- "version": "5.3.14",
- "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz",
- "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.25",
- "jest-worker": "^27.4.5",
- "schema-utils": "^4.3.0",
- "serialize-javascript": "^6.0.2",
- "terser": "^5.31.1"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.1.0"
- },
- "peerDependenciesMeta": {
- "@swc/core": {
- "optional": true
- },
- "esbuild": {
- "optional": true
- },
- "uglify-js": {
- "optional": true
- }
- }
- },
- "node_modules/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,
- "optional": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/undici-types": {
- "version": "6.21.0",
- "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz",
- "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/uniapp-axios-adapter": {
- "version": "0.3.2",
- "resolved": "https://registry.npmmirror.com/uniapp-axios-adapter/-/uniapp-axios-adapter-0.3.2.tgz",
- "integrity": "sha512-Wbq8tkjxTw80KaWqpBbrzB575FlJ0YZ+i/EhPFqJmP8iL/x8yzf04RgdrKP7KlI9VArTpEO5PcSe44ciRzTJ8Q==",
- "peerDependencies": {
- "axios": "*"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.1.3",
- "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
- "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "peer": true,
- "dependencies": {
- "escalade": "^3.2.0",
- "picocolors": "^1.1.1"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/uview-ui": {
- "version": "1.8.8",
- "resolved": "https://registry.npmmirror.com/uview-ui/-/uview-ui-1.8.8.tgz",
- "integrity": "sha512-Osal3yzXiHor0In9OPTZuXTaqTbDglMZ9RGK/MPYDoQQs+y0hrBCUD0Xp5T70C8i2lLu2X6Z11zJhmsQWMR7Jg=="
- },
- "node_modules/watchpack": {
- "version": "2.4.2",
- "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.2.tgz",
- "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
- "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.98.0",
- "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.98.0.tgz",
- "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/eslint-scope": "^3.7.7",
- "@types/estree": "^1.0.6",
- "@webassemblyjs/ast": "^1.14.1",
- "@webassemblyjs/wasm-edit": "^1.14.1",
- "@webassemblyjs/wasm-parser": "^1.14.1",
- "acorn": "^8.14.0",
- "browserslist": "^4.24.0",
- "chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.17.1",
- "es-module-lexer": "^1.2.1",
- "eslint-scope": "5.1.1",
- "events": "^3.2.0",
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.11",
- "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": "^4.3.0",
- "tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.3.11",
- "watchpack": "^2.4.1",
- "webpack-sources": "^3.2.3"
- },
- "bin": {
- "webpack": "bin/webpack.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "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"
- }
- }
- }
-}
+{
+ "name": "uni-fans",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "axios": "^1.7.9",
+ "axios-miniprogram-adapter": "0.3.4",
+ "uniapp-axios-adapter": "^0.3.2",
+ "uview-ui": "1.8.8"
+ },
+ "devDependencies": {
+ "sass": "^1.57.1",
+ "sass-loader": "^13.2.0"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@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,
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@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"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@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==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@types/eslint": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-9.6.1.tgz",
+ "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/eslint-scope": {
+ "version": "3.7.7",
+ "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
+ "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.7.tgz",
+ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@types/node": {
+ "version": "22.14.0",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.14.0.tgz",
+ "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "undici-types": "~6.21.0"
+ }
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.14.1.tgz",
+ "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
+ "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
+ "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
+ "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
+ "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.13.2",
+ "@webassemblyjs/helper-api-error": "1.13.2",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
+ "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
+ "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/wasm-gen": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
+ "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
+ "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
+ "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
+ "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/helper-wasm-section": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-opt": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1",
+ "@webassemblyjs/wast-printer": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
+ "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
+ "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
+ "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-api-error": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
+ "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.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/acorn": {
+ "version": "8.14.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.14.1.tgz",
+ "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/axios": {
+ "version": "1.8.4",
+ "resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.4.tgz",
+ "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axios-miniprogram-adapter": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmmirror.com/axios-miniprogram-adapter/-/axios-miniprogram-adapter-0.3.4.tgz",
+ "integrity": "sha512-nQVl5bIUn9bW9IWT/pWBjsFt0RtXTMc24t5ISHS6NVYg/U6EUDzbPW1vWq5nXFc3MniJYi+6iNlliVB6lWpfNg==",
+ "dependencies": {
+ "axios": "^0.19.2"
+ }
+ },
+ "node_modules/axios-miniprogram-adapter/node_modules/axios": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmmirror.com/axios/-/axios-0.19.2.tgz",
+ "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
+ "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410",
+ "dependencies": {
+ "follow-redirects": "1.5.10"
+ }
+ },
+ "node_modules/axios-miniprogram-adapter/node_modules/follow-redirects": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.5.10.tgz",
+ "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
+ "dependencies": {
+ "debug": "=3.1.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/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,
+ "optional": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.24.4",
+ "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.4.tgz",
+ "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001688",
+ "electron-to-chromium": "^1.5.73",
+ "node-releases": "^2.0.19",
+ "update-browserslist-db": "^1.1.1"
+ },
+ "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/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001707",
+ "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz",
+ "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "peer": true
+ },
+ "node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "dev": true,
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "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==",
+ "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/debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dependencies": {
+ "ms": "2.0.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==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/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,
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.130",
+ "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.130.tgz",
+ "integrity": "sha512-Ou2u7L9j2XLZbhqzyX0jWDj6gA8D3jIfVzt4rikLf3cGBa0VdReuFimBKS9tQJA4+XpeCxj1NoWlfBXzbMa9IA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.1",
+ "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
+ "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
+ "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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/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,
+ "peer": true
+ },
+ "node_modules/fast-uri": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.6.tgz",
+ "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "peer": true
+ },
+ "node_modules/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,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.2.tgz",
+ "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "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/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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,
+ "peer": true
+ },
+ "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-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/immutable": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.1.1.tgz",
+ "integrity": "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==",
+ "dev": true
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "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/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-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "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/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "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-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_modules/node-releases": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "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/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,
+ "engines": {
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "peer": true
+ },
+ "node_modules/sass": {
+ "version": "1.86.2",
+ "resolved": "https://registry.npmmirror.com/sass/-/sass-1.86.2.tgz",
+ "integrity": "sha512-Rpfn0zAIDqvnSb2DihJTDFjbhqLHu91Wqac9rxontWk7R+2txcPjuujMqu1eeoezh5kAblVCS5EdFdyr0Jmu+w==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": "^4.0.0",
+ "immutable": "^5.0.2",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher": "^2.4.1"
+ }
+ },
+ "node_modules/sass-loader": {
+ "version": "13.3.3",
+ "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-13.3.3.tgz",
+ "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==",
+ "dev": true,
+ "dependencies": {
+ "neo-async": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 14.15.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "fibers": ">= 3.1.0",
+ "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
+ "sass": "^1.3.0",
+ "sass-embedded": "*",
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "fibers": {
+ "optional": true
+ },
+ "node-sass": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.0.tgz",
+ "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "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/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,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "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/terser": {
+ "version": "5.39.0",
+ "resolved": "https://registry.npmmirror.com/terser/-/terser-5.39.0.tgz",
+ "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.14",
+ "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz",
+ "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^4.3.0",
+ "serialize-javascript": "^6.0.2",
+ "terser": "^5.31.1"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/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,
+ "optional": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/uniapp-axios-adapter": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/uniapp-axios-adapter/-/uniapp-axios-adapter-0.3.2.tgz",
+ "integrity": "sha512-Wbq8tkjxTw80KaWqpBbrzB575FlJ0YZ+i/EhPFqJmP8iL/x8yzf04RgdrKP7KlI9VArTpEO5PcSe44ciRzTJ8Q==",
+ "peerDependencies": {
+ "axios": "*"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uview-ui": {
+ "version": "1.8.8",
+ "resolved": "https://registry.npmmirror.com/uview-ui/-/uview-ui-1.8.8.tgz",
+ "integrity": "sha512-Osal3yzXiHor0In9OPTZuXTaqTbDglMZ9RGK/MPYDoQQs+y0hrBCUD0Xp5T70C8i2lLu2X6Z11zJhmsQWMR7Jg=="
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
+ "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.98.0",
+ "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.98.0.tgz",
+ "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.7",
+ "@types/estree": "^1.0.6",
+ "@webassemblyjs/ast": "^1.14.1",
+ "@webassemblyjs/wasm-edit": "^1.14.1",
+ "@webassemblyjs/wasm-parser": "^1.14.1",
+ "acorn": "^8.14.0",
+ "browserslist": "^4.24.0",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.17.1",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.11",
+ "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": "^4.3.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.11",
+ "watchpack": "^2.4.1",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "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"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index a92577c..7cbf8c5 100644
--- a/package.json
+++ b/package.json
@@ -1,12 +1,12 @@
-{
- "dependencies": {
- "axios": "^1.7.9",
- "axios-miniprogram-adapter": "0.3.4",
- "uniapp-axios-adapter": "^0.3.2",
- "uview-ui": "1.8.8"
- },
- "devDependencies": {
- "sass": "^1.57.1",
- "sass-loader": "^13.2.0"
- }
+{
+ "dependencies": {
+ "axios": "^1.7.9",
+ "axios-miniprogram-adapter": "0.3.4",
+ "uniapp-axios-adapter": "^0.3.2",
+ "uview-ui": "1.8.8"
+ },
+ "devDependencies": {
+ "sass": "^1.57.1",
+ "sass-loader": "^13.2.0"
+ }
}
\ No newline at end of file
diff --git a/pages.json b/pages.json
index 0dc0761..2b910a0 100644
--- a/pages.json
+++ b/pages.json
@@ -1,105 +1,113 @@
-{
- "easycom": {
- "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
- },
- "pages": [{
- "path": "pages/index/index",
- "style": {
- "navigationBarTitleText": "共享风扇"
- }
- },
- {
- "path": "pages/my/index",
- "style": {
- "navigationBarTitleText": "个人中心"
- }
- },
- {
- "path": "pages/deposit/index",
- "style": {
- "navigationBarTitleText": "押金管理"
- }
- },
- {
- "path": "pages/order/index",
- "style": {
- "navigationBarTitleText": "租借记录"
- }
- },
- {
- "path": "pages/order/payment",
- "style": {
- "navigationBarTitleText": "订单支付",
- "navigationBarBackgroundColor": "#ffffff",
- "navigationBarTextStyle": "black"
- }
- },
- {
- "path": "pages/feedback/index",
- "style": {
- "navigationBarTitleText": "投诉与建议"
- }
- },
- {
- "path": "pages/help/index",
- "style": {
- "navigationBarTitleText": "帮助中心"
- }
- },
- {
- "path": "pages/device/detail",
- "style": {
- "navigationBarTitleText": "设备详情",
- "navigationBarBackgroundColor": "#ffffff",
- "navigationBarTextStyle": "black"
- }
- },
-
- {
- "path": "pages/serve/bagCheck/index",
- "style": {
- "navigationBarTitleText": "共享风扇"
- }
- },
- {
- "path": "pages/return/index",
- "style": {
- "navigationBarTitleText": "归还设备",
- "navigationBarBackgroundColor": "#ffffff",
- "navigationBarTextStyle": "black"
- }
- },
- {
- "path": "pages/order/success",
- "style": {
- "navigationBarTitleText": "支付成功",
- "navigationBarBackgroundColor": "#ffffff",
- "navigationBarTextStyle": "black"
- }
- }
- ],
- "globalStyle": {
- "navigationBarTextStyle": "black",
- "navigationBarTitleText": "共享风扇",
- "navigationBarBackgroundColor": "#F8F8F8",
- "backgroundColor": "#F8F8F8"
- },
- "tabBar": {
- "color": "#999999",
- "selectedColor": "#1976D2",
- "backgroundColor": "#ffffff",
- "list": [{
- "pagePath": "pages/index/index",
- "text": "首页",
- "iconPath": "static/home.png",
- "selectedIconPath": "static/home-active.png"
- },
- {
- "pagePath": "pages/my/index",
- "text": "我的",
- "iconPath": "static/user.png",
- "selectedIconPath": "static/user-active.png"
- }
- ]
- }
+{
+ "easycom": {
+ "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
+ },
+ "pages": [{
+ "path": "pages/index/index",
+ "style": {
+ "navigationBarTitleText": "共享风扇"
+ }
+ },
+ {
+ "path": "pages/my/index",
+ "style": {
+ "navigationBarTitleText": "个人中心"
+ }
+ },
+ {
+ "path": "pages/deposit/index",
+ "style": {
+ "navigationBarTitleText": "押金管理"
+ }
+ },
+ {
+ "path": "pages/order/index",
+ "style": {
+ "navigationBarTitleText": "租借记录"
+ }
+ },
+ {
+ "path": "pages/order/payment",
+ "style": {
+ "navigationBarTitleText": "订单支付",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black"
+ }
+ },
+ {
+ "path": "pages/feedback/index",
+ "style": {
+ "navigationBarTitleText": "投诉与建议"
+ }
+ },
+ {
+ "path": "pages/help/index",
+ "style": {
+ "navigationBarTitleText": "帮助中心"
+ }
+ },
+ {
+ "path": "pages/device/detail",
+ "style": {
+ "navigationBarTitleText": "设备详情",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black"
+ }
+ },
+
+ {
+ "path": "pages/serve/bagCheck/index",
+ "style": {
+ "navigationBarTitleText": "共享风扇"
+ }
+ },
+ {
+ "path": "pages/return/index",
+ "style": {
+ "navigationBarTitleText": "归还设备",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black"
+ }
+ },
+ {
+ "path": "pages/order/success",
+ "style": {
+ "navigationBarTitleText": "支付成功",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black"
+ }
+ },
+ {
+ "path": "pages/order/return-success",
+ "style": {
+ "navigationBarTitleText": "归还成功",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black"
+ }
+ }
+ ],
+ "globalStyle": {
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "共享风扇",
+ "navigationBarBackgroundColor": "#F8F8F8",
+ "backgroundColor": "#F8F8F8"
+ },
+ "tabBar": {
+ "color": "#999999",
+ "selectedColor": "#1976D2",
+ "backgroundColor": "#ffffff",
+ "list": [{
+ "pagePath": "pages/index/index",
+ "text": "首页",
+ "iconPath": "static/home.png",
+ "selectedIconPath": "static/home-active.png"
+ },
+ {
+ "pagePath": "pages/my/index",
+ "text": "我的",
+ "iconPath": "static/user.png",
+ "selectedIconPath": "static/user-active.png"
+ }
+ ]
+ }
}
\ No newline at end of file
diff --git a/pages/deposit/index.vue b/pages/deposit/index.vue
index dcc9222..d285995 100644
--- a/pages/deposit/index.vue
+++ b/pages/deposit/index.vue
@@ -1,206 +1,336 @@
-
-
-
-
- 押金余额
- ¥{{ depositAmount }}
-
-
-
-
-
-
-
- 提现说明
-
-
- 1. 提现金额将原路退回支付账户
- 2. 提现申请提交后预计0-7个工作日到账
- 3. 如超时未收到,请联系客服处理
-
-
-
-
-
- 押金记录
-
-
-
- {{ item.type }}
- {{ item.time }}
-
-
- {{ item.type === '退还' ? '+' : '-' }}¥{{ item.amount }}
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/device/detail.vue b/pages/device/detail.vue
index 5e3a204..86eaa1e 100644
--- a/pages/device/detail.vue
+++ b/pages/device/detail.vue
@@ -73,7 +73,7 @@
押金:
- ¥99
+ ¥{{ depositAmount }}
+
+
+
+ 调试信息
+ 原始开始时间: {{ this.orderInfo._rawStartTime }}
+ 处理后开始时间: {{ this.orderInfo.startTime }}
+ 订单状态: {{ this.orderInfo.orderStatus }}
+
@@ -38,26 +46,32 @@
- 请在指定区域内归还设备
+ 将充电宝插入原位置或空闲插口
- 归还后押金将自动退还
+ 系统将自动检测归还并处理退款
+
+
+
+ 归还成功后将自动跳转到成功页面
-
- {{ unlocking ? '开锁中...' : '开锁归还' }}
-
+ 刷新状态
+ 返回首页
-
-
\ No newline at end of file
diff --git a/pages/user/index.vue b/pages/user/index.vue
new file mode 100644
index 0000000..9579c69
--- /dev/null
+++ b/pages/user/index.vue
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
+
+ {{ userInfo.nickName || '未登录' }}
+ {{ userInfo.phone || '未绑定手机号' }}
+
+
+
+
+
+ 余额
+ ¥{{ userInfo.balanceAmount || '0.00' }}
+ 可用于租借设备
+
+
+
+
+
+
+
+ 退出登录
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/uni.promisify.adaptor.js b/uni.promisify.adaptor.js
index 47fbce1..fead168 100644
--- a/uni.promisify.adaptor.js
+++ b/uni.promisify.adaptor.js
@@ -1,10 +1,10 @@
-uni.addInterceptor({
- returnValue (res) {
- if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) {
- return res;
- }
- return new Promise((resolve, reject) => {
- res.then((res) => res[0] ? reject(res[0]) : resolve(res[1]));
- });
- },
+uni.addInterceptor({
+ returnValue (res) {
+ if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) {
+ return res;
+ }
+ return new Promise((resolve, reject) => {
+ res.then((res) => res[0] ? reject(res[0]) : resolve(res[1]));
+ });
+ },
});
\ No newline at end of file
diff --git a/uni.scss b/uni.scss
index 9828add..95c599c 100644
--- a/uni.scss
+++ b/uni.scss
@@ -1,77 +1,77 @@
-/**
- * 这里是uni-app内置的常用样式变量
- *
- * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
- * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
- *
- */
-
-/**
- * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
- *
- * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
- */
-@import 'uview-ui/theme.scss';
-
-/* 颜色变量 */
-
-/* 行为相关颜色 */
-$uni-color-primary: #007aff;
-$uni-color-success: #4cd964;
-$uni-color-warning: #f0ad4e;
-$uni-color-error: #dd524d;
-
-/* 文字基本颜色 */
-$uni-text-color:#333;//基本色
-$uni-text-color-inverse:#fff;//反色
-$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
-$uni-text-color-placeholder: #808080;
-$uni-text-color-disable:#c0c0c0;
-
-/* 背景颜色 */
-$uni-bg-color:#ffffff;
-$uni-bg-color-grey:#f8f8f8;
-$uni-bg-color-hover:#f1f1f1;//点击状态颜色
-$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
-
-/* 边框颜色 */
-$uni-border-color:#c8c7cc;
-
-/* 尺寸变量 */
-
-/* 文字尺寸 */
-$uni-font-size-sm:12px;
-$uni-font-size-base:14px;
-$uni-font-size-lg:16px;
-
-/* 图片尺寸 */
-$uni-img-size-sm:20px;
-$uni-img-size-base:26px;
-$uni-img-size-lg:40px;
-
-/* Border Radius */
-$uni-border-radius-sm: 2px;
-$uni-border-radius-base: 3px;
-$uni-border-radius-lg: 6px;
-$uni-border-radius-circle: 50%;
-
-/* 水平间距 */
-$uni-spacing-row-sm: 5px;
-$uni-spacing-row-base: 10px;
-$uni-spacing-row-lg: 15px;
-
-/* 垂直间距 */
-$uni-spacing-col-sm: 4px;
-$uni-spacing-col-base: 8px;
-$uni-spacing-col-lg: 12px;
-
-/* 透明度 */
-$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
-
-/* 文章场景相关 */
-$uni-color-title: #2C405A; // 文章标题颜色
-$uni-font-size-title:20px;
-$uni-color-subtitle: #555555; // 二级标题颜色
-$uni-font-size-subtitle:26px;
-$uni-color-paragraph: #3F536E; // 文章段落颜色
-$uni-font-size-paragraph:15px;
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+@import 'uview-ui/theme.scss';
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:12px;
+$uni-font-size-base:14px;
+$uni-font-size-lg:16px;
+
+/* 图片尺寸 */
+$uni-img-size-sm:20px;
+$uni-img-size-base:26px;
+$uni-img-size-lg:40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:26px;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:15px;
diff --git a/unpackage/dist/build/mp-weixin/app.js b/unpackage/dist/build/mp-weixin/app.js
new file mode 100644
index 0000000..405b683
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/app.js
@@ -0,0 +1 @@
+"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./common/vendor.js"),n=require("./util/index.js"),e=require("./utils/orderMonitor.js");Math;const t={onLaunch:function(){console.log("App Launch")},onShow:async function(){console.log("App Show"),await this.autoLogin()},onHide:function(){console.log("App Hide")},methods:{async autoLogin(){try{const o=await n.wxLogin();console.log("自动登录成功:",o)}catch(o){console.error("自动登录失败:",o)}}}};function r(){const n=o.createSSRApp(t);return n.config.globalProperties.$orderMonitor=e.orderMonitor,{app:n}}r().app.mount("#app"),exports.createApp=r;
diff --git a/unpackage/dist/build/mp-weixin/app.json b/unpackage/dist/build/mp-weixin/app.json
new file mode 100644
index 0000000..0a54f7f
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/app.json
@@ -0,0 +1,42 @@
+{
+ "pages": [
+ "pages/index/index",
+ "pages/my/index",
+ "pages/deposit/index",
+ "pages/order/index",
+ "pages/order/payment",
+ "pages/feedback/index",
+ "pages/help/index",
+ "pages/device/detail",
+ "pages/serve/bagCheck/index",
+ "pages/return/index",
+ "pages/order/success",
+ "pages/order/return-success"
+ ],
+ "window": {
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "共享风扇",
+ "navigationBarBackgroundColor": "#F8F8F8",
+ "backgroundColor": "#F8F8F8"
+ },
+ "tabBar": {
+ "color": "#999999",
+ "selectedColor": "#1976D2",
+ "backgroundColor": "#ffffff",
+ "list": [
+ {
+ "pagePath": "pages/index/index",
+ "text": "首页",
+ "iconPath": "static/home.png",
+ "selectedIconPath": "static/home-active.png"
+ },
+ {
+ "pagePath": "pages/my/index",
+ "text": "我的",
+ "iconPath": "static/user.png",
+ "selectedIconPath": "static/user-active.png"
+ }
+ ]
+ },
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/app.wxss b/unpackage/dist/build/mp-weixin/app.wxss
new file mode 100644
index 0000000..1f13b8c
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/app.wxss
@@ -0,0 +1,2 @@
+.u-relative,.u-rela{position:relative}.u-absolute,.u-abso{position:absolute}image{display:inline-block}view,text{box-sizing:border-box}.u-font-xs{font-size:22rpx}.u-font-sm{font-size:26rpx}.u-font-md{font-size:28rpx}.u-font-lg{font-size:30rpx}.u-font-xl{font-size:34rpx}.u-flex{display:flex;flex-direction:row;align-items:center}.u-flex-wrap{flex-wrap:wrap}.u-flex-nowrap{flex-wrap:nowrap}.u-col-center{align-items:center}.u-col-top{align-items:flex-start}.u-col-bottom{align-items:flex-end}.u-row-center{justify-content:center}.u-row-left{justify-content:flex-start}.u-row-right{justify-content:flex-end}.u-row-between{justify-content:space-between}.u-row-around{justify-content:space-around}.u-text-left{text-align:left}.u-text-center{text-align:center}.u-text-right{text-align:right}.u-flex-col{display:flex;flex-direction:column}.u-flex-0{flex:0}.u-flex-1{flex:1}.u-flex-2{flex:2}.u-flex-3{flex:3}.u-flex-4{flex:4}.u-flex-5{flex:5}.u-flex-6{flex:6}.u-flex-7{flex:7}.u-flex-8{flex:8}.u-flex-9{flex:9}.u-flex-10{flex:10}.u-flex-11{flex:11}.u-flex-12{flex:12}.u-font-9{font-size:9px}.u-font-10{font-size:10px}.u-font-11{font-size:11px}.u-font-12{font-size:12px}.u-font-13{font-size:13px}.u-font-14{font-size:14px}.u-font-15{font-size:15px}.u-font-16{font-size:16px}.u-font-17{font-size:17px}.u-font-18{font-size:18px}.u-font-19{font-size:19px}.u-font-20{font-size:20rpx}.u-font-21{font-size:21rpx}.u-font-22{font-size:22rpx}.u-font-23{font-size:23rpx}.u-font-24{font-size:24rpx}.u-font-25{font-size:25rpx}.u-font-26{font-size:26rpx}.u-font-27{font-size:27rpx}.u-font-28{font-size:28rpx}.u-font-29{font-size:29rpx}.u-font-30{font-size:30rpx}.u-font-31{font-size:31rpx}.u-font-32{font-size:32rpx}.u-font-33{font-size:33rpx}.u-font-34{font-size:34rpx}.u-font-35{font-size:35rpx}.u-font-36{font-size:36rpx}.u-font-37{font-size:37rpx}.u-font-38{font-size:38rpx}.u-font-39{font-size:39rpx}.u-font-40{font-size:40rpx}.u-margin-0,.u-m-0{margin:0rpx!important}.u-padding-0,.u-p-0{padding:0rpx!important}.u-m-l-0{margin-left:0rpx!important}.u-p-l-0{padding-left:0rpx!important}.u-margin-left-0{margin-left:0rpx!important}.u-padding-left-0{padding-left:0rpx!important}.u-m-t-0{margin-top:0rpx!important}.u-p-t-0{padding-top:0rpx!important}.u-margin-top-0{margin-top:0rpx!important}.u-padding-top-0{padding-top:0rpx!important}.u-m-r-0{margin-right:0rpx!important}.u-p-r-0{padding-right:0rpx!important}.u-margin-right-0{margin-right:0rpx!important}.u-padding-right-0{padding-right:0rpx!important}.u-m-b-0{margin-bottom:0rpx!important}.u-p-b-0{padding-bottom:0rpx!important}.u-margin-bottom-0{margin-bottom:0rpx!important}.u-padding-bottom-0{padding-bottom:0rpx!important}.u-margin-2,.u-m-2{margin:2rpx!important}.u-padding-2,.u-p-2{padding:2rpx!important}.u-m-l-2{margin-left:2rpx!important}.u-p-l-2{padding-left:2rpx!important}.u-margin-left-2{margin-left:2rpx!important}.u-padding-left-2{padding-left:2rpx!important}.u-m-t-2{margin-top:2rpx!important}.u-p-t-2{padding-top:2rpx!important}.u-margin-top-2{margin-top:2rpx!important}.u-padding-top-2{padding-top:2rpx!important}.u-m-r-2{margin-right:2rpx!important}.u-p-r-2{padding-right:2rpx!important}.u-margin-right-2{margin-right:2rpx!important}.u-padding-right-2{padding-right:2rpx!important}.u-m-b-2{margin-bottom:2rpx!important}.u-p-b-2{padding-bottom:2rpx!important}.u-margin-bottom-2{margin-bottom:2rpx!important}.u-padding-bottom-2{padding-bottom:2rpx!important}.u-margin-4,.u-m-4{margin:4rpx!important}.u-padding-4,.u-p-4{padding:4rpx!important}.u-m-l-4{margin-left:4rpx!important}.u-p-l-4{padding-left:4rpx!important}.u-margin-left-4{margin-left:4rpx!important}.u-padding-left-4{padding-left:4rpx!important}.u-m-t-4{margin-top:4rpx!important}.u-p-t-4{padding-top:4rpx!important}.u-margin-top-4{margin-top:4rpx!important}.u-padding-top-4{padding-top:4rpx!important}.u-m-r-4{margin-right:4rpx!important}.u-p-r-4{padding-right:4rpx!important}.u-margin-right-4{margin-right:4rpx!important}.u-padding-right-4{padding-right:4rpx!important}.u-m-b-4{margin-bottom:4rpx!important}.u-p-b-4{padding-bottom:4rpx!important}.u-margin-bottom-4{margin-bottom:4rpx!important}.u-padding-bottom-4{padding-bottom:4rpx!important}.u-margin-5,.u-m-5{margin:5rpx!important}.u-padding-5,.u-p-5{padding:5rpx!important}.u-m-l-5{margin-left:5rpx!important}.u-p-l-5{padding-left:5rpx!important}.u-margin-left-5{margin-left:5rpx!important}.u-padding-left-5{padding-left:5rpx!important}.u-m-t-5{margin-top:5rpx!important}.u-p-t-5{padding-top:5rpx!important}.u-margin-top-5{margin-top:5rpx!important}.u-padding-top-5{padding-top:5rpx!important}.u-m-r-5{margin-right:5rpx!important}.u-p-r-5{padding-right:5rpx!important}.u-margin-right-5{margin-right:5rpx!important}.u-padding-right-5{padding-right:5rpx!important}.u-m-b-5{margin-bottom:5rpx!important}.u-p-b-5{padding-bottom:5rpx!important}.u-margin-bottom-5{margin-bottom:5rpx!important}.u-padding-bottom-5{padding-bottom:5rpx!important}.u-margin-6,.u-m-6{margin:6rpx!important}.u-padding-6,.u-p-6{padding:6rpx!important}.u-m-l-6{margin-left:6rpx!important}.u-p-l-6{padding-left:6rpx!important}.u-margin-left-6{margin-left:6rpx!important}.u-padding-left-6{padding-left:6rpx!important}.u-m-t-6{margin-top:6rpx!important}.u-p-t-6{padding-top:6rpx!important}.u-margin-top-6{margin-top:6rpx!important}.u-padding-top-6{padding-top:6rpx!important}.u-m-r-6{margin-right:6rpx!important}.u-p-r-6{padding-right:6rpx!important}.u-margin-right-6{margin-right:6rpx!important}.u-padding-right-6{padding-right:6rpx!important}.u-m-b-6{margin-bottom:6rpx!important}.u-p-b-6{padding-bottom:6rpx!important}.u-margin-bottom-6{margin-bottom:6rpx!important}.u-padding-bottom-6{padding-bottom:6rpx!important}.u-margin-8,.u-m-8{margin:8rpx!important}.u-padding-8,.u-p-8{padding:8rpx!important}.u-m-l-8{margin-left:8rpx!important}.u-p-l-8{padding-left:8rpx!important}.u-margin-left-8{margin-left:8rpx!important}.u-padding-left-8{padding-left:8rpx!important}.u-m-t-8{margin-top:8rpx!important}.u-p-t-8{padding-top:8rpx!important}.u-margin-top-8{margin-top:8rpx!important}.u-padding-top-8{padding-top:8rpx!important}.u-m-r-8{margin-right:8rpx!important}.u-p-r-8{padding-right:8rpx!important}.u-margin-right-8{margin-right:8rpx!important}.u-padding-right-8{padding-right:8rpx!important}.u-m-b-8{margin-bottom:8rpx!important}.u-p-b-8{padding-bottom:8rpx!important}.u-margin-bottom-8{margin-bottom:8rpx!important}.u-padding-bottom-8{padding-bottom:8rpx!important}.u-margin-10,.u-m-10{margin:10rpx!important}.u-padding-10,.u-p-10{padding:10rpx!important}.u-m-l-10{margin-left:10rpx!important}.u-p-l-10{padding-left:10rpx!important}.u-margin-left-10{margin-left:10rpx!important}.u-padding-left-10{padding-left:10rpx!important}.u-m-t-10{margin-top:10rpx!important}.u-p-t-10{padding-top:10rpx!important}.u-margin-top-10{margin-top:10rpx!important}.u-padding-top-10{padding-top:10rpx!important}.u-m-r-10{margin-right:10rpx!important}.u-p-r-10{padding-right:10rpx!important}.u-margin-right-10{margin-right:10rpx!important}.u-padding-right-10{padding-right:10rpx!important}.u-m-b-10{margin-bottom:10rpx!important}.u-p-b-10{padding-bottom:10rpx!important}.u-margin-bottom-10{margin-bottom:10rpx!important}.u-padding-bottom-10{padding-bottom:10rpx!important}.u-margin-12,.u-m-12{margin:12rpx!important}.u-padding-12,.u-p-12{padding:12rpx!important}.u-m-l-12{margin-left:12rpx!important}.u-p-l-12{padding-left:12rpx!important}.u-margin-left-12{margin-left:12rpx!important}.u-padding-left-12{padding-left:12rpx!important}.u-m-t-12{margin-top:12rpx!important}.u-p-t-12{padding-top:12rpx!important}.u-margin-top-12{margin-top:12rpx!important}.u-padding-top-12{padding-top:12rpx!important}.u-m-r-12{margin-right:12rpx!important}.u-p-r-12{padding-right:12rpx!important}.u-margin-right-12{margin-right:12rpx!important}.u-padding-right-12{padding-right:12rpx!important}.u-m-b-12{margin-bottom:12rpx!important}.u-p-b-12{padding-bottom:12rpx!important}.u-margin-bottom-12{margin-bottom:12rpx!important}.u-padding-bottom-12{padding-bottom:12rpx!important}.u-margin-14,.u-m-14{margin:14rpx!important}.u-padding-14,.u-p-14{padding:14rpx!important}.u-m-l-14{margin-left:14rpx!important}.u-p-l-14{padding-left:14rpx!important}.u-margin-left-14{margin-left:14rpx!important}.u-padding-left-14{padding-left:14rpx!important}.u-m-t-14{margin-top:14rpx!important}.u-p-t-14{padding-top:14rpx!important}.u-margin-top-14{margin-top:14rpx!important}.u-padding-top-14{padding-top:14rpx!important}.u-m-r-14{margin-right:14rpx!important}.u-p-r-14{padding-right:14rpx!important}.u-margin-right-14{margin-right:14rpx!important}.u-padding-right-14{padding-right:14rpx!important}.u-m-b-14{margin-bottom:14rpx!important}.u-p-b-14{padding-bottom:14rpx!important}.u-margin-bottom-14{margin-bottom:14rpx!important}.u-padding-bottom-14{padding-bottom:14rpx!important}.u-margin-15,.u-m-15{margin:15rpx!important}.u-padding-15,.u-p-15{padding:15rpx!important}.u-m-l-15{margin-left:15rpx!important}.u-p-l-15{padding-left:15rpx!important}.u-margin-left-15{margin-left:15rpx!important}.u-padding-left-15{padding-left:15rpx!important}.u-m-t-15{margin-top:15rpx!important}.u-p-t-15{padding-top:15rpx!important}.u-margin-top-15{margin-top:15rpx!important}.u-padding-top-15{padding-top:15rpx!important}.u-m-r-15{margin-right:15rpx!important}.u-p-r-15{padding-right:15rpx!important}.u-margin-right-15{margin-right:15rpx!important}.u-padding-right-15{padding-right:15rpx!important}.u-m-b-15{margin-bottom:15rpx!important}.u-p-b-15{padding-bottom:15rpx!important}.u-margin-bottom-15{margin-bottom:15rpx!important}.u-padding-bottom-15{padding-bottom:15rpx!important}.u-margin-16,.u-m-16{margin:16rpx!important}.u-padding-16,.u-p-16{padding:16rpx!important}.u-m-l-16{margin-left:16rpx!important}.u-p-l-16{padding-left:16rpx!important}.u-margin-left-16{margin-left:16rpx!important}.u-padding-left-16{padding-left:16rpx!important}.u-m-t-16{margin-top:16rpx!important}.u-p-t-16{padding-top:16rpx!important}.u-margin-top-16{margin-top:16rpx!important}.u-padding-top-16{padding-top:16rpx!important}.u-m-r-16{margin-right:16rpx!important}.u-p-r-16{padding-right:16rpx!important}.u-margin-right-16{margin-right:16rpx!important}.u-padding-right-16{padding-right:16rpx!important}.u-m-b-16{margin-bottom:16rpx!important}.u-p-b-16{padding-bottom:16rpx!important}.u-margin-bottom-16{margin-bottom:16rpx!important}.u-padding-bottom-16{padding-bottom:16rpx!important}.u-margin-18,.u-m-18{margin:18rpx!important}.u-padding-18,.u-p-18{padding:18rpx!important}.u-m-l-18{margin-left:18rpx!important}.u-p-l-18{padding-left:18rpx!important}.u-margin-left-18{margin-left:18rpx!important}.u-padding-left-18{padding-left:18rpx!important}.u-m-t-18{margin-top:18rpx!important}.u-p-t-18{padding-top:18rpx!important}.u-margin-top-18{margin-top:18rpx!important}.u-padding-top-18{padding-top:18rpx!important}.u-m-r-18{margin-right:18rpx!important}.u-p-r-18{padding-right:18rpx!important}.u-margin-right-18{margin-right:18rpx!important}.u-padding-right-18{padding-right:18rpx!important}.u-m-b-18{margin-bottom:18rpx!important}.u-p-b-18{padding-bottom:18rpx!important}.u-margin-bottom-18{margin-bottom:18rpx!important}.u-padding-bottom-18{padding-bottom:18rpx!important}.u-margin-20,.u-m-20{margin:20rpx!important}.u-padding-20,.u-p-20{padding:20rpx!important}.u-m-l-20{margin-left:20rpx!important}.u-p-l-20{padding-left:20rpx!important}.u-margin-left-20{margin-left:20rpx!important}.u-padding-left-20{padding-left:20rpx!important}.u-m-t-20{margin-top:20rpx!important}.u-p-t-20{padding-top:20rpx!important}.u-margin-top-20{margin-top:20rpx!important}.u-padding-top-20{padding-top:20rpx!important}.u-m-r-20{margin-right:20rpx!important}.u-p-r-20{padding-right:20rpx!important}.u-margin-right-20{margin-right:20rpx!important}.u-padding-right-20{padding-right:20rpx!important}.u-m-b-20{margin-bottom:20rpx!important}.u-p-b-20{padding-bottom:20rpx!important}.u-margin-bottom-20{margin-bottom:20rpx!important}.u-padding-bottom-20{padding-bottom:20rpx!important}.u-margin-22,.u-m-22{margin:22rpx!important}.u-padding-22,.u-p-22{padding:22rpx!important}.u-m-l-22{margin-left:22rpx!important}.u-p-l-22{padding-left:22rpx!important}.u-margin-left-22{margin-left:22rpx!important}.u-padding-left-22{padding-left:22rpx!important}.u-m-t-22{margin-top:22rpx!important}.u-p-t-22{padding-top:22rpx!important}.u-margin-top-22{margin-top:22rpx!important}.u-padding-top-22{padding-top:22rpx!important}.u-m-r-22{margin-right:22rpx!important}.u-p-r-22{padding-right:22rpx!important}.u-margin-right-22{margin-right:22rpx!important}.u-padding-right-22{padding-right:22rpx!important}.u-m-b-22{margin-bottom:22rpx!important}.u-p-b-22{padding-bottom:22rpx!important}.u-margin-bottom-22{margin-bottom:22rpx!important}.u-padding-bottom-22{padding-bottom:22rpx!important}.u-margin-24,.u-m-24{margin:24rpx!important}.u-padding-24,.u-p-24{padding:24rpx!important}.u-m-l-24{margin-left:24rpx!important}.u-p-l-24{padding-left:24rpx!important}.u-margin-left-24{margin-left:24rpx!important}.u-padding-left-24{padding-left:24rpx!important}.u-m-t-24{margin-top:24rpx!important}.u-p-t-24{padding-top:24rpx!important}.u-margin-top-24{margin-top:24rpx!important}.u-padding-top-24{padding-top:24rpx!important}.u-m-r-24{margin-right:24rpx!important}.u-p-r-24{padding-right:24rpx!important}.u-margin-right-24{margin-right:24rpx!important}.u-padding-right-24{padding-right:24rpx!important}.u-m-b-24{margin-bottom:24rpx!important}.u-p-b-24{padding-bottom:24rpx!important}.u-margin-bottom-24{margin-bottom:24rpx!important}.u-padding-bottom-24{padding-bottom:24rpx!important}.u-margin-25,.u-m-25{margin:25rpx!important}.u-padding-25,.u-p-25{padding:25rpx!important}.u-m-l-25{margin-left:25rpx!important}.u-p-l-25{padding-left:25rpx!important}.u-margin-left-25{margin-left:25rpx!important}.u-padding-left-25{padding-left:25rpx!important}.u-m-t-25{margin-top:25rpx!important}.u-p-t-25{padding-top:25rpx!important}.u-margin-top-25{margin-top:25rpx!important}.u-padding-top-25{padding-top:25rpx!important}.u-m-r-25{margin-right:25rpx!important}.u-p-r-25{padding-right:25rpx!important}.u-margin-right-25{margin-right:25rpx!important}.u-padding-right-25{padding-right:25rpx!important}.u-m-b-25{margin-bottom:25rpx!important}.u-p-b-25{padding-bottom:25rpx!important}.u-margin-bottom-25{margin-bottom:25rpx!important}.u-padding-bottom-25{padding-bottom:25rpx!important}.u-margin-26,.u-m-26{margin:26rpx!important}.u-padding-26,.u-p-26{padding:26rpx!important}.u-m-l-26{margin-left:26rpx!important}.u-p-l-26{padding-left:26rpx!important}.u-margin-left-26{margin-left:26rpx!important}.u-padding-left-26{padding-left:26rpx!important}.u-m-t-26{margin-top:26rpx!important}.u-p-t-26{padding-top:26rpx!important}.u-margin-top-26{margin-top:26rpx!important}.u-padding-top-26{padding-top:26rpx!important}.u-m-r-26{margin-right:26rpx!important}.u-p-r-26{padding-right:26rpx!important}.u-margin-right-26{margin-right:26rpx!important}.u-padding-right-26{padding-right:26rpx!important}.u-m-b-26{margin-bottom:26rpx!important}.u-p-b-26{padding-bottom:26rpx!important}.u-margin-bottom-26{margin-bottom:26rpx!important}.u-padding-bottom-26{padding-bottom:26rpx!important}.u-margin-28,.u-m-28{margin:28rpx!important}.u-padding-28,.u-p-28{padding:28rpx!important}.u-m-l-28{margin-left:28rpx!important}.u-p-l-28{padding-left:28rpx!important}.u-margin-left-28{margin-left:28rpx!important}.u-padding-left-28{padding-left:28rpx!important}.u-m-t-28{margin-top:28rpx!important}.u-p-t-28{padding-top:28rpx!important}.u-margin-top-28{margin-top:28rpx!important}.u-padding-top-28{padding-top:28rpx!important}.u-m-r-28{margin-right:28rpx!important}.u-p-r-28{padding-right:28rpx!important}.u-margin-right-28{margin-right:28rpx!important}.u-padding-right-28{padding-right:28rpx!important}.u-m-b-28{margin-bottom:28rpx!important}.u-p-b-28{padding-bottom:28rpx!important}.u-margin-bottom-28{margin-bottom:28rpx!important}.u-padding-bottom-28{padding-bottom:28rpx!important}.u-margin-30,.u-m-30{margin:30rpx!important}.u-padding-30,.u-p-30{padding:30rpx!important}.u-m-l-30{margin-left:30rpx!important}.u-p-l-30{padding-left:30rpx!important}.u-margin-left-30{margin-left:30rpx!important}.u-padding-left-30{padding-left:30rpx!important}.u-m-t-30{margin-top:30rpx!important}.u-p-t-30{padding-top:30rpx!important}.u-margin-top-30{margin-top:30rpx!important}.u-padding-top-30{padding-top:30rpx!important}.u-m-r-30{margin-right:30rpx!important}.u-p-r-30{padding-right:30rpx!important}.u-margin-right-30{margin-right:30rpx!important}.u-padding-right-30{padding-right:30rpx!important}.u-m-b-30{margin-bottom:30rpx!important}.u-p-b-30{padding-bottom:30rpx!important}.u-margin-bottom-30{margin-bottom:30rpx!important}.u-padding-bottom-30{padding-bottom:30rpx!important}.u-margin-32,.u-m-32{margin:32rpx!important}.u-padding-32,.u-p-32{padding:32rpx!important}.u-m-l-32{margin-left:32rpx!important}.u-p-l-32{padding-left:32rpx!important}.u-margin-left-32{margin-left:32rpx!important}.u-padding-left-32{padding-left:32rpx!important}.u-m-t-32{margin-top:32rpx!important}.u-p-t-32{padding-top:32rpx!important}.u-margin-top-32{margin-top:32rpx!important}.u-padding-top-32{padding-top:32rpx!important}.u-m-r-32{margin-right:32rpx!important}.u-p-r-32{padding-right:32rpx!important}.u-margin-right-32{margin-right:32rpx!important}.u-padding-right-32{padding-right:32rpx!important}.u-m-b-32{margin-bottom:32rpx!important}.u-p-b-32{padding-bottom:32rpx!important}.u-margin-bottom-32{margin-bottom:32rpx!important}.u-padding-bottom-32{padding-bottom:32rpx!important}.u-margin-34,.u-m-34{margin:34rpx!important}.u-padding-34,.u-p-34{padding:34rpx!important}.u-m-l-34{margin-left:34rpx!important}.u-p-l-34{padding-left:34rpx!important}.u-margin-left-34{margin-left:34rpx!important}.u-padding-left-34{padding-left:34rpx!important}.u-m-t-34{margin-top:34rpx!important}.u-p-t-34{padding-top:34rpx!important}.u-margin-top-34{margin-top:34rpx!important}.u-padding-top-34{padding-top:34rpx!important}.u-m-r-34{margin-right:34rpx!important}.u-p-r-34{padding-right:34rpx!important}.u-margin-right-34{margin-right:34rpx!important}.u-padding-right-34{padding-right:34rpx!important}.u-m-b-34{margin-bottom:34rpx!important}.u-p-b-34{padding-bottom:34rpx!important}.u-margin-bottom-34{margin-bottom:34rpx!important}.u-padding-bottom-34{padding-bottom:34rpx!important}.u-margin-35,.u-m-35{margin:35rpx!important}.u-padding-35,.u-p-35{padding:35rpx!important}.u-m-l-35{margin-left:35rpx!important}.u-p-l-35{padding-left:35rpx!important}.u-margin-left-35{margin-left:35rpx!important}.u-padding-left-35{padding-left:35rpx!important}.u-m-t-35{margin-top:35rpx!important}.u-p-t-35{padding-top:35rpx!important}.u-margin-top-35{margin-top:35rpx!important}.u-padding-top-35{padding-top:35rpx!important}.u-m-r-35{margin-right:35rpx!important}.u-p-r-35{padding-right:35rpx!important}.u-margin-right-35{margin-right:35rpx!important}.u-padding-right-35{padding-right:35rpx!important}.u-m-b-35{margin-bottom:35rpx!important}.u-p-b-35{padding-bottom:35rpx!important}.u-margin-bottom-35{margin-bottom:35rpx!important}.u-padding-bottom-35{padding-bottom:35rpx!important}.u-margin-36,.u-m-36{margin:36rpx!important}.u-padding-36,.u-p-36{padding:36rpx!important}.u-m-l-36{margin-left:36rpx!important}.u-p-l-36{padding-left:36rpx!important}.u-margin-left-36{margin-left:36rpx!important}.u-padding-left-36{padding-left:36rpx!important}.u-m-t-36{margin-top:36rpx!important}.u-p-t-36{padding-top:36rpx!important}.u-margin-top-36{margin-top:36rpx!important}.u-padding-top-36{padding-top:36rpx!important}.u-m-r-36{margin-right:36rpx!important}.u-p-r-36{padding-right:36rpx!important}.u-margin-right-36{margin-right:36rpx!important}.u-padding-right-36{padding-right:36rpx!important}.u-m-b-36{margin-bottom:36rpx!important}.u-p-b-36{padding-bottom:36rpx!important}.u-margin-bottom-36{margin-bottom:36rpx!important}.u-padding-bottom-36{padding-bottom:36rpx!important}.u-margin-38,.u-m-38{margin:38rpx!important}.u-padding-38,.u-p-38{padding:38rpx!important}.u-m-l-38{margin-left:38rpx!important}.u-p-l-38{padding-left:38rpx!important}.u-margin-left-38{margin-left:38rpx!important}.u-padding-left-38{padding-left:38rpx!important}.u-m-t-38{margin-top:38rpx!important}.u-p-t-38{padding-top:38rpx!important}.u-margin-top-38{margin-top:38rpx!important}.u-padding-top-38{padding-top:38rpx!important}.u-m-r-38{margin-right:38rpx!important}.u-p-r-38{padding-right:38rpx!important}.u-margin-right-38{margin-right:38rpx!important}.u-padding-right-38{padding-right:38rpx!important}.u-m-b-38{margin-bottom:38rpx!important}.u-p-b-38{padding-bottom:38rpx!important}.u-margin-bottom-38{margin-bottom:38rpx!important}.u-padding-bottom-38{padding-bottom:38rpx!important}.u-margin-40,.u-m-40{margin:40rpx!important}.u-padding-40,.u-p-40{padding:40rpx!important}.u-m-l-40{margin-left:40rpx!important}.u-p-l-40{padding-left:40rpx!important}.u-margin-left-40{margin-left:40rpx!important}.u-padding-left-40{padding-left:40rpx!important}.u-m-t-40{margin-top:40rpx!important}.u-p-t-40{padding-top:40rpx!important}.u-margin-top-40{margin-top:40rpx!important}.u-padding-top-40{padding-top:40rpx!important}.u-m-r-40{margin-right:40rpx!important}.u-p-r-40{padding-right:40rpx!important}.u-margin-right-40{margin-right:40rpx!important}.u-padding-right-40{padding-right:40rpx!important}.u-m-b-40{margin-bottom:40rpx!important}.u-p-b-40{padding-bottom:40rpx!important}.u-margin-bottom-40{margin-bottom:40rpx!important}.u-padding-bottom-40{padding-bottom:40rpx!important}.u-margin-42,.u-m-42{margin:42rpx!important}.u-padding-42,.u-p-42{padding:42rpx!important}.u-m-l-42{margin-left:42rpx!important}.u-p-l-42{padding-left:42rpx!important}.u-margin-left-42{margin-left:42rpx!important}.u-padding-left-42{padding-left:42rpx!important}.u-m-t-42{margin-top:42rpx!important}.u-p-t-42{padding-top:42rpx!important}.u-margin-top-42{margin-top:42rpx!important}.u-padding-top-42{padding-top:42rpx!important}.u-m-r-42{margin-right:42rpx!important}.u-p-r-42{padding-right:42rpx!important}.u-margin-right-42{margin-right:42rpx!important}.u-padding-right-42{padding-right:42rpx!important}.u-m-b-42{margin-bottom:42rpx!important}.u-p-b-42{padding-bottom:42rpx!important}.u-margin-bottom-42{margin-bottom:42rpx!important}.u-padding-bottom-42{padding-bottom:42rpx!important}.u-margin-44,.u-m-44{margin:44rpx!important}.u-padding-44,.u-p-44{padding:44rpx!important}.u-m-l-44{margin-left:44rpx!important}.u-p-l-44{padding-left:44rpx!important}.u-margin-left-44{margin-left:44rpx!important}.u-padding-left-44{padding-left:44rpx!important}.u-m-t-44{margin-top:44rpx!important}.u-p-t-44{padding-top:44rpx!important}.u-margin-top-44{margin-top:44rpx!important}.u-padding-top-44{padding-top:44rpx!important}.u-m-r-44{margin-right:44rpx!important}.u-p-r-44{padding-right:44rpx!important}.u-margin-right-44{margin-right:44rpx!important}.u-padding-right-44{padding-right:44rpx!important}.u-m-b-44{margin-bottom:44rpx!important}.u-p-b-44{padding-bottom:44rpx!important}.u-margin-bottom-44{margin-bottom:44rpx!important}.u-padding-bottom-44{padding-bottom:44rpx!important}.u-margin-45,.u-m-45{margin:45rpx!important}.u-padding-45,.u-p-45{padding:45rpx!important}.u-m-l-45{margin-left:45rpx!important}.u-p-l-45{padding-left:45rpx!important}.u-margin-left-45{margin-left:45rpx!important}.u-padding-left-45{padding-left:45rpx!important}.u-m-t-45{margin-top:45rpx!important}.u-p-t-45{padding-top:45rpx!important}.u-margin-top-45{margin-top:45rpx!important}.u-padding-top-45{padding-top:45rpx!important}.u-m-r-45{margin-right:45rpx!important}.u-p-r-45{padding-right:45rpx!important}.u-margin-right-45{margin-right:45rpx!important}.u-padding-right-45{padding-right:45rpx!important}.u-m-b-45{margin-bottom:45rpx!important}.u-p-b-45{padding-bottom:45rpx!important}.u-margin-bottom-45{margin-bottom:45rpx!important}.u-padding-bottom-45{padding-bottom:45rpx!important}.u-margin-46,.u-m-46{margin:46rpx!important}.u-padding-46,.u-p-46{padding:46rpx!important}.u-m-l-46{margin-left:46rpx!important}.u-p-l-46{padding-left:46rpx!important}.u-margin-left-46{margin-left:46rpx!important}.u-padding-left-46{padding-left:46rpx!important}.u-m-t-46{margin-top:46rpx!important}.u-p-t-46{padding-top:46rpx!important}.u-margin-top-46{margin-top:46rpx!important}.u-padding-top-46{padding-top:46rpx!important}.u-m-r-46{margin-right:46rpx!important}.u-p-r-46{padding-right:46rpx!important}.u-margin-right-46{margin-right:46rpx!important}.u-padding-right-46{padding-right:46rpx!important}.u-m-b-46{margin-bottom:46rpx!important}.u-p-b-46{padding-bottom:46rpx!important}.u-margin-bottom-46{margin-bottom:46rpx!important}.u-padding-bottom-46{padding-bottom:46rpx!important}.u-margin-48,.u-m-48{margin:48rpx!important}.u-padding-48,.u-p-48{padding:48rpx!important}.u-m-l-48{margin-left:48rpx!important}.u-p-l-48{padding-left:48rpx!important}.u-margin-left-48{margin-left:48rpx!important}.u-padding-left-48{padding-left:48rpx!important}.u-m-t-48{margin-top:48rpx!important}.u-p-t-48{padding-top:48rpx!important}.u-margin-top-48{margin-top:48rpx!important}.u-padding-top-48{padding-top:48rpx!important}.u-m-r-48{margin-right:48rpx!important}.u-p-r-48{padding-right:48rpx!important}.u-margin-right-48{margin-right:48rpx!important}.u-padding-right-48{padding-right:48rpx!important}.u-m-b-48{margin-bottom:48rpx!important}.u-p-b-48{padding-bottom:48rpx!important}.u-margin-bottom-48{margin-bottom:48rpx!important}.u-padding-bottom-48{padding-bottom:48rpx!important}.u-margin-50,.u-m-50{margin:50rpx!important}.u-padding-50,.u-p-50{padding:50rpx!important}.u-m-l-50{margin-left:50rpx!important}.u-p-l-50{padding-left:50rpx!important}.u-margin-left-50{margin-left:50rpx!important}.u-padding-left-50{padding-left:50rpx!important}.u-m-t-50{margin-top:50rpx!important}.u-p-t-50{padding-top:50rpx!important}.u-margin-top-50{margin-top:50rpx!important}.u-padding-top-50{padding-top:50rpx!important}.u-m-r-50{margin-right:50rpx!important}.u-p-r-50{padding-right:50rpx!important}.u-margin-right-50{margin-right:50rpx!important}.u-padding-right-50{padding-right:50rpx!important}.u-m-b-50{margin-bottom:50rpx!important}.u-p-b-50{padding-bottom:50rpx!important}.u-margin-bottom-50{margin-bottom:50rpx!important}.u-padding-bottom-50{padding-bottom:50rpx!important}.u-margin-52,.u-m-52{margin:52rpx!important}.u-padding-52,.u-p-52{padding:52rpx!important}.u-m-l-52{margin-left:52rpx!important}.u-p-l-52{padding-left:52rpx!important}.u-margin-left-52{margin-left:52rpx!important}.u-padding-left-52{padding-left:52rpx!important}.u-m-t-52{margin-top:52rpx!important}.u-p-t-52{padding-top:52rpx!important}.u-margin-top-52{margin-top:52rpx!important}.u-padding-top-52{padding-top:52rpx!important}.u-m-r-52{margin-right:52rpx!important}.u-p-r-52{padding-right:52rpx!important}.u-margin-right-52{margin-right:52rpx!important}.u-padding-right-52{padding-right:52rpx!important}.u-m-b-52{margin-bottom:52rpx!important}.u-p-b-52{padding-bottom:52rpx!important}.u-margin-bottom-52{margin-bottom:52rpx!important}.u-padding-bottom-52{padding-bottom:52rpx!important}.u-margin-54,.u-m-54{margin:54rpx!important}.u-padding-54,.u-p-54{padding:54rpx!important}.u-m-l-54{margin-left:54rpx!important}.u-p-l-54{padding-left:54rpx!important}.u-margin-left-54{margin-left:54rpx!important}.u-padding-left-54{padding-left:54rpx!important}.u-m-t-54{margin-top:54rpx!important}.u-p-t-54{padding-top:54rpx!important}.u-margin-top-54{margin-top:54rpx!important}.u-padding-top-54{padding-top:54rpx!important}.u-m-r-54{margin-right:54rpx!important}.u-p-r-54{padding-right:54rpx!important}.u-margin-right-54{margin-right:54rpx!important}.u-padding-right-54{padding-right:54rpx!important}.u-m-b-54{margin-bottom:54rpx!important}.u-p-b-54{padding-bottom:54rpx!important}.u-margin-bottom-54{margin-bottom:54rpx!important}.u-padding-bottom-54{padding-bottom:54rpx!important}.u-margin-55,.u-m-55{margin:55rpx!important}.u-padding-55,.u-p-55{padding:55rpx!important}.u-m-l-55{margin-left:55rpx!important}.u-p-l-55{padding-left:55rpx!important}.u-margin-left-55{margin-left:55rpx!important}.u-padding-left-55{padding-left:55rpx!important}.u-m-t-55{margin-top:55rpx!important}.u-p-t-55{padding-top:55rpx!important}.u-margin-top-55{margin-top:55rpx!important}.u-padding-top-55{padding-top:55rpx!important}.u-m-r-55{margin-right:55rpx!important}.u-p-r-55{padding-right:55rpx!important}.u-margin-right-55{margin-right:55rpx!important}.u-padding-right-55{padding-right:55rpx!important}.u-m-b-55{margin-bottom:55rpx!important}.u-p-b-55{padding-bottom:55rpx!important}.u-margin-bottom-55{margin-bottom:55rpx!important}.u-padding-bottom-55{padding-bottom:55rpx!important}.u-margin-56,.u-m-56{margin:56rpx!important}.u-padding-56,.u-p-56{padding:56rpx!important}.u-m-l-56{margin-left:56rpx!important}.u-p-l-56{padding-left:56rpx!important}.u-margin-left-56{margin-left:56rpx!important}.u-padding-left-56{padding-left:56rpx!important}.u-m-t-56{margin-top:56rpx!important}.u-p-t-56{padding-top:56rpx!important}.u-margin-top-56{margin-top:56rpx!important}.u-padding-top-56{padding-top:56rpx!important}.u-m-r-56{margin-right:56rpx!important}.u-p-r-56{padding-right:56rpx!important}.u-margin-right-56{margin-right:56rpx!important}.u-padding-right-56{padding-right:56rpx!important}.u-m-b-56{margin-bottom:56rpx!important}.u-p-b-56{padding-bottom:56rpx!important}.u-margin-bottom-56{margin-bottom:56rpx!important}.u-padding-bottom-56{padding-bottom:56rpx!important}.u-margin-58,.u-m-58{margin:58rpx!important}.u-padding-58,.u-p-58{padding:58rpx!important}.u-m-l-58{margin-left:58rpx!important}.u-p-l-58{padding-left:58rpx!important}.u-margin-left-58{margin-left:58rpx!important}.u-padding-left-58{padding-left:58rpx!important}.u-m-t-58{margin-top:58rpx!important}.u-p-t-58{padding-top:58rpx!important}.u-margin-top-58{margin-top:58rpx!important}.u-padding-top-58{padding-top:58rpx!important}.u-m-r-58{margin-right:58rpx!important}.u-p-r-58{padding-right:58rpx!important}.u-margin-right-58{margin-right:58rpx!important}.u-padding-right-58{padding-right:58rpx!important}.u-m-b-58{margin-bottom:58rpx!important}.u-p-b-58{padding-bottom:58rpx!important}.u-margin-bottom-58{margin-bottom:58rpx!important}.u-padding-bottom-58{padding-bottom:58rpx!important}.u-margin-60,.u-m-60{margin:60rpx!important}.u-padding-60,.u-p-60{padding:60rpx!important}.u-m-l-60{margin-left:60rpx!important}.u-p-l-60{padding-left:60rpx!important}.u-margin-left-60{margin-left:60rpx!important}.u-padding-left-60{padding-left:60rpx!important}.u-m-t-60{margin-top:60rpx!important}.u-p-t-60{padding-top:60rpx!important}.u-margin-top-60{margin-top:60rpx!important}.u-padding-top-60{padding-top:60rpx!important}.u-m-r-60{margin-right:60rpx!important}.u-p-r-60{padding-right:60rpx!important}.u-margin-right-60{margin-right:60rpx!important}.u-padding-right-60{padding-right:60rpx!important}.u-m-b-60{margin-bottom:60rpx!important}.u-p-b-60{padding-bottom:60rpx!important}.u-margin-bottom-60{margin-bottom:60rpx!important}.u-padding-bottom-60{padding-bottom:60rpx!important}.u-margin-62,.u-m-62{margin:62rpx!important}.u-padding-62,.u-p-62{padding:62rpx!important}.u-m-l-62{margin-left:62rpx!important}.u-p-l-62{padding-left:62rpx!important}.u-margin-left-62{margin-left:62rpx!important}.u-padding-left-62{padding-left:62rpx!important}.u-m-t-62{margin-top:62rpx!important}.u-p-t-62{padding-top:62rpx!important}.u-margin-top-62{margin-top:62rpx!important}.u-padding-top-62{padding-top:62rpx!important}.u-m-r-62{margin-right:62rpx!important}.u-p-r-62{padding-right:62rpx!important}.u-margin-right-62{margin-right:62rpx!important}.u-padding-right-62{padding-right:62rpx!important}.u-m-b-62{margin-bottom:62rpx!important}.u-p-b-62{padding-bottom:62rpx!important}.u-margin-bottom-62{margin-bottom:62rpx!important}.u-padding-bottom-62{padding-bottom:62rpx!important}.u-margin-64,.u-m-64{margin:64rpx!important}.u-padding-64,.u-p-64{padding:64rpx!important}.u-m-l-64{margin-left:64rpx!important}.u-p-l-64{padding-left:64rpx!important}.u-margin-left-64{margin-left:64rpx!important}.u-padding-left-64{padding-left:64rpx!important}.u-m-t-64{margin-top:64rpx!important}.u-p-t-64{padding-top:64rpx!important}.u-margin-top-64{margin-top:64rpx!important}.u-padding-top-64{padding-top:64rpx!important}.u-m-r-64{margin-right:64rpx!important}.u-p-r-64{padding-right:64rpx!important}.u-margin-right-64{margin-right:64rpx!important}.u-padding-right-64{padding-right:64rpx!important}.u-m-b-64{margin-bottom:64rpx!important}.u-p-b-64{padding-bottom:64rpx!important}.u-margin-bottom-64{margin-bottom:64rpx!important}.u-padding-bottom-64{padding-bottom:64rpx!important}.u-margin-65,.u-m-65{margin:65rpx!important}.u-padding-65,.u-p-65{padding:65rpx!important}.u-m-l-65{margin-left:65rpx!important}.u-p-l-65{padding-left:65rpx!important}.u-margin-left-65{margin-left:65rpx!important}.u-padding-left-65{padding-left:65rpx!important}.u-m-t-65{margin-top:65rpx!important}.u-p-t-65{padding-top:65rpx!important}.u-margin-top-65{margin-top:65rpx!important}.u-padding-top-65{padding-top:65rpx!important}.u-m-r-65{margin-right:65rpx!important}.u-p-r-65{padding-right:65rpx!important}.u-margin-right-65{margin-right:65rpx!important}.u-padding-right-65{padding-right:65rpx!important}.u-m-b-65{margin-bottom:65rpx!important}.u-p-b-65{padding-bottom:65rpx!important}.u-margin-bottom-65{margin-bottom:65rpx!important}.u-padding-bottom-65{padding-bottom:65rpx!important}.u-margin-66,.u-m-66{margin:66rpx!important}.u-padding-66,.u-p-66{padding:66rpx!important}.u-m-l-66{margin-left:66rpx!important}.u-p-l-66{padding-left:66rpx!important}.u-margin-left-66{margin-left:66rpx!important}.u-padding-left-66{padding-left:66rpx!important}.u-m-t-66{margin-top:66rpx!important}.u-p-t-66{padding-top:66rpx!important}.u-margin-top-66{margin-top:66rpx!important}.u-padding-top-66{padding-top:66rpx!important}.u-m-r-66{margin-right:66rpx!important}.u-p-r-66{padding-right:66rpx!important}.u-margin-right-66{margin-right:66rpx!important}.u-padding-right-66{padding-right:66rpx!important}.u-m-b-66{margin-bottom:66rpx!important}.u-p-b-66{padding-bottom:66rpx!important}.u-margin-bottom-66{margin-bottom:66rpx!important}.u-padding-bottom-66{padding-bottom:66rpx!important}.u-margin-68,.u-m-68{margin:68rpx!important}.u-padding-68,.u-p-68{padding:68rpx!important}.u-m-l-68{margin-left:68rpx!important}.u-p-l-68{padding-left:68rpx!important}.u-margin-left-68{margin-left:68rpx!important}.u-padding-left-68{padding-left:68rpx!important}.u-m-t-68{margin-top:68rpx!important}.u-p-t-68{padding-top:68rpx!important}.u-margin-top-68{margin-top:68rpx!important}.u-padding-top-68{padding-top:68rpx!important}.u-m-r-68{margin-right:68rpx!important}.u-p-r-68{padding-right:68rpx!important}.u-margin-right-68{margin-right:68rpx!important}.u-padding-right-68{padding-right:68rpx!important}.u-m-b-68{margin-bottom:68rpx!important}.u-p-b-68{padding-bottom:68rpx!important}.u-margin-bottom-68{margin-bottom:68rpx!important}.u-padding-bottom-68{padding-bottom:68rpx!important}.u-margin-70,.u-m-70{margin:70rpx!important}.u-padding-70,.u-p-70{padding:70rpx!important}.u-m-l-70{margin-left:70rpx!important}.u-p-l-70{padding-left:70rpx!important}.u-margin-left-70{margin-left:70rpx!important}.u-padding-left-70{padding-left:70rpx!important}.u-m-t-70{margin-top:70rpx!important}.u-p-t-70{padding-top:70rpx!important}.u-margin-top-70{margin-top:70rpx!important}.u-padding-top-70{padding-top:70rpx!important}.u-m-r-70{margin-right:70rpx!important}.u-p-r-70{padding-right:70rpx!important}.u-margin-right-70{margin-right:70rpx!important}.u-padding-right-70{padding-right:70rpx!important}.u-m-b-70{margin-bottom:70rpx!important}.u-p-b-70{padding-bottom:70rpx!important}.u-margin-bottom-70{margin-bottom:70rpx!important}.u-padding-bottom-70{padding-bottom:70rpx!important}.u-margin-72,.u-m-72{margin:72rpx!important}.u-padding-72,.u-p-72{padding:72rpx!important}.u-m-l-72{margin-left:72rpx!important}.u-p-l-72{padding-left:72rpx!important}.u-margin-left-72{margin-left:72rpx!important}.u-padding-left-72{padding-left:72rpx!important}.u-m-t-72{margin-top:72rpx!important}.u-p-t-72{padding-top:72rpx!important}.u-margin-top-72{margin-top:72rpx!important}.u-padding-top-72{padding-top:72rpx!important}.u-m-r-72{margin-right:72rpx!important}.u-p-r-72{padding-right:72rpx!important}.u-margin-right-72{margin-right:72rpx!important}.u-padding-right-72{padding-right:72rpx!important}.u-m-b-72{margin-bottom:72rpx!important}.u-p-b-72{padding-bottom:72rpx!important}.u-margin-bottom-72{margin-bottom:72rpx!important}.u-padding-bottom-72{padding-bottom:72rpx!important}.u-margin-74,.u-m-74{margin:74rpx!important}.u-padding-74,.u-p-74{padding:74rpx!important}.u-m-l-74{margin-left:74rpx!important}.u-p-l-74{padding-left:74rpx!important}.u-margin-left-74{margin-left:74rpx!important}.u-padding-left-74{padding-left:74rpx!important}.u-m-t-74{margin-top:74rpx!important}.u-p-t-74{padding-top:74rpx!important}.u-margin-top-74{margin-top:74rpx!important}.u-padding-top-74{padding-top:74rpx!important}.u-m-r-74{margin-right:74rpx!important}.u-p-r-74{padding-right:74rpx!important}.u-margin-right-74{margin-right:74rpx!important}.u-padding-right-74{padding-right:74rpx!important}.u-m-b-74{margin-bottom:74rpx!important}.u-p-b-74{padding-bottom:74rpx!important}.u-margin-bottom-74{margin-bottom:74rpx!important}.u-padding-bottom-74{padding-bottom:74rpx!important}.u-margin-75,.u-m-75{margin:75rpx!important}.u-padding-75,.u-p-75{padding:75rpx!important}.u-m-l-75{margin-left:75rpx!important}.u-p-l-75{padding-left:75rpx!important}.u-margin-left-75{margin-left:75rpx!important}.u-padding-left-75{padding-left:75rpx!important}.u-m-t-75{margin-top:75rpx!important}.u-p-t-75{padding-top:75rpx!important}.u-margin-top-75{margin-top:75rpx!important}.u-padding-top-75{padding-top:75rpx!important}.u-m-r-75{margin-right:75rpx!important}.u-p-r-75{padding-right:75rpx!important}.u-margin-right-75{margin-right:75rpx!important}.u-padding-right-75{padding-right:75rpx!important}.u-m-b-75{margin-bottom:75rpx!important}.u-p-b-75{padding-bottom:75rpx!important}.u-margin-bottom-75{margin-bottom:75rpx!important}.u-padding-bottom-75{padding-bottom:75rpx!important}.u-margin-76,.u-m-76{margin:76rpx!important}.u-padding-76,.u-p-76{padding:76rpx!important}.u-m-l-76{margin-left:76rpx!important}.u-p-l-76{padding-left:76rpx!important}.u-margin-left-76{margin-left:76rpx!important}.u-padding-left-76{padding-left:76rpx!important}.u-m-t-76{margin-top:76rpx!important}.u-p-t-76{padding-top:76rpx!important}.u-margin-top-76{margin-top:76rpx!important}.u-padding-top-76{padding-top:76rpx!important}.u-m-r-76{margin-right:76rpx!important}.u-p-r-76{padding-right:76rpx!important}.u-margin-right-76{margin-right:76rpx!important}.u-padding-right-76{padding-right:76rpx!important}.u-m-b-76{margin-bottom:76rpx!important}.u-p-b-76{padding-bottom:76rpx!important}.u-margin-bottom-76{margin-bottom:76rpx!important}.u-padding-bottom-76{padding-bottom:76rpx!important}.u-margin-78,.u-m-78{margin:78rpx!important}.u-padding-78,.u-p-78{padding:78rpx!important}.u-m-l-78{margin-left:78rpx!important}.u-p-l-78{padding-left:78rpx!important}.u-margin-left-78{margin-left:78rpx!important}.u-padding-left-78{padding-left:78rpx!important}.u-m-t-78{margin-top:78rpx!important}.u-p-t-78{padding-top:78rpx!important}.u-margin-top-78{margin-top:78rpx!important}.u-padding-top-78{padding-top:78rpx!important}.u-m-r-78{margin-right:78rpx!important}.u-p-r-78{padding-right:78rpx!important}.u-margin-right-78{margin-right:78rpx!important}.u-padding-right-78{padding-right:78rpx!important}.u-m-b-78{margin-bottom:78rpx!important}.u-p-b-78{padding-bottom:78rpx!important}.u-margin-bottom-78{margin-bottom:78rpx!important}.u-padding-bottom-78{padding-bottom:78rpx!important}.u-margin-80,.u-m-80{margin:80rpx!important}.u-padding-80,.u-p-80{padding:80rpx!important}.u-m-l-80{margin-left:80rpx!important}.u-p-l-80{padding-left:80rpx!important}.u-margin-left-80{margin-left:80rpx!important}.u-padding-left-80{padding-left:80rpx!important}.u-m-t-80{margin-top:80rpx!important}.u-p-t-80{padding-top:80rpx!important}.u-margin-top-80{margin-top:80rpx!important}.u-padding-top-80{padding-top:80rpx!important}.u-m-r-80{margin-right:80rpx!important}.u-p-r-80{padding-right:80rpx!important}.u-margin-right-80{margin-right:80rpx!important}.u-padding-right-80{padding-right:80rpx!important}.u-m-b-80{margin-bottom:80rpx!important}.u-p-b-80{padding-bottom:80rpx!important}.u-margin-bottom-80{margin-bottom:80rpx!important}.u-padding-bottom-80{padding-bottom:80rpx!important}.u-reset-nvue{flex-direction:row;align-items:center}.u-type-primary-light{color:#ecf5ff}.u-type-warning-light{color:#fdf6ec}.u-type-success-light{color:#dbf1e1}.u-type-error-light{color:#fef0f0}.u-type-info-light{color:#f4f4f5}.u-type-primary-light-bg{background-color:#ecf5ff}.u-type-warning-light-bg{background-color:#fdf6ec}.u-type-success-light-bg{background-color:#dbf1e1}.u-type-error-light-bg{background-color:#fef0f0}.u-type-info-light-bg{background-color:#f4f4f5}.u-type-primary-dark{color:#2b85e4}.u-type-warning-dark{color:#f29100}.u-type-success-dark{color:#18b566}.u-type-error-dark{color:#dd6161}.u-type-info-dark{color:#82848a}.u-type-primary-dark-bg{background-color:#2b85e4}.u-type-warning-dark-bg{background-color:#f29100}.u-type-success-dark-bg{background-color:#18b566}.u-type-error-dark-bg{background-color:#dd6161}.u-type-info-dark-bg{background-color:#82848a}.u-type-primary-disabled{color:#a0cfff}.u-type-warning-disabled{color:#fcbd71}.u-type-success-disabled{color:#71d5a1}.u-type-error-disabled{color:#fab6b6}.u-type-info-disabled{color:#c8c9cc}.u-type-primary{color:#2979ff}.u-type-warning{color:#f90}.u-type-success{color:#19be6b}.u-type-error{color:#fa3534}.u-type-info{color:#909399}.u-type-primary-bg{background-color:#2979ff}.u-type-warning-bg{background-color:#f90}.u-type-success-bg{background-color:#19be6b}.u-type-error-bg{background-color:#fa3534}.u-type-info-bg{background-color:#909399}.u-main-color{color:#303133}.u-content-color{color:#606266}.u-tips-color{color:#909399}.u-light-color{color:#c0c4cc}page{color:#303133;font-size:28rpx}.u-fix-ios-appearance{-webkit-appearance:none}.u-icon-wrap{display:flex;align-items:center}.safe-area-inset-bottom{padding-bottom:0;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.u-hover-class{opacity:.6}.u-cell-hover{background-color:#f7f8f9!important}.u-line-1{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.u-line-2{-webkit-line-clamp:2}.u-line-3{-webkit-line-clamp:3}.u-line-4{-webkit-line-clamp:4}.u-line-5{-webkit-line-clamp:5}.u-line-2,.u-line-3,.u-line-4,.u-line-5{overflow:hidden;word-break:break-all;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.u-border,.u-border-bottom,.u-border-left,.u-border-right,.u-border-top,.u-border-top-bottom{position:relative}.u-border-bottom:after,.u-border-left:after,.u-border-right:after,.u-border-top-bottom:after,.u-border-top:after,.u-border:after{content:" ";position:absolute;left:0;top:0;pointer-events:none;box-sizing:border-box;transform-origin:0 0;width:199.8%;height:199.7%;transform:scale(.5);border:0 solid #e4e7ed;z-index:2}.u-border-top:after{border-top-width:1px}.u-border-left:after{border-left-width:1px}.u-border-right:after{border-right-width:1px}.u-border-bottom:after{border-bottom-width:1px}.u-border-top-bottom:after{border-width:1px 0}.u-border:after{border-width:1px}.u-clearfix:after,.clearfix:after{content:"";display:table;clear:both}.u-blur-effect-inset{width:750rpx;height:var(--window-bottom);background-color:#fff}.u-reset-button{padding:0;font-size:inherit;line-height:inherit;background-color:transparent;color:inherit}.u-reset-button:after{border:none}u-td,u-th{flex:1;align-self:stretch}.u-td{height:100%}u-icon{display:inline-flex;align-items:center}u-grid{width:100%;flex:0 0 100%}u-line{flex:1}u-switch{display:inline-flex;align-items:center}u-dropdown{flex:1}
+page::after{position:fixed;content:'';left:-1000px;top:-1000px;-webkit-animation:shadow-preload .1s;-webkit-animation-delay:3s;animation:shadow-preload .1s;animation-delay:3s}@-webkit-keyframes shadow-preload{0%{background-image:url(https://cdn1.dcloud.net.cn/4e44597a4d4445354d53556c6433686c4e7a55795a6a51315a54646d4e3246684d6a6378/img/shadow-grey.png)}100%{background-image:url(https://cdn1.dcloud.net.cn/4e44597a4d4445354d53556c6433686c4e7a55795a6a51315a54646d4e3246684d6a6378/img/shadow-grey.png)}}@keyframes shadow-preload{0%{background-image:url(https://cdn1.dcloud.net.cn/4e44597a4d4445354d53556c6433686c4e7a55795a6a51315a54646d4e3246684d6a6378/img/shadow-grey.png)}100%{background-image:url(https://cdn1.dcloud.net.cn/4e44597a4d4445354d53556c6433686c4e7a55795a6a51315a54646d4e3246684d6a6378/img/shadow-grey.png)}}page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/common/assets.js b/unpackage/dist/build/mp-weixin/common/assets.js
new file mode 100644
index 0000000..029abfa
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/common/assets.js
@@ -0,0 +1 @@
+"use strict";exports._imports_0="/static/scan-icon.png",exports._imports_0$1="/static/jl.png",exports._imports_1="/static/complaint.png",exports._imports_2="/static/hlep.png";
diff --git a/unpackage/dist/build/mp-weixin/common/vendor.js b/unpackage/dist/build/mp-weixin/common/vendor.js
new file mode 100644
index 0000000..0ce38ae
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/common/vendor.js
@@ -0,0 +1,7 @@
+"use strict";
+/**
+* @vue/shared v3.4.21
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/
+function e(e,t){const n=new Set(e.split(","));return t?e=>n.has(e.toLowerCase()):e=>n.has(e)}const t={},n=[],o=()=>{},r=()=>!1,i=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),s=e=>e.startsWith("onUpdate:"),c=Object.assign,a=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},u=Object.prototype.hasOwnProperty,l=(e,t)=>u.call(e,t),f=Array.isArray,p=e=>"[object Map]"===b(e),d=e=>"[object Set]"===b(e),h=e=>"function"==typeof e,g=e=>"string"==typeof e,m=e=>"symbol"==typeof e,y=e=>null!==e&&"object"==typeof e,v=e=>(y(e)||h(e))&&h(e.then)&&h(e.catch),_=Object.prototype.toString,b=e=>_.call(e),x=e=>"[object Object]"===b(e),w=e=>g(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,$=e(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),S=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},k=/-(\w)/g,O=S((e=>e.replace(k,((e,t)=>t?t.toUpperCase():"")))),P=/\B([A-Z])/g,A=S((e=>e.replace(P,"-$1").toLowerCase())),E=S((e=>e.charAt(0).toUpperCase()+e.slice(1))),C=S((e=>e?`on${E(e)}`:"")),j=(e,t)=>!Object.is(e,t),I=(e,t)=>{for(let n=0;n{const t=parseFloat(e);return isNaN(t)?e:t};function R(e){let t="";if(g(e))t=e;else if(f(e))for(let n=0;nt&&t.__v_isRef?L(e,t.value):p(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n],o)=>(e[M(t,o)+" =>"]=n,e)),{})}:d(t)?{[`Set(${t.size})`]:[...t.values()].map((e=>M(e)))}:m(t)?M(t):!y(t)||f(t)||x(t)?t:String(t),M=(e,t="")=>{var n;return m(e)?`Symbol(${null!=(n=e.description)?n:t})`:e},D="onShow",V="onHide",N="onLaunch",H="onError",B="onThemeChange",U="onPageNotFound",W="onUnhandledRejection",z="onLoad",q="onReady",F="onUnload",K="onInit",Z="onSaveExitState",G="onResize",J="onBackPress",Q="onPageScroll",X="onTabItemTap",Y="onReachBottom",ee="onPullDownRefresh",te="onShareTimeline",ne="onShareChat",oe="onAddToFavorites",re="onShareAppMessage",ie="onNavigationBarButtonTap",se="onNavigationBarSearchInputClicked",ce="onNavigationBarSearchInputChanged",ae="onNavigationBarSearchInputConfirmed",ue="onNavigationBarSearchInputFocusChanged",le="virtualHostId";function fe(e,t=null){let n;return(...o)=>(e&&(n=e.apply(t,o),e=null),n)}function pe(e,t){if(!g(t))return;const n=(t=t.replace(/\[(\d+)\]/g,".$1")).split(".");let o=n[0];return e||(e={}),1===n.length?e[o]:pe(e[o],n.slice(1).join("."))}function de(e){let t={};return x(e)&&Object.keys(e).sort().forEach((n=>{const o=n;t[o]=e[o]})),Object.keys(t)?t:e}const he=/:/g;const ge=encodeURIComponent;function me(e,t=ge){const n=e?Object.keys(e).map((n=>{let o=e[n];return void 0===typeof o||null===o?o="":x(o)&&(o=JSON.stringify(o)),t(n)+"="+t(o)})).filter((e=>e.length>0)).join("&"):null;return n?`?${n}`:""}const ye=[K,z,D,V,F,J,Q,X,Y,ee,te,re,ne,oe,Z,ie,se,ce,ae,ue];const ve=[D,V,N,H,B,U,W,"onExit",K,z,q,F,G,J,Q,X,Y,ee,te,oe,re,ne,Z,ie,se,ce,ae,ue],_e=(()=>({onPageScroll:1,onShareAppMessage:2,onShareTimeline:4}))();function be(e,t,n=!0){return!(n&&!h(t))&&(ve.indexOf(e)>-1||0===e.indexOf("on"))}let xe;const we=[];const $e=fe(((e,t)=>t(e))),Se=function(){};Se.prototype={_id:1,on:function(e,t,n){var o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:n,_id:this._id}),this._id++},once:function(e,t,n){var o=this;function r(){o.off(e,r),t.apply(n,arguments)}return r._=t,this.on(e,r,n)},emit:function(e){for(var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),o=0,r=n.length;o=0;i--)if(o[i].fn===t||o[i].fn._===t||o[i]._id===t){o.splice(i,1);break}r=o}return r.length?n[e]=r:delete n[e],this}};var ke=Se;const Oe="zh-Hans",Pe="zh-Hant",Ae="en";function Ee(e,t){if(!e)return;if(e=e.trim().replace(/_/g,"-"),t&&t[e])return e;if("chinese"===(e=e.toLowerCase()))return Oe;if(0===e.indexOf("zh"))return e.indexOf("-hans")>-1?Oe:e.indexOf("-hant")>-1?Pe:(n=e,["-tw","-hk","-mo","-cht"].find((e=>-1!==n.indexOf(e)))?Pe:Oe);var n;let o=[Ae,"fr","es"];t&&Object.keys(t).length>0&&(o=Object.keys(t));const r=function(e,t){return t.find((t=>0===e.indexOf(t)))}(e,o);return r||void 0}function Ce(e){return function(){try{return e.apply(e,arguments)}catch(t){console.error(t)}}}let je=1;const Ie={};function Te(e,t,n){if("number"==typeof e){const o=Ie[e];if(o)return o.keepAlive||delete Ie[e],o.callback(t,n)}return t}const Re="success",Le="fail",Me="complete";function De(e,t={},{beforeAll:n,beforeSuccess:o}={}){x(t)||(t={});const{success:r,fail:i,complete:s}=function(e){const t={};for(const n in e){const o=e[n];h(o)&&(t[n]=Ce(o),delete e[n])}return t}(t),c=h(r),a=h(i),u=h(s),l=je++;return function(e,t,n,o=!1){Ie[e]={name:t,keepAlive:o,callback:n}}(l,e,(l=>{(l=l||{}).errMsg=function(e,t){return e&&-1!==e.indexOf(":fail")?t+e.substring(e.indexOf(":fail")):t+":ok"}(l.errMsg,e),h(n)&&n(l),l.errMsg===e+":ok"?(h(o)&&o(l,t),c&&r(l)):a&&i(l),u&&s(l)})),l}const Ve="success",Ne="fail",He="complete",Be={},Ue={};function We(e,t){return function(n){return e(n,t)||n}}function ze(e,t,n){let o=!1;for(let r=0;re(t),catch(){}}}function qe(e,t={}){return[Ve,Ne,He].forEach((n=>{const o=e[n];if(!f(o))return;const r=t[n];t[n]=function(e){ze(o,e,t).then((e=>h(r)&&r(e)||e))}})),t}function Fe(e,t){const n=[];f(Be.returnValue)&&n.push(...Be.returnValue);const o=Ue[e];return o&&f(o.returnValue)&&n.push(...o.returnValue),n.forEach((e=>{t=e(t)||t})),t}function Ke(e){const t=Object.create(null);Object.keys(Be).forEach((e=>{"returnValue"!==e&&(t[e]=Be[e].slice())}));const n=Ue[e];return n&&Object.keys(n).forEach((e=>{"returnValue"!==e&&(t[e]=(t[e]||[]).concat(n[e]))})),t}function Ze(e,t,n,o){const r=Ke(e);if(r&&Object.keys(r).length){if(f(r.invoke)){return ze(r.invoke,n).then((n=>t(qe(Ke(e),n),...o)))}return t(qe(r,n),...o)}return t(n,...o)}function Ge(e,t){return(n={},...o)=>function(e){return!(!x(e)||![Re,Le,Me].find((t=>h(e[t]))))}(n)?Fe(e,Ze(e,t,n,o)):Fe(e,new Promise(((r,i)=>{Ze(e,t,c(n,{success:r,fail:i}),o)})))}function Je(e,t,n,o={}){const r=t+":fail";let i="";return i=n?0===n.indexOf(r)?n:r+" "+n:r,delete o.errCode,Te(e,c({errMsg:i},o))}function Qe(e,t,n,o){const r=function(e){e[0]}(t);if(r)return r}function Xe(e,t,n,o){return n=>{const r=De(e,n,o),i=Qe(0,[n]);return i?Je(r,e,i):t(n,{resolve:t=>function(e,t,n){return Te(e,c(n||{},{errMsg:t+":ok"}))}(r,e,t),reject:(t,n)=>Je(r,e,function(e){return!e||g(e)?e:e.stack?("undefined"!=typeof globalThis&&globalThis.harmonyChannel||console.error(e.message+"\n"+e.stack),e.message):e}(t),n)})}}function Ye(e,t,n,o){return function(e,t){return(...e)=>{const n=Qe(0,e);if(n)throw new Error(n);return t.apply(null,e)}}(0,t)}let et=!1,tt=0,nt=0;const ot=Ye(0,((e,t)=>{if(0===tt&&function(){const{windowWidth:e,pixelRatio:t,platform:n}=Object.assign({},wx.getWindowInfo(),{platform:wx.getDeviceInfo().platform});tt=e,nt=t,et="ios"===n}(),0===(e=Number(e)))return 0;let n=e/750*(t||tt);return n<0&&(n=-n),n=Math.floor(n+1e-4),0===n&&(n=1!==nt&&et?.5:1),e<0?-n:n}));function rt(e,t){Object.keys(t).forEach((n=>{h(t[n])&&(e[n]=function(e,t){const n=t?e?e.concat(t):f(t)?t:[t]:e;return n?function(e){const t=[];for(let n=0;n{const o=e[n],r=t[n];f(o)&&h(r)&&a(o,r)}))}const st=Ye(0,((e,t)=>{g(e)&&x(t)?rt(Ue[e]||(Ue[e]={}),t):x(e)&&rt(Be,e)})),ct=Ye(0,((e,t)=>{g(e)?x(t)?it(Ue[e],t):delete Ue[e]:x(e)&&it(Be,e)}));const at=new class{constructor(){this.$emitter=new ke}on(e,t){return this.$emitter.on(e,t)}once(e,t){return this.$emitter.once(e,t)}off(e,t){e?this.$emitter.off(e,t):this.$emitter.e={}}emit(e,...t){this.$emitter.emit(e,...t)}},ut=Ye(0,((e,t)=>(at.on(e,t),()=>at.off(e,t)))),lt=Ye(0,((e,t)=>(at.once(e,t),()=>at.off(e,t)))),ft=Ye(0,((e,t)=>{f(e)||(e=e?[e]:[]),e.forEach((e=>{at.off(e,t)}))})),pt=Ye(0,((e,...t)=>{at.emit(e,...t)}));let dt,ht,gt;function mt(e){try{return JSON.parse(e)}catch(t){}return e}const yt=[];function vt(e,t){yt.forEach((n=>{n(e,t)})),yt.length=0}const _t=Ge(bt="getPushClientId",function(e,t,n,o){return Xe(e,t,0,o)}(bt,((e,{resolve:t,reject:n})=>{Promise.resolve().then((()=>{void 0===gt&&(gt=!1,dt="",ht="uniPush is not enabled"),yt.push(((e,o)=>{e?t({cid:e}):n(o)})),void 0!==dt&&vt(dt,ht)}))}),0,xt));var bt,xt;const wt=[],$t=/^\$|__f__|getLocale|setLocale|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|rpx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getDeviceInfo|getAppBaseInfo|getWindowInfo|getSystemSetting|getAppAuthorizeSetting/,St=/^create|Manager$/,kt=["createBLEConnection"],Ot=["request","downloadFile","uploadFile","connectSocket"],Pt=["createBLEConnection"],At=/^on|^off/;function Et(e){return St.test(e)&&-1===kt.indexOf(e)}function Ct(e){return $t.test(e)&&-1===Pt.indexOf(e)}function jt(e){return-1!==Ot.indexOf(e)}function It(e){return!(Et(e)||Ct(e)||function(e){return At.test(e)&&"onPush"!==e}(e))}function Tt(e,t){return It(e)&&h(t)?function(n={},...o){return h(n.success)||h(n.fail)||h(n.complete)?Fe(e,Ze(e,t,n,o)):Fe(e,new Promise(((r,i)=>{Ze(e,t,c({},n,{success:r,fail:i}),o)})))}:t}Promise.prototype.finally||(Promise.prototype.finally=function(e){const t=this.constructor;return this.then((n=>t.resolve(e&&e()).then((()=>n))),(n=>t.resolve(e&&e()).then((()=>{throw n}))))});const Rt=["success","fail","cancel","complete"];const Lt=()=>{const e=h(getApp)&&getApp({allowDefault:!0});return e&&e.$vm?e.$vm.$locale:function(){let e="";{const t=wx.getAppBaseInfo();e=Ee(t&&t.language?t.language:Ae)||Ae}return e}()},Mt=[];"undefined"!=typeof global&&(global.getLocale=Lt);const Dt="__DC_STAT_UUID";let Vt;function Nt(e=wx){return function(t,n){Vt=Vt||e.getStorageSync(Dt),Vt||(Vt=Date.now()+""+Math.floor(1e7*Math.random()),wx.setStorage({key:Dt,data:Vt})),n.deviceId=Vt}}function Ht(e,t){if(e.safeArea){const n=e.safeArea;t.safeAreaInsets={top:n.top,left:n.left,right:e.windowWidth-n.right,bottom:e.screenHeight-n.bottom}}}function Bt(e,t){let n="",o="";return n=e.split(" ")[0]||"",o=e.split(" ")[1]||"",{osName:n.toLocaleLowerCase(),osVersion:o}}function Ut(e,t){let n=e.deviceType||"phone";{const e={ipad:"pad",windows:"pc",mac:"pc"},o=Object.keys(e),r=t.toLocaleLowerCase();for(let t=0;t{Ht(e,t),Nt()(e,t),function(e,t){const{brand:n="",model:o="",system:r="",language:i="",theme:s,version:a,platform:u,fontSizeSetting:l,SDKVersion:f,pixelRatio:p,deviceOrientation:d}=e,{osName:h,osVersion:g}=Bt(r);let m=a,y=Ut(e,o),v=Wt(n),_=qt(e),b=d,x=p,w=f;const $=(i||"").replace(/_/g,"-"),S={appId:"__UNI__4630191",appName:"fs",appVersion:"1.0.0",appVersionCode:"100",appLanguage:zt($),uniCompileVersion:"4.57",uniCompilerVersion:"4.57",uniRuntimeVersion:"4.57",uniPlatform:"mp-weixin",deviceBrand:v,deviceModel:o,deviceType:y,devicePixelRatio:x,deviceOrientation:b,osName:h,osVersion:g,hostTheme:s,hostVersion:m,hostLanguage:$,hostName:_,hostSDKVersion:w,hostFontSizeSetting:l,windowTop:0,windowBottom:0,osLanguage:void 0,osTheme:void 0,ua:void 0,hostPackageName:void 0,browserName:void 0,browserVersion:void 0,isUniAppX:!1};c(t,S)}(e,t)}},Kt=Ft,Zt={args(e,t){let n=parseInt(e.current);if(isNaN(n))return;const o=e.urls;if(!f(o))return;const r=o.length;return r?(n<0?n=0:n>=r&&(n=r-1),n>0?(t.current=o[n],t.urls=o.filter(((e,t)=>!(t{const{brand:n,model:o,system:r="",platform:i=""}=e;let s=Ut(e,o),a=Wt(n);Nt()(e,t);const{osName:u,osVersion:l}=Bt(r);t=de(c(t,{deviceType:s,deviceBrand:a,deviceModel:o,osName:u,osVersion:l}))}},Qt={returnValue:(e,t)=>{const{version:n,language:o,SDKVersion:r,theme:i}=e;let s=qt(e),a=(o||"").replace(/_/g,"-");const u={hostVersion:n,hostLanguage:a,hostName:s,hostSDKVersion:r,hostTheme:i,appId:"__UNI__4630191",appName:"fs",appVersion:"1.0.0",appVersionCode:"100",appLanguage:zt(a),isUniAppX:!1,uniPlatform:"mp-weixin",uniCompileVersion:"4.57",uniCompilerVersion:"4.57",uniRuntimeVersion:"4.57"};c(t,u)}},Xt={returnValue:(e,t)=>{Ht(e,t),t=de(c(t,{windowTop:0,windowBottom:0}))}},Yt={args(e){const t=getApp({allowDefault:!0})||{};t.$vm?Ir(H,e,t.$vm.$):(wx.$onErrorHandlers||(wx.$onErrorHandlers=[]),wx.$onErrorHandlers.push(e))}},en={args(e){const t=getApp({allowDefault:!0})||{};if(t.$vm){if(e.__weh){const n=t.$vm.$[H];if(n){const t=n.indexOf(e.__weh);t>-1&&n.splice(t,1)}}}else{if(!wx.$onErrorHandlers)return;const t=wx.$onErrorHandlers.findIndex((t=>t===e));-1!==t&&wx.$onErrorHandlers.splice(t,1)}}},tn={args(){if(wx.__uni_console__){if(wx.__uni_console_warned__)return;wx.__uni_console_warned__=!0,console.warn("开发模式下小程序日志回显会使用 socket 连接,为了避免冲突,建议使用 SocketTask 的方式去管理 WebSocket 或手动关闭日志回显功能。[详情](https://uniapp.dcloud.net.cn/tutorial/run/mp-log.html)")}}},nn=tn,on={$on:ut,$off:ft,$once:lt,$emit:pt,upx2px:ot,rpx2px:ot,interceptors:{},addInterceptor:st,removeInterceptor:ct,onCreateVueApp:function(e){if(xe)return e(xe);we.push(e)},invokeCreateVueAppHook:function(e){xe=e,we.forEach((t=>t(e)))},getLocale:Lt,setLocale:e=>{const t=h(getApp)&&getApp();if(!t)return!1;return t.$vm.$locale!==e&&(t.$vm.$locale=e,Mt.forEach((t=>t({locale:e}))),!0)},onLocaleChange:e=>{-1===Mt.indexOf(e)&&Mt.push(e)},getPushClientId:_t,onPushMessage:e=>{-1===wt.indexOf(e)&&wt.push(e)},offPushMessage:e=>{if(e){const t=wt.indexOf(e);t>-1&&wt.splice(t,1)}else wt.length=0},invokePushCallback:function(e){if("enabled"===e.type)gt=!0;else if("clientId"===e.type)dt=e.cid,ht=e.errMsg,vt(dt,e.errMsg);else if("pushMsg"===e.type){const t={type:"receive",data:mt(e.message)};for(let e=0;e{t({type:"click",data:mt(e.message)})}))},__f__:function(e,t,...n){t&&n.push(t),console[e].apply(console,n)}};const rn=["qy","env","error","version","lanDebug","cloud","serviceMarket","router","worklet","__webpack_require_UNI_MP_PLUGIN__"],sn=["lanDebug","router","worklet"],cn=wx.getLaunchOptionsSync?wx.getLaunchOptionsSync():null;function an(e){return(!cn||1154!==cn.scene||!sn.includes(e))&&(rn.indexOf(e)>-1||"function"==typeof wx[e])}function un(){const e={};for(const t in wx)an(t)&&(e[t]=wx[t]);return"undefined"!=typeof globalThis&&"undefined"==typeof requireMiniProgram&&(globalThis.wx=e),e}const ln=["__route__","__wxExparserNodeId__","__wxWebviewId__"],fn=(pn={oauth:["weixin"],share:["weixin"],payment:["wxpay"],push:["weixin"]},function({service:e,success:t,fail:n,complete:o}){let r;pn[e]?(r={errMsg:"getProvider:ok",service:e,provider:pn[e]},h(t)&&t(r)):(r={errMsg:"getProvider:fail:服务["+e+"]不存在"},h(n)&&n(r)),h(o)&&o(r)});var pn;const dn=un();dn.canIUse("getAppBaseInfo")||(dn.getAppBaseInfo=dn.getSystemInfoSync),dn.canIUse("getWindowInfo")||(dn.getWindowInfo=dn.getSystemInfoSync),dn.canIUse("getDeviceInfo")||(dn.getDeviceInfo=dn.getSystemInfoSync);let hn=dn.getAppBaseInfo&&dn.getAppBaseInfo();hn||(hn=dn.getSystemInfoSync());const gn=hn?hn.host:null,mn=gn&&"SAAASDK"===gn.env?dn.miniapp.shareVideoMessage:dn.shareVideoMessage;var yn=Object.freeze({__proto__:null,createSelectorQuery:function(){const e=dn.createSelectorQuery(),t=e.in;return e.in=function(e){return e.$scope?t.call(this,e.$scope):t.call(this,function(e){const t=Object.create(null);return ln.forEach((n=>{t[n]=e[n]})),t}(e))},e},getProvider:fn,shareVideoMessage:mn});const vn={args(e,t){e.compressedHeight&&!t.compressHeight&&(t.compressHeight=e.compressedHeight),e.compressedWidth&&!t.compressWidth&&(t.compressWidth=e.compressedWidth)}};var _n=function(e,t,n=wx){const o=function(e){function t(e,t,n){return function(r){return t(o(e,r,n))}}function n(e,n,o={},r={},i=!1){if(x(n)){const s=!0===i?n:{};h(o)&&(o=o(n,s)||{});for(const c in n)if(l(o,c)){let t=o[c];h(t)&&(t=t(n[c],n,s)),t?g(t)?s[t]=n[c]:x(t)&&(s[t.name?t.name:c]=t.value):console.warn(`微信小程序 ${e} 暂不支持 ${c}`)}else if(-1!==Rt.indexOf(c)){const o=n[c];h(o)&&(s[c]=t(e,o,r))}else i||l(s,c)||(s[c]=n[c]);return s}return h(n)&&(h(o)&&o(n,{}),n=t(e,n,r)),n}function o(t,o,r,i=!1){return h(e.returnValue)&&(o=e.returnValue(t,o)),n(t,o,r,{},i||!1)}return function(t,r){const i=l(e,t);if(!i&&"function"!=typeof wx[t])return r;const s=i||h(e.returnValue)||Et(t)||jt(t),c=i||h(r);if(!i&&!r)return function(){console.error(`微信小程序 暂不支持${t}`)};if(!s||!c)return r;const a=e[t];return function(e,r){let i=a||{};h(a)&&(i=a(e));const s=[e=n(t,e,i.args,i.returnValue)];void 0!==r&&s.push(r);const c=wx[i.name||t].apply(wx,s);return(Et(t)||jt(t))&&c&&!c.__v_skip&&(c.__v_skip=!0),Ct(t)?o(t,c,i.returnValue,Et(t)):c}}}(t);return new Proxy({},{get:(t,r)=>l(t,r)?t[r]:l(e,r)?Tt(r,e[r]):l(on,r)?Tt(r,on[r]):Tt(r,o(r,n[r]))})}(yn,Object.freeze({__proto__:null,compressImage:vn,getAppAuthorizeSetting:{returnValue:function(e,t){const{locationReducedAccuracy:n}=e;t.locationAccuracy="unsupported",!0===n?t.locationAccuracy="reduced":!1===n&&(t.locationAccuracy="full")}},getAppBaseInfo:Qt,getDeviceInfo:Jt,getSystemInfo:Ft,getSystemInfoSync:Kt,getWindowInfo:Xt,offError:en,onError:Yt,onSocketMessage:nn,onSocketOpen:tn,previewImage:Zt,redirectTo:{},showActionSheet:Gt}),un());let bn,xn;class wn{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=bn,!e&&bn&&(this.index=(bn.scopes||(bn.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=bn;try{return bn=this,e()}finally{bn=t}}}on(){bn=this}off(){bn=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t=4))break}1===this._dirtyLevel&&(this._dirtyLevel=0),jn()}return this._dirtyLevel>=4}set dirty(e){this._dirtyLevel=e?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=Pn,t=xn;try{return Pn=!0,xn=this,this._runnings++,Sn(this),this.fn()}finally{kn(this),this._runnings--,xn=t,Pn=e}}stop(){var e;this.active&&(Sn(this),kn(this),null==(e=this.onStop)||e.call(this),this.active=!1)}}function Sn(e){e._trackId++,e._depsLength=0}function kn(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Vn=new WeakMap,Nn=Symbol(""),Hn=Symbol("");function Bn(e,t,n){if(Pn&&xn){let t=Vn.get(e);t||Vn.set(e,t=new Map);let o=t.get(n);o||t.set(n,o=Dn((()=>t.delete(n)))),Rn(xn,o)}}function Un(e,t,n,o,r,i){const s=Vn.get(e);if(!s)return;let c=[];if("clear"===t)c=[...s.values()];else if("length"===n&&f(e)){const e=Number(o);s.forEach(((t,n)=>{("length"===n||!m(n)&&n>=e)&&c.push(t)}))}else switch(void 0!==n&&c.push(s.get(n)),t){case"add":f(e)?w(n)&&c.push(s.get("length")):(c.push(s.get(Nn)),p(e)&&c.push(s.get(Hn)));break;case"delete":f(e)||(c.push(s.get(Nn)),p(e)&&c.push(s.get(Hn)));break;case"set":p(e)&&c.push(s.get(Nn))}In();for(const a of c)a&&Mn(a,4);Tn()}const Wn=e("__proto__,__v_isRef,__isVue"),zn=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(m)),qn=Fn();function Fn(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=To(this);for(let t=0,r=this.length;t{e[t]=function(...e){Cn(),In();const n=To(this)[t].apply(this,e);return Tn(),jn(),n}})),e}function Kn(e){const t=To(this);return Bn(t,0,e),t.hasOwnProperty(e)}class Zn{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){const o=this._isReadonly,r=this._isShallow;if("__v_isReactive"===t)return!o;if("__v_isReadonly"===t)return o;if("__v_isShallow"===t)return r;if("__v_raw"===t)return n===(o?r?ko:So:r?$o:wo).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const i=f(e);if(!o){if(i&&l(qn,t))return Reflect.get(qn,t,n);if("hasOwnProperty"===t)return Kn}const s=Reflect.get(e,t,n);return(m(t)?zn.has(t):Wn(t))?s:(o||Bn(e,0,t),r?s:Ho(s)?i&&w(t)?s:s.value:y(s)?o?Ao(s):Po(s):s)}}class Gn extends Zn{constructor(e=!1){super(!1,e)}set(e,t,n,o){let r=e[t];if(!this._isShallow){const t=jo(r);if(Io(n)||jo(n)||(r=To(r),n=To(n)),!f(e)&&Ho(r)&&!Ho(n))return!t&&(r.value=n,!0)}const i=f(e)&&w(t)?Number(t)e,to=e=>Reflect.getPrototypeOf(e);function no(e,t,n=!1,o=!1){const r=To(e=e.__v_raw),i=To(t);n||(j(t,i)&&Bn(r,0,t),Bn(r,0,i));const{has:s}=to(r),c=o?eo:n?Mo:Lo;return s.call(r,t)?c(e.get(t)):s.call(r,i)?c(e.get(i)):void(e!==r&&e.get(t))}function oo(e,t=!1){const n=this.__v_raw,o=To(n),r=To(e);return t||(j(e,r)&&Bn(o,0,e),Bn(o,0,r)),e===r?n.has(e):n.has(e)||n.has(r)}function ro(e,t=!1){return e=e.__v_raw,!t&&Bn(To(e),0,Nn),Reflect.get(e,"size",e)}function io(e){e=To(e);const t=To(this);return to(t).has.call(t,e)||(t.add(e),Un(t,"add",e,e)),this}function so(e,t){t=To(t);const n=To(this),{has:o,get:r}=to(n);let i=o.call(n,e);i||(e=To(e),i=o.call(n,e));const s=r.call(n,e);return n.set(e,t),i?j(t,s)&&Un(n,"set",e,t):Un(n,"add",e,t),this}function co(e){const t=To(this),{has:n,get:o}=to(t);let r=n.call(t,e);r||(e=To(e),r=n.call(t,e)),o&&o.call(t,e);const i=t.delete(e);return r&&Un(t,"delete",e,void 0),i}function ao(){const e=To(this),t=0!==e.size,n=e.clear();return t&&Un(e,"clear",void 0,void 0),n}function uo(e,t){return function(n,o){const r=this,i=r.__v_raw,s=To(i),c=t?eo:e?Mo:Lo;return!e&&Bn(s,0,Nn),i.forEach(((e,t)=>n.call(o,c(e),c(t),r)))}}function lo(e,t,n){return function(...o){const r=this.__v_raw,i=To(r),s=p(i),c="entries"===e||e===Symbol.iterator&&s,a="keys"===e&&s,u=r[e](...o),l=n?eo:t?Mo:Lo;return!t&&Bn(i,0,a?Hn:Nn),{next(){const{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[l(e[0]),l(e[1])]:l(e),done:t}},[Symbol.iterator](){return this}}}}function fo(e){return function(...t){return"delete"!==e&&("clear"===e?void 0:this)}}function po(){const e={get(e){return no(this,e)},get size(){return ro(this)},has:oo,add:io,set:so,delete:co,clear:ao,forEach:uo(!1,!1)},t={get(e){return no(this,e,!1,!0)},get size(){return ro(this)},has:oo,add:io,set:so,delete:co,clear:ao,forEach:uo(!1,!0)},n={get(e){return no(this,e,!0)},get size(){return ro(this,!0)},has(e){return oo.call(this,e,!0)},add:fo("add"),set:fo("set"),delete:fo("delete"),clear:fo("clear"),forEach:uo(!0,!1)},o={get(e){return no(this,e,!0,!0)},get size(){return ro(this,!0)},has(e){return oo.call(this,e,!0)},add:fo("add"),set:fo("set"),delete:fo("delete"),clear:fo("clear"),forEach:uo(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((r=>{e[r]=lo(r,!1,!1),n[r]=lo(r,!0,!1),t[r]=lo(r,!1,!0),o[r]=lo(r,!0,!0)})),[e,n,t,o]}const[ho,go,mo,yo]=po();function vo(e,t){const n=t?e?yo:mo:e?go:ho;return(t,o,r)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get(l(n,o)&&o in t?n:t,o,r)}const _o={get:vo(!1,!1)},bo={get:vo(!1,!0)},xo={get:vo(!0,!1)},wo=new WeakMap,$o=new WeakMap,So=new WeakMap,ko=new WeakMap;function Oo(e){return e.__v_skip||!Object.isExtensible(e)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((e=>b(e).slice(8,-1))(e))}function Po(e){return jo(e)?e:Eo(e,!1,Qn,_o,wo)}function Ao(e){return Eo(e,!0,Xn,xo,So)}function Eo(e,t,n,o,r){if(!y(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const s=Oo(e);if(0===s)return e;const c=new Proxy(e,2===s?o:n);return r.set(e,c),c}function Co(e){return jo(e)?Co(e.__v_raw):!(!e||!e.__v_isReactive)}function jo(e){return!(!e||!e.__v_isReadonly)}function Io(e){return!(!e||!e.__v_isShallow)}function To(e){const t=e&&e.__v_raw;return t?To(t):e}function Ro(e){return Object.isExtensible(e)&&((e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})})(e,"__v_skip",!0),e}const Lo=e=>y(e)?Po(e):e,Mo=e=>y(e)?Ao(e):e;class Do{constructor(e,t,n,o){this.getter=e,this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new $n((()=>e(this._value)),(()=>No(this,2===this.effect._dirtyLevel?2:3))),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=n}get value(){const e=To(this);return e._cacheable&&!e.effect.dirty||!j(e._value,e._value=e.effect.run())||No(e,4),Vo(e),e.effect._dirtyLevel>=2&&No(e,2),e._value}set value(e){this._setter(e)}get _dirty(){return this.effect.dirty}set _dirty(e){this.effect.dirty=e}}function Vo(e){var t;Pn&&xn&&(e=To(e),Rn(xn,null!=(t=e.dep)?t:e.dep=Dn((()=>e.dep=void 0),e instanceof Do?e:void 0)))}function No(e,t=4,n){const o=(e=To(e)).dep;o&&Mn(o,t)}function Ho(e){return!(!e||!0!==e.__v_isRef)}function Bo(e){return function(e,t){if(Ho(e))return e;return new Uo(e,t)}(e,!1)}class Uo{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:To(e),this._value=t?e:Lo(e)}get value(){return Vo(this),this._value}set value(e){const t=this.__v_isShallow||Io(e)||jo(e);e=t?e:To(e),j(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Lo(e),No(this,4))}}function Wo(e){return Ho(e)?e.value:e}const zo={get:(e,t,n)=>Wo(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return Ho(r)&&!Ho(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function qo(e){return Co(e)?e:new Proxy(e,zo)}function Fo(e,t,n,o){try{return o?e(...o):e()}catch(r){Zo(r,t,n)}}function Ko(e,t,n,o){if(h(e)){const r=Fo(e,t,n,o);return r&&v(r)&&r.catch((e=>{Zo(e,t,n)})),r}const r=[];for(let i=0;i>>1,r=Xo[o],i=lr(r);inull==e.id?1/0:e.id,fr=(e,t)=>{const n=lr(e)-lr(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function pr(e){Qo=!1,Jo=!0,Xo.sort(fr);try{for(Yo=0;Yolr(e)-lr(t)));if(er.length=0,tr)return void tr.push(...e);for(tr=e,nr=0;nrg(e)?e.trim():e))),n&&(i=o.map(T))}let a,u=r[a=C(n)]||r[a=C(O(n))];!u&&s&&(u=r[a=C(A(n))]),u&&Ko(u,e,6,i);const l=r[a+"Once"];if(l){if(e.emitted){if(e.emitted[a])return}else e.emitted={};e.emitted[a]=!0,Ko(l,e,6,i)}}function hr(e,t,n=!1){const o=t.emitsCache,r=o.get(e);if(void 0!==r)return r;const i=e.emits;let s={},a=!1;if(!h(e)){const o=e=>{const n=hr(e,t,!0);n&&(a=!0,c(s,n))};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}return i||a?(f(i)?i.forEach((e=>s[e]=null)):c(s,i),y(e)&&o.set(e,s),s):(y(e)&&o.set(e,null),null)}function gr(e,t){return!(!e||!i(t))&&(t=t.slice(2).replace(/Once$/,""),l(e,t[0].toLowerCase()+t.slice(1))||l(e,A(t))||l(e,t))}let mr=null;function yr(e){const t=mr;return mr=e,e&&e.type.__scopeId,t}const vr={};function _r(e,t,n){return br(e,t,n)}function br(e,n,{immediate:r,deep:i,flush:s,once:c,onTrack:u,onTrigger:l}=t){if(n&&c){const e=n;n=(...t)=>{e(...t),k()}}const p=_i,d=e=>!0===i?e:$r(e,!1===i?1:void 0);let g,m,y=!1,v=!1;if(Ho(e)?(g=()=>e.value,y=Io(e)):Co(e)?(g=()=>d(e),y=!0):f(e)?(v=!0,y=e.some((e=>Co(e)||Io(e))),g=()=>e.map((e=>Ho(e)?e.value:Co(e)?d(e):h(e)?Fo(e,p,2):void 0))):g=h(e)?n?()=>Fo(e,p,2):()=>(m&&m(),Ko(e,p,3,[_])):o,n&&i){const e=g;g=()=>$r(e())}let _=e=>{m=$.onStop=()=>{Fo(e,p,4),m=$.onStop=void 0}},b=v?new Array(e.length).fill(vr):vr;const x=()=>{if($.active&&$.dirty)if(n){const e=$.run();(i||y||(v?e.some(((e,t)=>j(e,b[t]))):j(e,b)))&&(m&&m(),Ko(n,p,3,[e,b===vr?void 0:v&&b[0]===vr?[]:b,_]),b=e)}else $.run()};let w;x.allowRecurse=!!n,"sync"===s?w=x:"post"===s?w=()=>gi(x,p&&p.suspense):(x.pre=!0,p&&(x.id=p.uid),w=()=>sr(x));const $=new $n(g,o,w),S=bn,k=()=>{$.stop(),S&&a(S.effects,$)};return n?r?x():b=$.run():"post"===s?gi($.run.bind($),p&&p.suspense):$.run(),k}function xr(e,t,n){const o=this.proxy,r=g(e)?e.includes(".")?wr(o,e):()=>o[e]:e.bind(o,o);let i;h(t)?i=t:(i=t.handler,n=t);const s=wi(this),c=br(r,i.bind(o),n);return s(),c}function wr(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e0){if(n>=t)return e;n++}if((o=o||new Set).has(e))return e;if(o.add(e),Ho(e))$r(e.value,t,n,o);else if(f(e))for(let r=0;r{$r(e,t,n,o)}));else if(x(e))for(const r in e)$r(e[r],t,n,o);return e}function Sr(){return{app:null,config:{isNativeTag:r,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let kr=0;let Or=null;function Pr(e,t,n=!1){const o=_i||mr;if(o||Or){const r=o?null==o.parent?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:Or._context.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&h(t)?t.call(o&&o.proxy):t}}function Ar(e,t){Cr(e,"a",t)}function Er(e,t){Cr(e,"da",t)}function Cr(e,t,n=_i){const o=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(Ir(t,o,n),n){let e=n.parent;for(;e&&e.parent;)e.parent.vnode.type.__isKeepAlive&&jr(o,t,n,e),e=e.parent}}function jr(e,t,n,o){const r=Ir(t,e,o,!0);Nr((()=>{a(o[t],r)}),n)}function Ir(e,t,n=_i,o=!1){if(n){(function(e){return ye.indexOf(e)>-1})(e)&&(n=n.root);const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Cn();const r=wi(n),i=Ko(t,n,e,o);return r(),jn(),i});return o?r.unshift(i):r.push(i),i}}const Tr=e=>(t,n=_i)=>(!ki||"sp"===e)&&Ir(e,((...e)=>t(...e)),n),Rr=Tr("bm"),Lr=Tr("m"),Mr=Tr("bu"),Dr=Tr("u"),Vr=Tr("bum"),Nr=Tr("um"),Hr=Tr("sp"),Br=Tr("rtg"),Ur=Tr("rtc");function Wr(e,t=_i){Ir("ec",e,t)}const zr=e=>e?Si(e)?Ai(e)||e.proxy:zr(e.parent):null,qr=c(Object.create(null),{$:e=>e,$el:e=>e.__$el||(e.__$el={}),$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>zr(e.parent),$root:e=>zr(e.root),$emit:e=>e.emit,$options:e=>Yr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,sr(e.update)}),$watch:e=>xr.bind(e)}),Fr=(e,n)=>e!==t&&!e.__isScriptSetup&&l(e,n),Kr={get({_:e},n){const{ctx:o,setupState:r,data:i,props:s,accessCache:c,type:a,appContext:u}=e;let f;if("$"!==n[0]){const a=c[n];if(void 0!==a)switch(a){case 1:return r[n];case 2:return i[n];case 4:return o[n];case 3:return s[n]}else{if(Fr(r,n))return c[n]=1,r[n];if(i!==t&&l(i,n))return c[n]=2,i[n];if((f=e.propsOptions[0])&&l(f,n))return c[n]=3,s[n];if(o!==t&&l(o,n))return c[n]=4,o[n];Gr&&(c[n]=0)}}const p=qr[n];let d,h;return p?("$attrs"===n&&Bn(e,0,n),p(e)):(d=a.__cssModules)&&(d=d[n])?d:o!==t&&l(o,n)?(c[n]=4,o[n]):(h=u.config.globalProperties,l(h,n)?h[n]:void 0)},set({_:e},n,o){const{data:r,setupState:i,ctx:s}=e;return Fr(i,n)?(i[n]=o,!0):r!==t&&l(r,n)?(r[n]=o,!0):!l(e.props,n)&&(("$"!==n[0]||!(n.slice(1)in e))&&(s[n]=o,!0))},has({_:{data:e,setupState:n,accessCache:o,ctx:r,appContext:i,propsOptions:s}},c){let a;return!!o[c]||e!==t&&l(e,c)||Fr(n,c)||(a=s[0])&&l(a,c)||l(r,c)||l(qr,c)||l(i.config.globalProperties,c)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:l(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Zr(e){return f(e)?e.reduce(((e,t)=>(e[t]=null,e)),{}):e}let Gr=!0;function Jr(e){const t=Yr(e),n=e.proxy,r=e.ctx;Gr=!1,t.beforeCreate&&Qr(t.beforeCreate,e,"bc");const{data:i,computed:s,methods:c,watch:a,provide:u,inject:l,created:p,beforeMount:d,mounted:g,beforeUpdate:m,updated:v,activated:_,deactivated:b,beforeDestroy:x,beforeUnmount:w,destroyed:$,unmounted:S,render:k,renderTracked:O,renderTriggered:P,errorCaptured:A,serverPrefetch:E,expose:C,inheritAttrs:j,components:I,directives:T,filters:R}=t;if(l&&function(e,t){f(e)&&(e=oi(e));for(const n in e){const o=e[n];let r;r=y(o)?"default"in o?Pr(o.from||n,o.default,!0):Pr(o.from||n):Pr(o),Ho(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:e=>r.value=e}):t[n]=r}}(l,r),c)for(const o in c){const e=c[o];h(e)&&(r[o]=e.bind(n))}if(i){const t=i.call(n,n);y(t)&&(e.data=Po(t))}if(Gr=!0,s)for(const f in s){const e=s[f],t=h(e)?e.bind(n,n):h(e.get)?e.get.bind(n,n):o,i=!h(e)&&h(e.set)?e.set.bind(n):o,c=Ei({get:t,set:i});Object.defineProperty(r,f,{enumerable:!0,configurable:!0,get:()=>c.value,set:e=>c.value=e})}if(a)for(const o in a)Xr(a[o],r,n,o);function L(e,t){f(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(function(){if(u){const e=h(u)?u.call(n):u;Reflect.ownKeys(e).forEach((t=>{!function(e,t){if(_i){let n=_i.provides;const o=_i.parent&&_i.parent.provides;o===n&&(n=_i.provides=Object.create(o)),n[e]=t,"app"===_i.type.mpType&&_i.appContext.app.provide(e,t)}}(t,e[t])}))}}(),p&&Qr(p,e,"c"),L(Rr,d),L(Lr,g),L(Mr,m),L(Dr,v),L(Ar,_),L(Er,b),L(Wr,A),L(Ur,O),L(Br,P),L(Vr,w),L(Nr,S),L(Hr,E),f(C))if(C.length){const t=e.exposed||(e.exposed={});C.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});k&&e.render===o&&(e.render=k),null!=j&&(e.inheritAttrs=j),I&&(e.components=I),T&&(e.directives=T),e.ctx.$onApplyOptions&&e.ctx.$onApplyOptions(t,e,n)}function Qr(e,t,n){Ko(f(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function Xr(e,t,n,o){const r=o.includes(".")?wr(n,o):()=>n[o];if(g(e)){const n=t[e];h(n)&&_r(r,n)}else if(h(e))_r(r,e.bind(n));else if(y(e))if(f(e))e.forEach((e=>Xr(e,t,n,o)));else{const o=h(e.handler)?e.handler.bind(n):t[e.handler];h(o)&&_r(r,o,e)}}function Yr(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,c=i.get(t);let a;return c?a=c:r.length||n||o?(a={},r.length&&r.forEach((e=>ei(a,e,s,!0))),ei(a,t,s)):a=t,y(t)&&i.set(t,a),a}function ei(e,t,n,o=!1){const{mixins:r,extends:i}=t;i&&ei(e,i,n,!0),r&&r.forEach((t=>ei(e,t,n,!0)));for(const s in t)if(o&&"expose"===s);else{const o=ti[s]||n&&n[s];e[s]=o?o(e[s],t[s]):t[s]}return e}const ti={data:ni,props:si,emits:si,methods:ii,computed:ii,beforeCreate:ri,created:ri,beforeMount:ri,mounted:ri,beforeUpdate:ri,updated:ri,beforeDestroy:ri,beforeUnmount:ri,destroyed:ri,unmounted:ri,activated:ri,deactivated:ri,errorCaptured:ri,serverPrefetch:ri,components:ii,directives:ii,watch:function(e,t){if(!e)return t;if(!t)return e;const n=c(Object.create(null),e);for(const o in t)n[o]=ri(e[o],t[o]);return n},provide:ni,inject:function(e,t){return ii(oi(e),oi(t))}};function ni(e,t){return t?e?function(){return c(h(e)?e.call(this,this):e,h(t)?t.call(this,this):t)}:t:e}function oi(e){if(f(e)){const t={};for(let n=0;n{d=!0;const[t,n]=li(e,o,!0);c(u,t),n&&p.push(...n)};!r&&o.mixins.length&&o.mixins.forEach(t),e.extends&&t(e.extends),e.mixins&&e.mixins.forEach(t)}if(!a&&!d)return y(e)&&i.set(e,n),n;if(f(a))for(let n=0;n-1,o[1]=n<0||t-1||l(o,"default"))&&p.push(e)}}}const g=[u,p];return y(e)&&i.set(e,g),g}function fi(e){return"$"!==e[0]&&!$(e)}function pi(e){if(null===e)return"null";if("function"==typeof e)return e.name||"";if("object"==typeof e){return e.constructor&&e.constructor.name||""}return""}function di(e,t){return pi(e)===pi(t)}function hi(e,t){return f(t)?t.findIndex((t=>di(t,e))):h(t)&&di(t,e)?0:-1}const gi=ar,mi=Sr();let yi=0;function vi(e,n,o){const r=e.type,i=(n?n.appContext:e.appContext)||mi,s={uid:yi++,vnode:e,type:r,parent:n,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,scope:new wn(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:n?n.provides:Object.create(i.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:li(r,i),emitsOptions:hr(r,i),emit:null,emitted:null,propsDefaults:t,inheritAttrs:r.inheritAttrs,ctx:t,data:t,props:t,attrs:t,slots:t,refs:t,setupState:t,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:o,suspenseId:o?o.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null,$uniElements:new Map,$templateUniElementRefs:[],$templateUniElementStyles:{},$eS:{},$eA:{}};return s.ctx={_:s},s.root=n?n.root:s,s.emit=dr.bind(null,s),e.ce&&e.ce(s),s}let _i=null;let bi,xi;bi=e=>{_i=e},xi=e=>{ki=e};const wi=e=>{const t=_i;return bi(e),e.scope.on(),()=>{e.scope.off(),bi(t)}},$i=()=>{_i&&_i.scope.off(),bi(null)};function Si(e){return 4&e.vnode.shapeFlag}let ki=!1;function Oi(e,t=!1){t&&xi(t);const{props:n}=e.vnode,o=Si(e);ci(e,n,o,t);const r=o?function(e){const t=e.type;e.accessCache=Object.create(null),e.proxy=Ro(new Proxy(e.ctx,Kr));const{setup:n}=t;if(n){const t=e.setupContext=n.length>1?function(e){const t=t=>{e.exposed=t||{}};return{get attrs(){return function(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get:(t,n)=>(Bn(e,0,"$attrs"),t[n])}))}(e)},slots:e.slots,emit:e.emit,expose:t}}(e):null,o=wi(e);Cn();const r=Fo(n,e,0,[e.props,t]);jn(),o(),v(r)?r.then($i,$i):function(e,t){h(t)?e.render=t:y(t)&&(e.setupState=qo(t));Pi(e)}(e,r)}else Pi(e)}(e):void 0;return t&&xi(!1),r}function Pi(e,t,n){const r=e.type;e.render||(e.render=r.render||o);{const t=wi(e);Cn();try{Jr(e)}finally{jn(),t()}}}function Ai(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(qo(Ro(e.exposed)),{get:(t,n)=>n in t?t[n]:e.proxy[n],has:(e,t)=>t in e||t in qr}))}const Ei=(e,t)=>{const n=function(e,t,n=!1){let r,i;const s=h(e);return s?(r=e,i=o):(r=e.get,i=e.set),new Do(r,i,s||!i,n)}(e,0,ki);return n},Ci="3.4.21";function ji(e){return Wo(e)}const Ii="[object Array]",Ti="[object Object]";function Ri(e,t){const n={};return Li(e,t),Mi(e,t,"",n),n}function Li(e,t){if((e=ji(e))===t)return;const n=b(e),o=b(t);if(n==Ti&&o==Ti)for(let r in t){const n=e[r];void 0===n?e[r]=null:Li(n,t[r])}else n==Ii&&o==Ii&&e.length>=t.length&&t.forEach(((t,n)=>{Li(e[n],t)}))}function Mi(e,t,n,o){if((e=ji(e))===t)return;const r=b(e),i=b(t);if(r==Ti)if(i!=Ti||Object.keys(e).length{Mi(e,i[t],(""==n?"":n+".")+s+"["+t+"]",o)}));else if(c==Ti)if(a!=Ti||Object.keys(r).length{Mi(e,t[r],n+"["+r+"]",o)})):Di(o,n,e)}function Di(e,t,n){e[t]=n}function Vi(e){const t=e.ctx.__next_tick_callbacks;if(t&&t.length){const e=t.slice(0);t.length=0;for(let t=0;t{t?Fo(t.bind(e.proxy),e,14):o&&o(e.proxy)})),new Promise((e=>{o=e}))}function Hi(e,t){const n=typeof(e=ji(e));if("object"===n&&null!==e){let n=t.get(e);if(void 0!==n)return n;if(f(e)){const o=e.length;n=new Array(o),t.set(e,n);for(let r=0;r{o[e]=n[e]})),o}(r,i));Object.keys(s).length?(o.__next_tick_pending=!0,r.setData(s,(()=>{o.__next_tick_pending=!1,Vi(e)})),ur()):Vi(e)}}function Wi(e,t,n){t.appContext.config.globalProperties.$applyOptions(e,t,n);const o=e.computed;if(o){const e=Object.keys(o);if(e.length){const n=t.ctx;n.$computedKeys||(n.$computedKeys=[]),n.$computedKeys.push(...e)}}delete t.ctx.$onApplyOptions}function zi(e,t=!1){const{setupState:n,$templateRefs:o,$templateUniElementRefs:r,ctx:{$scope:i,$mpPlatform:s}}=e;if("mp-alipay"===s)return;if(!i||!o&&!r)return;if(t)return o&&o.forEach((e=>qi(e,null,n))),void(r&&r.forEach((e=>qi(e,null,n))));const c="mp-baidu"===s||"mp-toutiao"===s,a=e=>{if(0===e.length)return[];const t=(i.selectAllComponents(".r")||[]).concat(i.selectAllComponents(".r-i-f")||[]);return e.filter((e=>{const o=function(e,t){const n=e.find((e=>e&&(e.properties||e.props).uI===t));if(n){const e=n.$vm;return e?Ai(e.$)||e:function(e){y(e)&&Ro(e);return e}(n)}return null}(t,e.i);return!(!c||null!==o)||(qi(e,o,n),!1)}))},u=()=>{if(o){const t=a(o);t.length&&e.proxy&&e.proxy.$scope&&e.proxy.$scope.setData({r1:1},(()=>{a(t)}))}};r&&r.length&&Ni(e,(()=>{r.forEach((e=>{f(e.v)?e.v.forEach((t=>{qi(e,t,n)})):qi(e,e.v,n)}))})),i._$setRef?i._$setRef(u):Ni(e,u)}function qi({r:e,f:t},n,o){if(h(e))e(n,{});else{const r=g(e),i=Ho(e);if(r||i)if(t){if(!i)return;f(e.value)||(e.value=[]);const t=e.value;if(-1===t.indexOf(n)){if(t.push(n),!n)return;n.$&&Vr((()=>a(t,n)),n.$)}}else r?l(o,e)&&(o[e]=n):Ho(e)&&(e.value=n)}}const Fi=ar;function Ki(e,t){const n=e.component=vi(e,t.parentComponent,null);return n.ctx.$onApplyOptions=Wi,n.ctx.$children=[],"app"===t.mpType&&(n.render=o),t.onBeforeSetup&&t.onBeforeSetup(n,t),Oi(n),t.parentComponent&&n.proxy&&t.parentComponent.ctx.$children.push(Ai(n)||n.proxy),function(e){const t=Xi.bind(e);e.$updateScopedSlots=()=>ir((()=>sr(t)));const n=()=>{if(e.isMounted){const{next:t,bu:n,u:o}=e;Yi(e,!1),Qi(),n&&I(n),Yi(e,!0),Ui(e,Gi(e)),o&&Fi(o)}else Vr((()=>{zi(e,!0)}),e),Ui(e,Gi(e))},r=e.effect=new $n(n,o,(()=>sr(i)),e.scope),i=e.update=()=>{r.dirty&&r.run()};i.id=e.uid,Yi(e,!0),i()}(n),n.proxy}const Zi=e=>{let t;for(const n in e)("class"===n||"style"===n||i(n))&&((t||(t={}))[n]=e[n]);return t};function Gi(e){const{type:t,vnode:n,proxy:o,withProxy:r,props:i,propsOptions:[s],slots:c,attrs:a,emit:u,render:l,renderCache:f,data:p,setupState:d,ctx:h,uid:g,appContext:{app:{config:{globalProperties:{pruneComponentPropsCache:m}}}},inheritAttrs:y}=e;let v;e.$uniElementIds=new Map,e.$templateRefs=[],e.$templateUniElementRefs=[],e.$templateUniElementStyles={},e.$ei=0,m(g),e.__counter=0===e.__counter?1:0;const _=yr(e);try{if(4&n.shapeFlag){Ji(y,i,s,a);const e=r||o;v=l.call(e,e,f,i,d,p,h)}else{Ji(y,i,s,t.props?a:Zi(a));const e=t;v=e.length>1?e(i,{attrs:a,slots:c,emit:u}):e(i,null)}}catch(b){Zo(b,e,1),v=!1}return zi(e),yr(_),v}function Ji(e,t,n,o){if(t&&o&&!1!==e){const e=Object.keys(o).filter((e=>"class"!==e&&"style"!==e));if(!e.length)return;n&&e.some(s)?e.forEach((e=>{s(e)&&e.slice(9)in n||(t[e]=o[e])})):e.forEach((e=>t[e]=o[e]))}}const Qi=e=>{Cn(),ur(),jn()};function Xi(){const e=this.$scopedSlotsData;if(!e||0===e.length)return;const t=this.ctx.$scope,n=t.data,o=Object.create(null);e.forEach((({path:e,index:t,data:r})=>{const i=pe(n,e),s=g(t)?`${e}.${t}`:`${e}[${t}]`;if(void 0===i||void 0===i[t])o[s]=r;else{const e=Ri(r,i[t]);Object.keys(e).forEach((t=>{o[s+"."+t]=e[t]}))}})),e.length=0,Object.keys(o).length&&t.setData(o)}function Yi({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}const es=function(e,t=null){h(e)||(e=c({},e)),null==t||y(t)||(t=null);const n=Sr(),o=new WeakSet,r=n.app={_uid:kr++,_component:e,_props:t,_container:null,_context:n,_instance:null,version:Ci,get config(){return n.config},set config(e){},use:(e,...t)=>(o.has(e)||(e&&h(e.install)?(o.add(e),e.install(r,...t)):h(e)&&(o.add(e),e(r,...t))),r),mixin:e=>(n.mixins.includes(e)||n.mixins.push(e),r),component:(e,t)=>t?(n.components[e]=t,r):n.components[e],directive:(e,t)=>t?(n.directives[e]=t,r):n.directives[e],mount(){},unmount(){},provide:(e,t)=>(n.provides[e]=t,r),runWithContext(e){const t=Or;Or=r;try{return e()}finally{Or=t}}};return r};function ts(e,t=null){("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof my?my:void 0).__VUE__=!0;const n=es(e,t),r=n._context;r.config.globalProperties.$nextTick=function(e){return Ni(this.$,e)};const i=e=>(e.appContext=r,e.shapeFlag=6,e),s=function(e,t){return Ki(i(e),t)},c=function(e){return e&&function(e){const{bum:t,scope:n,update:o,um:r}=e;t&&I(t);{const t=e.parent;if(t){const n=t.ctx.$children,o=Ai(e)||e.proxy,r=n.indexOf(o);r>-1&&n.splice(r,1)}}n.stop(),o&&(o.active=!1),r&&Fi(r),Fi((()=>{e.isUnmounted=!0}))}(e.$)};return n.mount=function(){e.render=o;const t=Ki(i({type:e}),{mpType:"app",mpInstance:null,parentComponent:null,slots:[],props:null});return n._instance=t.$,t.$app=n,t.$createComponent=s,t.$destroyComponent=c,r.$appInstance=t,t},n.unmount=function(){},n}function ns(e,t,n,o){h(t)&&Ir(e,t.bind(n),o)}function os(e,t,n){!function(e,t,n){const o=e.mpType||n.$mpType;o&&"component"!==o&&Object.keys(e).forEach((o=>{if(be(o,e[o],!1)){const r=e[o];f(r)?r.forEach((e=>ns(o,e,n,t))):ns(o,r,n,t)}}))}(e,t,n)}function rs(e,t,n){return e[t]=n}function is(e,...t){const n=this[e];return n?n(...t):(console.error(`method ${e} not found`),null)}function ss(e){const t=e.config.errorHandler;return function(n,o,r){t&&t(n,o,r);const i=e._instance;if(!i||!i.proxy)throw n;i[H]?i.proxy.$callHook(H,n):Go(n,0,o&&o.$.vnode,!1)}}function cs(e,t){return e?[...new Set([].concat(e,t))]:t}let as;const us="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",ls=/^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;function fs(){const e=_n.getStorageSync("uni_id_token")||"",t=e.split(".");if(!e||3!==t.length)return{uid:null,role:[],permission:[],tokenExpired:0};let n;try{n=JSON.parse((o=t[1],decodeURIComponent(as(o).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""))))}catch(r){throw new Error("获取当前用户信息出错,详细错误信息为:"+r.message)}var o;return n.tokenExpired=1e3*n.exp,delete n.exp,delete n.iat,n}function ps(e){const t=e.config;var n;t.errorHandler=$e(e,ss),n=t.optionMergeStrategies,ve.forEach((e=>{n[e]=cs}));const o=t.globalProperties;!function(e){e.uniIDHasRole=function(e){const{role:t}=fs();return t.indexOf(e)>-1},e.uniIDHasPermission=function(e){const{permission:t}=fs();return this.uniIDHasRole("admin")||t.indexOf(e)>-1},e.uniIDTokenValid=function(){const{tokenExpired:e}=fs();return e>Date.now()}}(o),o.$set=rs,o.$applyOptions=os,o.$callMethod=is,_n.invokeCreateVueAppHook(e)}as="function"!=typeof atob?function(e){if(e=String(e).replace(/[\t\n\f\r ]+/g,""),!ls.test(e))throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");var t;e+="==".slice(2-(3&e.length));for(var n,o,r="",i=0;i>16&255):64===o?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return r}:atob;const ds=Object.create(null);function hs(e){delete ds[e]}function gs(e){if(!e)return;const[t,n]=e.split(",");return ds[t]?ds[t][parseInt(n)]:void 0}var ms={install(e){ps(e),e.config.globalProperties.pruneComponentPropsCache=hs;const t=e.mount;e.mount=function(n){const o=t.call(e,n),r=function(){const e="createApp";if("undefined"!=typeof global&&void 0!==global[e])return global[e];if("undefined"!=typeof my)return my[e]}();return r?r(o):"undefined"!=typeof createMiniProgramApp&&createMiniProgramApp(o),o}}};function ys(e,t){const n=_i||mr,r=n.ctx,i=void 0===t||"mp-weixin"!==r.$mpPlatform&&"mp-qq"!==r.$mpPlatform&&"mp-xhs"!==r.$mpPlatform||!g(t)&&"number"!=typeof t?"":"_"+t,s="e"+n.$ei+++i,a=r.$scope;if(!e)return delete a[s],s;const u=a[s];return u?u.value=e:a[s]=function(e,t){const n=e=>{var r;(r=e).type&&r.target&&(r.preventDefault=o,r.stopPropagation=o,r.stopImmediatePropagation=o,l(r,"detail")||(r.detail={}),l(r,"markerId")&&(r.detail="object"==typeof r.detail?r.detail:{},r.detail.markerId=r.markerId),x(r.detail)&&l(r.detail,"checked")&&!l(r.detail,"value")&&(r.detail.value=r.detail.checked),x(r.detail)&&(r.target=c({},r.target,r.detail)));let i=[e];t&&t.ctx.$getTriggerEventDetail&&"number"==typeof e.detail&&(e.detail=t.ctx.$getTriggerEventDetail(e.detail)),e.detail&&e.detail.__args__&&(i=e.detail.__args__);const s=n.value,a=()=>Ko(function(e,t){if(f(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n&&n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e(t)))}return t}(e,s),t,5,i),u=e.target,p=!!u&&(!!u.dataset&&"true"===String(u.dataset.eventsync));if(!vs.includes(e.type)||p){const t=a();if("input"===e.type&&(f(t)||v(t)))return;return t}setTimeout(a)};return n.value=e,n}(e,n),s}const vs=["tap","longpress","longtap","transitionend","animationstart","animationiteration","animationend","touchforcechange"];const _s=function(e,t=null){return e&&(e.mpType="app"),ts(e,t).use(ms)};const bs=["externalClasses"];const xs=/_(.*)_worklet_factory_/;function ws(e,t){const n=e.$children;for(let r=n.length-1;r>=0;r--){const e=n[r];if(e.$scope._$vueId===t)return e}let o;for(let r=n.length-1;r>=0;r--)if(o=ws(n[r],t),o)return o}const $s=["createSelectorQuery","createIntersectionObserver","selectAllComponents","selectComponent"];function Ss(e,t){const n=e.ctx;n.mpType=t.mpType,n.$mpType=t.mpType,n.$mpPlatform="mp-weixin",n.$scope=t.mpInstance,Object.defineProperties(n,{[le]:{get(){const e=this.$scope.data[le];return void 0===e?"":e}}}),n.$mp={},n._self={},e.slots={},f(t.slots)&&t.slots.length&&(t.slots.forEach((t=>{e.slots[t]=!0})),e.slots.d&&(e.slots.default=!0)),n.getOpenerEventChannel=function(){return t.mpInstance.getOpenerEventChannel()},n.$hasHook=ks,n.$callHook=Os,e.emit=function(e,t){return function(n,...o){const r=t.$scope;if(r&&n){const e={__args__:o};r.triggerEvent(n,e)}return e.apply(this,[n,...o])}}(e.emit,n)}function ks(e){const t=this.$[e];return!(!t||!t.length)}function Os(e,t){"mounted"===e&&(Os.call(this,"bm"),this.$.isMounted=!0,e="m");const n=this.$[e];return n&&((e,t)=>{let n;for(let o=0;o{be(n,e[n])&&t.add(n)}));{const{extends:n,mixins:o}=e;o&&o.forEach((e=>As(e,t))),n&&As(n,t)}}return t}function Es(e,t,n){-1!==n.indexOf(t)||l(e,t)||(e[t]=function(e){return this.$vm&&this.$vm.$callHook(t,e)})}const Cs=[q];function js(e,t,n=Cs){t.forEach((t=>Es(e,t,n)))}function Is(e,t,n=Cs){As(t).forEach((t=>Es(e,t,n)))}const Ts=fe((()=>{const e=[],t=h(getApp)&&getApp({allowDefault:!0});if(t&&t.$vm&&t.$vm.$){const n=t.$vm.$.appContext.mixins;if(f(n)){const t=Object.keys(_e);n.forEach((n=>{t.forEach((t=>{l(n,t)&&!e.includes(t)&&e.push(t)}))}))}}return e}));const Rs=[D,V,H,B,U,W];function Ls(e,t){const n=e.$,o={globalData:e.$options&&e.$options.globalData||{},$vm:e,onLaunch(t){this.$vm=e;const o=n.ctx;this.$vm&&o.$scope&&o.$callHook||(Ss(n,{mpType:"app",mpInstance:this,slots:[]}),o.globalData=this.globalData,e.$callHook(N,t))}},r=wx.$onErrorHandlers;r&&(r.forEach((e=>{Ir(H,e,n)})),r.length=0),function(e){const t=Bo(function(){let e="";{const t=wx.getAppBaseInfo();e=Ee(t&&t.language?t.language:Ae)||Ae}return e}());Object.defineProperty(e,"$locale",{get:()=>t.value,set(e){t.value=e}})}(e);const i=e.$.type;js(o,Rs),Is(o,i);{const e=i.methods;e&&c(o,e)}return o}function Ms(e,t){if(h(e.onLaunch)){const t=wx.getLaunchOptionsSync&&wx.getLaunchOptionsSync();e.onLaunch(t)}h(e.onShow)&&wx.onAppShow&&wx.onAppShow((e=>{t.$callHook("onShow",e)})),h(e.onHide)&&wx.onAppHide&&wx.onAppHide((e=>{t.$callHook("onHide",e)}))}const Ds=["eO","uR","uRIF","uI","uT","uP","uS"];function Vs(e){e.properties||(e.properties={}),c(e.properties,function(e,t=!1){const n={};if(!t){let e=function(e){const t=Object.create(null);e&&e.forEach((e=>{t[e]=!0})),this.setData({$slots:t})};Ds.forEach((e=>{n[e]={type:null,value:""}})),n.uS={type:null,value:[]},n.uS.observer=e}return e.behaviors&&e.behaviors.includes("wx://form-field")&&(e.properties&&e.properties.name||(n.name={type:null,value:""}),e.properties&&e.properties.value||(n.value={type:null,value:""})),n}(e),function(e){const t={};return e&&e.virtualHost&&(t.virtualHostStyle={type:null,value:""},t.virtualHostClass={type:null,value:""},t.virtualHostHidden={type:null,value:""},t[le]={type:null,value:""}),t}(e.options))}const Ns=[String,Number,Boolean,Object,Array,null];function Hs(e,t){const n=function(e){return f(e)&&1===e.length?e[0]:e}(e);return-1!==Ns.indexOf(n)?n:null}function Bs(e,t){return(t?function(e){const t={};x(e)&&Object.keys(e).forEach((n=>{-1===Ds.indexOf(n)&&(t[n]=e[n])}));return t}(e):gs(e.uP))||{}}function Us(e){const t=function(){const e=this.properties.uP;e&&(this.$vm?function(e,t){const n=To(t.props),o=gs(e)||{};Ws(n,o)&&(!function(e,t,n,o){const{props:r,attrs:i,vnode:{patchFlag:s}}=e,c=To(r),[a]=e.propsOptions;let u=!1;if(!(o||s>0)||16&s){let o;ai(e,t,r,i)&&(u=!0);for(const i in c)t&&(l(t,i)||(o=A(i))!==i&&l(t,o))||(a?!n||void 0===n[i]&&void 0===n[o]||(r[i]=ui(a,c,i,void 0,e,!0)):delete r[i]);if(i!==c)for(const e in i)t&&l(t,e)||(delete i[e],u=!0)}else if(8&s){const n=e.vnode.dynamicProps;for(let o=0;o-1&&function(e){const t=Xo.indexOf(e);t>Yo&&Xo.splice(t,1)}(t.update),t.update());var r}(e,this.$vm.$):"m"===this.properties.uT&&function(e,t){const n=t.properties,o=gs(e)||{};Ws(n,o,!1)&&t.setData(o)}(e,this))};e.observers||(e.observers={}),e.observers.uP=t}function Ws(e,t,n=!0){const o=Object.keys(t);if(n&&o.length!==Object.keys(e).length)return!0;for(let r=0;r{o.push(e.replace("uni://","wx://")),"uni://form-field"===e&&(f(n)?(n.push("name"),n.push("modelValue")):(n.name={type:String,default:""},n.modelValue={type:[String,Number,Boolean,Array,Object,Date],default:""}))})),o}(t)}function qs(e,{parse:t,mocks:n,isPage:o,isPageInProject:r,initRelation:i,handleLink:s,initLifetimes:a}){e=e.default||e;const u={multipleSlots:!0,addGlobalClass:!0,pureDataPattern:/^uP$/};f(e.mixins)&&e.mixins.forEach((e=>{y(e.options)&&c(u,e.options)})),e.options&&c(u,e.options);const p={options:u,lifetimes:a({mocks:n,isPage:o,initRelation:i,vueOptions:e}),pageLifetimes:{show(){this.$vm&&this.$vm.$callHook("onPageShow")},hide(){this.$vm&&this.$vm.$callHook("onPageHide")},resize(e){this.$vm&&this.$vm.$callHook("onPageResize",e)}},methods:{__l:s}};var d,h,g,m;return zs(p,e),Vs(p),Us(p),function(e,t){bs.forEach((n=>{l(t,n)&&(e[n]=t[n])}))}(p,e),d=p.methods,h=e.wxsCallMethods,f(h)&&h.forEach((e=>{d[e]=function(t){return this.$vm[e](t)}})),g=p.methods,(m=e.methods)&&Object.keys(m).forEach((e=>{const t=e.match(xs);if(t){const n=t[1];g[e]=m[e],g[n]=m[n]}})),t&&t(p,{handleLink:s}),p}let Fs,Ks;function Zs(){return getApp().$vm}function Gs(e,t){const{parse:n,mocks:o,isPage:r,initRelation:i,handleLink:s,initLifetimes:c}=t,a=qs(e,{mocks:o,isPage:r,isPageInProject:!0,initRelation:i,handleLink:s,initLifetimes:c});!function({properties:e},t){f(t)?t.forEach((t=>{e[t]={type:String,value:""}})):x(t)&&Object.keys(t).forEach((n=>{const o=t[n];if(x(o)){let t=o.default;h(t)&&(t=t());const r=o.type;o.type=Hs(r),e[n]={type:o.type,value:t}}else e[n]={type:Hs(o)}}))}(a,(e.default||e).props);const u=a.methods;return u.onLoad=function(e){var t;return this.options=e,this.$page={fullPath:(t=this.route+me(e),function(e){return 0===e.indexOf("/")}(t)?t:"/"+t)},this.$vm&&this.$vm.$callHook(z,e)},js(u,Ps),Is(u,e),function(e,t){if(!t)return;Object.keys(_e).forEach((n=>{t&_e[n]&&Es(e,n,[])}))}(u,e.__runtimeHooks),js(u,Ts()),n&&n(a,{handleLink:s}),a}const Js=Page,Qs=Component;function Xs(e){const t=e.triggerEvent,n=function(n,...o){return t.apply(e,[(r=n,O(r.replace(he,"-"))),...o]);var r};try{e.triggerEvent=n}catch(o){e._triggerEvent=n}}function Ys(e,t,n){const o=t[e];t[e]=o?function(...e){return Xs(this),o.apply(this,e)}:function(){Xs(this)}}Page=function(e){return Ys(z,e),Js(e)},Component=function(e){Ys("created",e);return e.properties&&e.properties.uP||(Vs(e),Us(e)),Qs(e)};var ec=Object.freeze({__proto__:null,handleLink:function(e){const t=e.detail||e.value,n=t.vuePid;let o;n&&(o=ws(this.$vm,n)),o||(o=this.$vm),t.parent=o},initLifetimes:function({mocks:e,isPage:t,initRelation:n,vueOptions:o}){return{attached(){let r=this.properties;!function(e,t){if(!e)return;const n=e.split(","),o=n.length;1===o?t._$vueId=n[0]:2===o&&(t._$vueId=n[0],t._$vuePid=n[1])}(r.uI,this);const i={vuePid:this._$vuePid};n(this,i);const s=this,c=t(s);let a=r;this.$vm=function(e,t){Fs||(Fs=Zs().$createComponent);const n=Fs(e,t);return Ai(n.$)||n}({type:o,props:Bs(a,c)},{mpType:c?"page":"component",mpInstance:s,slots:r.uS||{},parentComponent:i.parent&&i.parent.$,onBeforeSetup(t,n){!function(e,t){Object.defineProperty(e,"refs",{get(){const e={};return function(e,t,n){e.selectAllComponents(t).forEach((e=>{const t=e.properties.uR;n[t]=e.$vm||e}))}(t,".r",e),t.selectAllComponents(".r-i-f").forEach((t=>{const n=t.properties.uR;n&&(e[n]||(e[n]=[]),e[n].push(t.$vm||t))})),e}})}(t,s),function(e,t,n){const o=e.ctx;n.forEach((n=>{l(t,n)&&(e[n]=o[n]=t[n])}))}(t,s,e),function(e,t){Ss(e,t);const n=e.ctx;$s.forEach((e=>{n[e]=function(...t){const o=n.$scope;if(o&&o[e])return o[e].apply(o,t)}}))}(t,n)}}),c||function(e){const t=e.$options;f(t.behaviors)&&t.behaviors.includes("uni://form-field")&&e.$watch("modelValue",(()=>{e.$scope&&e.$scope.setData({name:e.name,value:e.modelValue})}),{immediate:!0})}(this.$vm)},ready(){this.$vm&&(this.$vm.$callHook("mounted"),this.$vm.$callHook(q))},detached(){var e;this.$vm&&(hs(this.$vm.$.uid),e=this.$vm,Ks||(Ks=Zs().$destroyComponent),Ks(e))}}},initRelation:function(e,t){e.triggerEvent("__l",t)},isPage:function(e){return!!e.route},mocks:["__route__","__wxExparserNodeId__","__wxWebviewId__"]});const tc=function(e){return App(Ls(e))},nc=(oc=ec,function(e){return Component(Gs(e,oc))});var oc;const rc=function(e){return function(t){return Component(qs(t,e))}}(ec),ic=function(e){Ms(Ls(e),e)},sc=function(e){const t=Ls(e),n=h(getApp)&&getApp({allowDefault:!0});if(!n)return;e.$.ctx.$scope=n;const o=n.globalData;o&&Object.keys(t.globalData).forEach((e=>{l(o,e)||(o[e]=t.globalData[e])})),Object.keys(t).forEach((e=>{l(n,e)||(n[e]=t[e])})),Ms(t,e)};function cc(e,t=new WeakMap){if(null===e||"object"!=typeof e)return e;if(t.has(e))return t.get(e);let n;if(e instanceof Date)n=new Date(e.getTime());else if(e instanceof RegExp)n=new RegExp(e);else if(e instanceof Map)n=new Map(Array.from(e,(([e,n])=>[e,cc(n,t)])));else if(e instanceof Set)n=new Set(Array.from(e,(e=>cc(e,t))));else if(Array.isArray(e))n=e.map((e=>cc(e,t)));else if("[object Object]"===Object.prototype.toString.call(e)){n=Object.create(Object.getPrototypeOf(e)),t.set(e,n);for(const[o,r]of Object.entries(e))n[o]=cc(r,t)}else n=Object.assign({},e);return t.set(e,n),n}function ac(e={},t={}){if("object"!=typeof(e=cc(e))||null===e||"object"!=typeof t||null===t)return e;const n=Array.isArray(e)?e.slice():Object.assign({},e);for(const o in t){if(!t.hasOwnProperty(o))continue;const e=t[o],r=n[o];e instanceof Date?n[o]=new Date(e):e instanceof RegExp?n[o]=new RegExp(e):e instanceof Map?n[o]=new Map(e):e instanceof Set?n[o]=new Set(e):n[o]="object"==typeof e&&null!==e?ac(r,e):e}return n}function uc(e){switch(typeof e){case"undefined":return!0;case"string":if(0==e.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length)return!0;break;case"boolean":if(!e)return!0;break;case"number":if(0===e||isNaN(e))return!0;break;case"object":if(null===e||0===e.length)return!0;for(var t in e)return!1;return!0}return!1}wx.createApp=global.createApp=tc,wx.createPage=nc,wx.createComponent=rc,wx.createPluginApp=global.createPluginApp=ic,wx.createSubpackageApp=global.createSubpackageApp=sc;const lc={email:function(e){return/[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(e)},mobile:function(e){return/^1[3-9]\d{9}$/.test(e)},url:function(e){return/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/.test(e)},date:function(e){return!/Invalid|NaN/.test(new Date(e).toString())},dateISO:function(e){return/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(e)},number:function(e){return/^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(e)},digits:function(e){return/^\d+$/.test(e)},idCard:function(e){return/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(e)},carNo:function(e){const t=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/,n=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;return 7===e.length?n.test(e):8===e.length&&t.test(e)},amount:function(e){return/^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(e)},chinese:function(e){return/^[\u4e00-\u9fa5]+$/gi.test(e)},letter:function(e){return/^[a-zA-Z]*$/.test(e)},enOrNum:function(e){return/^[0-9a-zA-Z]*$/g.test(e)},contains:function(e,t){return e.indexOf(t)>=0},range:function(e,t){return e>=t[0]&&e<=t[1]},rangeLength:function(e,t){return e.length>=t[0]&&e.length<=t[1]},empty:uc,isEmpty:uc,jsonString:function(e){if("string"==typeof e)try{var t=JSON.parse(e);return!("object"!=typeof t||!t)}catch(n){return!1}return!1},landline:function(e){return/^\d{3,4}-\d{7,8}(-\d{3,4})?$/.test(e)},object:function(e){return"[object Object]"===Object.prototype.toString.call(e)},array:function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)},code:function(e,t=6){return new RegExp(`^\\d{${t}}$`).test(e)}};const fc=new class{setConfig(e){this.config=ac(this.config,e)}request(e={}){if(this.interceptor.request&&"function"==typeof this.interceptor.request){let t=this.interceptor.request(e);if(!1===t)return new Promise((()=>{}));this.options=t}return e.dataType=e.dataType||this.config.dataType,e.responseType=e.responseType||this.config.responseType,e.url=e.url||"",e.params=e.params||{},e.header=Object.assign({},this.config.header,e.header),e.method=e.method||this.config.method,new Promise(((t,n)=>{e.complete=e=>{if(_n.hideLoading(),clearTimeout(this.config.timer),this.config.timer=null,this.config.originalData)if(this.interceptor.response&&"function"==typeof this.interceptor.response){let o=this.interceptor.response(e);!1!==o?t(o):n(e)}else t(e);else if(200==e.statusCode)if(this.interceptor.response&&"function"==typeof this.interceptor.response){let o=this.interceptor.response(e.data);!1!==o?t(o):n(e.data)}else t(e.data);else n(e)},e.url=lc.url(e.url)?e.url:this.config.baseUrl+(0==e.url.indexOf("/")?e.url:"/"+e.url),this.config.showLoading&&!this.config.timer&&(this.config.timer=setTimeout((()=>{_n.showLoading({title:this.config.loadingText,mask:this.config.loadingMask}),this.config.timer=null}),this.config.loadingTime)),_n.request(e)}))}constructor(){this.config={baseUrl:"",header:{},method:"POST",dataType:"json",responseType:"text",showLoading:!0,loadingText:"请求中...",loadingTime:800,timer:null,originalData:!1,loadingMask:!0},this.interceptor={request:null,response:null},this.get=(e,t={},n={})=>this.request({method:"GET",url:e,header:n,data:t}),this.post=(e,t={},n={})=>this.request({url:e,method:"POST",header:n,data:t}),this.put=(e,t={},n={})=>this.request({url:e,method:"PUT",header:n,data:t}),this.delete=(e,t={},n={})=>this.request({url:e,method:"DELETE",header:n,data:t})}};const pc=(new class{constructor(){this.config={type:"navigateTo",url:"",delta:1,params:{},animationType:"pop-in",animationDuration:300,intercept:!1},this.route=this.route.bind(this)}addRootPath(e){return"/"===e[0]?e:`/${e}`}mixinParam(e,t){e=e&&this.addRootPath(e);let n="";return/.*\/.*\?.*=.*/.test(e)?(n=_n.$u.queryParams(t,!1),e+"&"+n):(n=_n.$u.queryParams(t),e+n)}async route(e={},t={}){let n={};if("string"==typeof e?(n.url=this.mixinParam(e,t),n.type="navigateTo"):(n=_n.$u.deepMerge(this.config,e),n.url=this.mixinParam(e.url,e.params)),t.intercept&&(this.config.intercept=t.intercept),n.params=t,n=_n.$u.deepMerge(this.config,n),"function"==typeof _n.$u.routeIntercept){await new Promise(((e,t)=>{_n.$u.routeIntercept(n,e)}))&&this.openPage(n)}else this.openPage(n)}openPage(e){const{url:t,type:n,delta:o,animationType:r,animationDuration:i}=e;"navigateTo"!=e.type&&"to"!=e.type||_n.navigateTo({url:t,animationType:r,animationDuration:i}),"redirectTo"!=e.type&&"redirect"!=e.type||_n.redirectTo({url:t}),"switchTab"!=e.type&&"tab"!=e.type||_n.switchTab({url:t}),"reLaunch"!=e.type&&"launch"!=e.type||_n.reLaunch({url:t}),"navigateBack"!=e.type&&"back"!=e.type||_n.navigateBack({delta:o})}}).route;function dc(e=null,t="yyyy-mm-dd"){e||(e=Number(new Date)),10==e.toString().length&&(e*=1e3);let n,o=new Date(e),r={"y+":o.getFullYear().toString(),"m+":(o.getMonth()+1).toString(),"d+":o.getDate().toString(),"h+":o.getHours().toString(),"M+":o.getMinutes().toString(),"s+":o.getSeconds().toString()};for(let i in r)n=new RegExp("("+i+")").exec(t),n&&(t=t.replace(n[1],1==n[1].length?r[i]:r[i].padStart(n[1].length,"0")));return t}function hc(e,t=!0){if((e=e.toLowerCase())&&/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(e)){if(4===e.length){let t="#";for(let n=1;n<4;n+=1)t+=e.slice(n,n+1).concat(e.slice(n,n+1));e=t}let n=[];for(let t=1;t<7;t+=2)n.push(parseInt("0x"+e.slice(t,t+2)));return t?`rgb(${n[0]},${n[1]},${n[2]})`:n}if(/^(rgb|RGB)/.test(e)){return e.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",").map((e=>Number(e)))}return e}function gc(e){let t=e;if(/^(rgb|RGB)/.test(t)){let e=t.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(","),n="#";for(let t=0;t=e)return String(n);let o=e-n.length,r=Math.ceil(o/t.length);for(;r>>=1;)t+=t,1===r&&(t+=t);return t.slice(0,o)+n});const mc={colorGradient:function(e="rgb(0, 0, 0)",t="rgb(255, 255, 255)",n=10){let o=hc(e,!1),r=o[0],i=o[1],s=o[2],c=hc(t,!1),a=(c[0]-r)/n,u=(c[1]-i)/n,l=(c[2]-s)/n,f=[];for(let p=0;p=0))if(t.constructor===Array)switch(n){case"indices":for(let n=0;n{r.push(i+"[]="+e)}));break;case"repeat":t.forEach((e=>{r.push(i+"="+e)}));break;case"comma":let e="";t.forEach((t=>{e+=(e?",":"")+t})),r.push(i+"="+e)}else r.push(i+"="+t)}return r.length?o+r.join("&"):""},route:pc,timeFormat:dc,date:dc,timeFrom:function(e=null,t="yyyy-mm-dd"){e||(e=Number(new Date)),10==e.toString().length&&(e*=1e3);let n=+new Date(Number(e)),o=(Number(new Date)-n)/1e3,r="";switch(!0){case o<300:r="刚刚";break;case o>=300&&o<3600:r=parseInt(o/60)+"分钟前";break;case o>=3600&&o<86400:r=parseInt(o/3600)+"小时前";break;case o>=86400&&o<2592e3:r=parseInt(o/86400)+"天前";break;default:r=!1===t?o>=2592e3&&o<31536e3?parseInt(o/2592e3)+"个月前":parseInt(o/31536e3)+"年前":dc(n,t)}return r},colorGradient:mc.colorGradient,colorToRgba:mc.colorToRgba,guid:function(e=32,t=!0,n=null){let o="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),r=[];if(n=n||o.length,e)for(let i=0;iMath.random()-.5))},wranning:function(e){},get:fc.get,post:fc.post,put:fc.put,delete:fc.delete,hexToRgb:mc.hexToRgb,rgbToHex:mc.rgbToHex,test:lc,random:function(e,t){if(e>=0&&t>0&&t>=e){let n=t-e+1;return Math.floor(Math.random()*n+e)}return 0},deepClone:cc,deepMerge:ac,getParent:function(e,t){let n=this.$parent;for(;n;){if(n.$options.name===e){let e={};if(Array.isArray(t))t.map((t=>{e[t]=n[t]?n[t]:""}));else for(let o in t)Array.isArray(t[o])?t[o].length?e[o]=t[o]:e[o]=n[o]:t[o].constructor===Object?Object.keys(t[o]).length?e[o]=t[o]:e[o]=n[o]:e[o]=t[o]||!1===t[o]?t[o]:n[o];return e}n=n.$parent}return{}},$parent:function(e=void 0){let t=this.$parent;for(;t;){if(!t.$options||t.$options.name===e)return t;t=t.$parent}return!1},addUnit:function(e="auto",t="rpx"){return e=String(e),lc.number(e)?`${e}${t}`:e},trim:function(e,t="both"){return"both"==t?e.replace(/^\s+|\s+$/g,""):"left"==t?e.replace(/^\s*/,""):"right"==t?e.replace(/(\s*$)/g,""):"all"==t?e.replace(/\s+/g,""):e},type:["primary","success","error","warning","info"],http:fc,toast:function(e,t=1500){_n.showToast({title:e,icon:"none",duration:t})},config:bc,zIndex:{toast:10090,noNetwork:10080,popup:10075,mask:10070,navbar:980,topTips:975,sticky:970,indexListSticky:965},debounce:function(e,t=500,n=!1){if(null!==vc&&clearTimeout(vc),n){var o=!vc;vc=setTimeout((function(){vc=null}),t),o&&"function"==typeof e&&e()}else vc=setTimeout((function(){"function"==typeof e&&e()}),t)},throttle:function(e,t=500,n=!0){n?yc||(yc=!0,"function"==typeof e&&e(),setTimeout((()=>{yc=!1}),t)):yc||(yc=!0,setTimeout((()=>{yc=!1,"function"==typeof e&&e()}),t))}};_n.$u=xc,exports._export_sfc=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n},exports.createSSRApp=_s,exports.e=(e,...t)=>c(e,...t),exports.f=(e,t)=>function(e,t){let n;if(f(e)||g(e)){n=new Array(e.length);for(let o=0,r=e.length;ot(e,n,n)));else{const o=Object.keys(e);n=new Array(o.length);for(let r=0,i=o.length;rR(e),exports.o=(e,t)=>ys(e,t),exports.t=e=>(e=>g(e)?e:null==e?"":f(e)||y(e)&&(e.toString===_||!h(e.toString))?JSON.stringify(e,L,2):String(e))(e);
diff --git a/unpackage/dist/build/mp-weixin/config/http.js b/unpackage/dist/build/mp-weixin/config/http.js
new file mode 100644
index 0000000..6d9821f
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/config/http.js
@@ -0,0 +1 @@
+"use strict";const e=require("../common/vendor.js"),o=require("./url.js");exports.request=a=>new Promise(((t,d)=>{console.log(`发起请求: ${a.method} ${o.URL+a.url}`,a.data),e.index.request({url:o.URL+a.url,method:a.method,data:a.data,header:{"Content-Type":"application/x-www-form-urlencoded",...a.headers,appid:o.appid,Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")},success:e=>(console.log(`请求响应: ${a.url}`,e),200!==e.statusCode?(console.error(`HTTP状态码错误: ${e.statusCode}`,e.data),e.data?void t(e.data):void d({msg:`请求失败,状态码:${e.statusCode}`})):e.data&&200!==e.data.code?(console.warn(`业务状态码错误: ${e.data.code}`,e.data),void t(e.data)):void t(e.data)),fail(e){console.error(`请求失败: ${a.url}`,e),d(e)}})}));
diff --git a/unpackage/dist/build/mp-weixin/config/url.js b/unpackage/dist/build/mp-weixin/config/url.js
new file mode 100644
index 0000000..fb6a965
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/config/url.js
@@ -0,0 +1 @@
+"use strict";exports.URL="https://unifans.gxfs123.com",exports.appid="wxe752f45e7f7aa271";
diff --git a/unpackage/dist/build/mp-weixin/config/user.js b/unpackage/dist/build/mp-weixin/config/user.js
new file mode 100644
index 0000000..88d1525
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/config/user.js
@@ -0,0 +1 @@
+"use strict";const e=require("./http.js");exports.confirmPaymentAndRent=r=>(console.log(`确认支付并弹出充电宝, orderId: ${r}`),e.request({url:`/app/device/confirmPaymentAndRent?orderId=${r}`,method:"post"})),exports.getDeviceInfo=r=>e.request({url:`/app/device/${r}`,method:"get"}),exports.getMyIndexInfo=r=>e.request({url:"/app/user/userInfo",method:"get",data:r}),exports.getOrderList=r=>e.request({url:"/app/order/list",method:"get",data:r,hideLoading:!0}),exports.login=r=>e.request({url:"/app/user/login",method:"get",data:r}),exports.queryById=r=>(console.log(`查询订单详情, orderId: ${r}`),e.request({url:`/app/order/${r}`,method:"get",hideLoading:!0})),exports.queryHasOrder=r=>e.request({url:`/app/order/list?deviceNo=${r}&orderStatus=in_used`,method:"get"}),exports.rentPowerBank=(r,t)=>e.request({url:"/app/device/rentPowerBank",method:"post",data:{deviceNo:r,phone:t}});
diff --git a/unpackage/dist/build/mp-weixin/constants/help.js b/unpackage/dist/build/mp-weixin/constants/help.js
new file mode 100644
index 0000000..0883091
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/constants/help.js
@@ -0,0 +1 @@
+"use strict";exports.HELP_CONTENT={FAQ_LIST:[{question:"如何租借风扇?",answer:'点击首页"扫码租借"按钮,使用微信扫描设备上的二维码,按提示完成支付即可使用。'},{question:"收费标准是怎样的?",answer:"使用费用为2元/小时,不足1小时按1小时计算。押金99元,归还后自动退还。"},{question:"如何归还风扇?",answer:'将风扇带到任意归还点,点击首页"扫码归还"按钮,扫描归还点二维码即可完成归还。'},{question:"押金多久能退还?",answer:"归还设备后押金将自动发起退款,预计0-7个工作日到账。"},{question:"设备无法正常使用怎么办?",answer:'您可以通过"我的-投诉与建议"提交故障反馈,或直接拨打客服电话处理。'}],CONTACT:{TITLE:"联系客服",PHONE:{LABEL:"客服电话",VALUE:"400-888-8888"},SERVICE_TIME:{LABEL:"服务时间",VALUE:"周一至周日 09:00-22:00"}}};
diff --git a/unpackage/dist/build/mp-weixin/constants/orderStatus.js b/unpackage/dist/build/mp-weixin/constants/orderStatus.js
new file mode 100644
index 0000000..e673b1c
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/constants/orderStatus.js
@@ -0,0 +1 @@
+"use strict";exports.OrderStatusMap={waiting_for_payment:{text:"待支付",class:"status-waiting"},payment_in_progress:{text:"支付中",class:"status-progress"},payment_successful:{text:"支付成功",class:"status-success"},in_used:{text:"使用中",class:"status-using"},payment_failed:{text:"支付失败",class:"status-failed"},order_cancelled:{text:"已取消",class:"status-cancelled"},used_done:{text:"已完成",class:"status-finished"}},exports.OrderStatusTabs=[{text:"全部",status:[]},{text:"待支付",status:["waiting_for_payment","payment_in_progress"]},{text:"使用中",status:["payment_successful","in_used"]},{text:"已完成",status:["used_done","payment_failed","order_cancelled"]}];
diff --git a/unpackage/dist/build/mp-weixin/pages/deposit/index.js b/unpackage/dist/build/mp-weixin/pages/deposit/index.js
new file mode 100644
index 0000000..c2d925c
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/deposit/index.js
@@ -0,0 +1 @@
+"use strict";const t=require("../../common/vendor.js"),e={data:()=>({depositAmount:"99.00",records:[{type:"支付",time:"2024-03-20 15:30",amount:"99.00"},{type:"退还",time:"2024-03-19 12:00",amount:"99.00"}]}),methods:{handleWithdraw(){t.index.showModal({title:"确认提现",content:"押金将原路退回,预计0-7个工作日到账",success:e=>{e.confirm&&t.index.showToast({title:"提现申请已提交",icon:"success"})}})}}};const o=t._export_sfc(e,[["render",function(e,o,n,d,s,a){return{a:t.t(s.depositAmount),b:t.o(((...t)=>a.handleWithdraw&&a.handleWithdraw(...t))),c:t.f(s.records,((e,o,n)=>({a:t.t(e.type),b:t.t(e.time),c:t.t("退还"===e.type?"+":"-"),d:t.t(e.amount),e:t.n("退还"===e.type?"refund":""),f:o})))}}],["__scopeId","data-v-a3ef2e56"]]);wx.createPage(o);
diff --git a/unpackage/dist/build/mp-weixin/pages/deposit/index.json b/unpackage/dist/build/mp-weixin/pages/deposit/index.json
new file mode 100644
index 0000000..7ea70a9
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/deposit/index.json
@@ -0,0 +1,4 @@
+{
+ "navigationBarTitleText": "押金管理",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/deposit/index.wxml b/unpackage/dist/build/mp-weixin/pages/deposit/index.wxml
new file mode 100644
index 0000000..fcf3759
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/deposit/index.wxml
@@ -0,0 +1 @@
+押金余额¥{{a}}提现提现说明1. 提现金额将原路退回支付账户2. 提现申请提交后预计0-7个工作日到账3. 如超时未收到,请联系客服处理押金记录{{item.a}}{{item.b}}{{item.c}}¥{{item.d}}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/deposit/index.wxss b/unpackage/dist/build/mp-weixin/pages/deposit/index.wxss
new file mode 100644
index 0000000..0063c3f
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/deposit/index.wxss
@@ -0,0 +1 @@
+.deposit-container.data-v-a3ef2e56{min-height:100vh;background:#f8f8f8;padding:30rpx}.deposit-container .deposit-card.data-v-a3ef2e56{background:linear-gradient(135deg,#1976d2,#64b5f6);border-radius:20rpx;padding:40rpx;color:#fff;text-align:center;box-shadow:0 4rpx 20rpx rgba(25,118,210,.2)}.deposit-container .deposit-card .title.data-v-a3ef2e56{font-size:28rpx;opacity:.9;margin-bottom:20rpx}.deposit-container .deposit-card .amount.data-v-a3ef2e56{font-size:72rpx;font-weight:700;margin-bottom:40rpx}.deposit-container .deposit-card .withdraw-btn.data-v-a3ef2e56{background:#fff;color:#1976d2;width:80%;height:80rpx;line-height:80rpx;border-radius:40rpx;font-size:32rpx;font-weight:500;margin:0 auto}.deposit-container .deposit-card .withdraw-btn.data-v-a3ef2e56:active{transform:scale(.98)}.deposit-container .notice-card.data-v-a3ef2e56{margin-top:30rpx;background:#fff;border-radius:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.deposit-container .notice-card .notice-title.data-v-a3ef2e56{display:flex;align-items:center;margin-bottom:20rpx}.deposit-container .notice-card .notice-title .dot.data-v-a3ef2e56{width:12rpx;height:12rpx;background:#1976d2;border-radius:50%;margin-right:10rpx}.deposit-container .notice-card .notice-title text.data-v-a3ef2e56{font-size:30rpx;font-weight:500;color:#333}.deposit-container .notice-card .notice-content .notice-item.data-v-a3ef2e56{font-size:26rpx;color:#666;line-height:1.8;padding-left:22rpx}.deposit-container .record-card.data-v-a3ef2e56{margin-top:30rpx;background:#fff;border-radius:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.deposit-container .record-card .record-title.data-v-a3ef2e56{font-size:30rpx;font-weight:500;color:#333;margin-bottom:20rpx;border-left:8rpx solid #1976D2;padding-left:20rpx}.deposit-container .record-card .record-list .record-item.data-v-a3ef2e56{display:flex;justify-content:space-between;align-items:center;padding:20rpx 0;border-bottom:1rpx solid #f5f5f5}.deposit-container .record-card .record-list .record-item.data-v-a3ef2e56:last-child{border-bottom:none}.deposit-container .record-card .record-list .record-item .record-info .record-type.data-v-a3ef2e56{font-size:28rpx;color:#333;margin-bottom:6rpx;display:block}.deposit-container .record-card .record-list .record-item .record-info .record-time.data-v-a3ef2e56{font-size:24rpx;color:#999}.deposit-container .record-card .record-list .record-item .record-amount.data-v-a3ef2e56{font-size:32rpx;color:#333;font-weight:500}.deposit-container .record-card .record-list .record-item .record-amount.refund.data-v-a3ef2e56{color:#4caf50}
diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.js b/unpackage/dist/build/mp-weixin/pages/device/detail.js
new file mode 100644
index 0000000..11f4ee8
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/device/detail.js
@@ -0,0 +1 @@
+"use strict";const e=require("../../common/vendor.js"),t=require("../../config/user.js"),i={data:()=>({deviceInfo:{},deviceId:"",deviceLocation:"一号教学楼大厅",batteryLevel:95,hasActiveOrder:!1,deviceStatus:{text:"可使用",class:"available"},selectedPackage:1,packages:[{time:"1小时",price:"2.00",unitPrice:"2.00"},{time:"4小时",price:"6.00",unitPrice:"1.50"},{time:"12小时",price:"15.00",unitPrice:"1.25"}],isLoggedIn:!0,phoneNumber:""}),onLoad(e){this.deviceId=e.deviceNo,console.log(e.deviceNo),this.getDeviceInfo()},methods:{async getDeviceInfo(){const e=await t.getDeviceInfo(this.deviceId);200==e.code&&(this.deviceInfo=e.data)},showLoginTip(){e.index.showModal({title:"提示",content:"请先登录后再操作",confirmText:"去登录",success:t=>{t.confirm&&e.index.navigateTo({url:"/pages/login/index"})}})},selectPackage(e){this.selectedPackage=e},async checkOrderStatus(){try{(await this.$api.checkActiveOrder()).hasOrder&&e.index.redirectTo({url:`/pages/device/return?deviceId=${this.deviceId}`})}catch(t){e.index.showToast({title:"订单状态查询失败",icon:"none"})}},handleRent(){if(!this.isLoggedIn)return void this.showLoginTip();if(!this.phoneNumber)return void e.index.showToast({title:"请输入手机号码",icon:"none"});if(!/^1[3-9]\d{9}$/.test(this.phoneNumber))return void e.index.showToast({title:"请输入正确的手机号码",icon:"none"});const t=this.packages[this.selectedPackage];e.index.showModal({title:"确认租借",content:`确认支付押金¥99.00及${t.time}套餐费用¥${t.price}?`,success:e=>{e.confirm&&this.submitRentOrder()}})},async submitRentOrder(){try{e.index.showLoading({title:"处理中"});const i=this.packages[this.selectedPackage],c=await t.rentPowerBank(this.deviceId,this.phoneNumber);if(200!==c.code)throw new Error(c.msg||"设备租借失败");const n=c.data;e.index.hideLoading(),e.index.redirectTo({url:`/pages/order/payment?orderId=${n.orderId}&packageTime=${i.time}&packagePrice=${i.price}`})}catch(i){e.index.hideLoading(),e.index.showToast({title:i.message||"租借失败,请重试",icon:"none"})}}}};const c=e._export_sfc(i,[["render",function(t,i,c,n,a,r){return e.e({a:e.t(a.deviceId),b:e.t(a.deviceStatus.text),c:e.n(a.deviceStatus.class),d:e.t(a.deviceLocation),e:e.t(a.batteryLevel),f:!a.hasActiveOrder},a.hasActiveOrder?{}:{g:e.f(a.packages,((t,i,c)=>({a:e.t(t.time),b:e.t(t.price),c:e.t(t.unitPrice),d:i,e:a.selectedPackage===i?1:"",f:e.o((e=>r.selectPackage(i)),i)})))},{h:!a.hasActiveOrder},a.hasActiveOrder?{}:{i:a.phoneNumber,j:e.o((e=>a.phoneNumber=e.detail.value))},{k:!a.hasActiveOrder},(a.hasActiveOrder,{}),{l:e.t(a.hasActiveOrder?"归还设备":"立即租借"),m:e.n(a.hasActiveOrder?"return":"rent"),n:e.o(((...e)=>r.handleRent&&r.handleRent(...e)))})}],["__scopeId","data-v-b8e15e19"]]);wx.createPage(c);
diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.json b/unpackage/dist/build/mp-weixin/pages/device/detail.json
new file mode 100644
index 0000000..c908336
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/device/detail.json
@@ -0,0 +1,6 @@
+{
+ "navigationBarTitleText": "设备详情",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.wxml b/unpackage/dist/build/mp-weixin/pages/device/detail.wxml
new file mode 100644
index 0000000..db39782
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/device/detail.wxml
@@ -0,0 +1 @@
+设备位置{{d}}电池电量{{e}}%选择套餐{{pkg.a}}¥{{pkg.b}}约{{pkg.c}}元/小时联系方式使用说明请在使用前检查设备是否完好超出使用时间将自动按小时计费请在指定区域内使用设备押金:¥99{{l}}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.wxss b/unpackage/dist/build/mp-weixin/pages/device/detail.wxss
new file mode 100644
index 0000000..6d8d234
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/device/detail.wxss
@@ -0,0 +1 @@
+.detail-container.data-v-b8e15e19{min-height:100vh;background:#f8f8f8;padding:30rpx 30rpx 180rpx;box-sizing:border-box}.detail-container .device-card.data-v-b8e15e19{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.detail-container .device-card .device-header.data-v-b8e15e19{display:flex;justify-content:space-between;align-items:center;margin-bottom:30rpx}.detail-container .device-card .device-header .device-title .name.data-v-b8e15e19{font-size:36rpx;font-weight:600;color:#333;margin-right:20rpx}.detail-container .device-card .device-header .device-title .id.data-v-b8e15e19{font-size:24rpx;color:#999}.detail-container .device-card .device-header .status.data-v-b8e15e19{padding:8rpx 24rpx;border-radius:24rpx;font-size:24rpx}.detail-container .device-card .device-header .status.available.data-v-b8e15e19{background:#e8f5e9;color:#4caf50}.detail-container .device-card .device-header .status.in-use.data-v-b8e15e19{background:#e3f2fd;color:#1976d2}.detail-container .device-card .device-info .info-item.data-v-b8e15e19{display:flex;justify-content:space-between;margin-bottom:16rpx}.detail-container .device-card .device-info .info-item.data-v-b8e15e19:last-child{margin-bottom:0}.detail-container .device-card .device-info .info-item .label.data-v-b8e15e19{font-size:28rpx;color:#666}.detail-container .device-card .device-info .info-item .value.data-v-b8e15e19{font-size:28rpx;color:#333}.detail-container .package-section.data-v-b8e15e19{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.detail-container .package-section .section-title.data-v-b8e15e19{font-size:32rpx;font-weight:600;color:#333;margin-bottom:24rpx}.detail-container .package-section .package-list.data-v-b8e15e19{display:flex;justify-content:space-between}.detail-container .package-section .package-list .package-item.data-v-b8e15e19{flex:1;margin:0 10rpx;padding:24rpx;background:#f5f5f5;border-radius:16rpx;text-align:center;transition:all .3s}.detail-container .package-section .package-list .package-item.data-v-b8e15e19:first-child{margin-left:0}.detail-container .package-section .package-list .package-item.data-v-b8e15e19:last-child{margin-right:0}.detail-container .package-section .package-list .package-item.active.data-v-b8e15e19{background:#e3f2fd;border:2rpx solid #1976D2}.detail-container .package-section .package-list .package-item.active .package-content .time.data-v-b8e15e19,.detail-container .package-section .package-list .package-item.active .package-content .price.data-v-b8e15e19{color:#1976d2}.detail-container .package-section .package-list .package-item .package-content.data-v-b8e15e19{margin-bottom:8rpx}.detail-container .package-section .package-list .package-item .package-content .time.data-v-b8e15e19{font-size:28rpx;color:#333;margin-bottom:8rpx;display:block}.detail-container .package-section .package-list .package-item .package-content .price.data-v-b8e15e19{font-size:36rpx;font-weight:600;color:#333}.detail-container .package-section .package-list .package-item .unit-price.data-v-b8e15e19{font-size:24rpx;color:#999}.detail-container .phone-section.data-v-b8e15e19{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.detail-container .phone-section .section-title.data-v-b8e15e19{font-size:32rpx;font-weight:600;color:#333;margin-bottom:24rpx}.detail-container .phone-section .phone-input-wrap .phone-input.data-v-b8e15e19{width:100%;height:88rpx;background:#f5f5f5;border-radius:16rpx;padding:0 30rpx;font-size:28rpx;box-sizing:border-box}.detail-container .phone-section .phone-input-wrap .phone-input.data-v-b8e15e19::-webkit-input-placeholder{color:#999}.detail-container .phone-section .phone-input-wrap .phone-input.data-v-b8e15e19::placeholder{color:#999}.detail-container .notice-section.data-v-b8e15e19{background:#fff;border-radius:24rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.detail-container .notice-section .section-title.data-v-b8e15e19{font-size:32rpx;font-weight:600;color:#333;margin-bottom:24rpx}.detail-container .notice-section .notice-list .notice-item.data-v-b8e15e19{display:flex;align-items:center;margin-bottom:16rpx}.detail-container .notice-section .notice-list .notice-item.data-v-b8e15e19:last-child{margin-bottom:0}.detail-container .notice-section .notice-list .notice-item .dot.data-v-b8e15e19{width:12rpx;height:12rpx;background:#1976d2;border-radius:50%;margin-right:16rpx}.detail-container .notice-section .notice-list .notice-item text.data-v-b8e15e19{font-size:28rpx;color:#666;line-height:1.5}.detail-container .bottom-bar.data-v-b8e15e19{position:fixed;left:0;right:0;bottom:0;background:#fff;padding:20rpx 30rpx;padding-bottom:calc(20rpx + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;box-shadow:0 -4rpx 16rpx rgba(0,0,0,.04)}.detail-container .bottom-bar .price-info .deposit-text.data-v-b8e15e19{font-size:28rpx;color:#666}.detail-container .bottom-bar .price-info .deposit-amount.data-v-b8e15e19{font-size:36rpx;font-weight:600;color:#ff9800}.detail-container .bottom-bar .action-btn.data-v-b8e15e19{flex:1;margin-left:30rpx;height:88rpx;border-radius:44rpx;font-size:32rpx;font-weight:600;display:flex;align-items:center;justify-content:center;border:none}.detail-container .bottom-bar .action-btn.rent.data-v-b8e15e19{background:linear-gradient(135deg,#1976d2,#42a5f5);color:#fff}.detail-container .bottom-bar .action-btn.return.data-v-b8e15e19{background:linear-gradient(135deg,#ff9800,#ffb74d);color:#fff}.detail-container .bottom-bar .action-btn.data-v-b8e15e19:active{transform:scale(.98)}
diff --git a/unpackage/dist/build/mp-weixin/pages/feedback/index.js b/unpackage/dist/build/mp-weixin/pages/feedback/index.js
new file mode 100644
index 0000000..6a5157f
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/feedback/index.js
@@ -0,0 +1 @@
+"use strict";const e=require("../../common/vendor.js"),t={data:()=>({types:["设备故障","收费问题","使用建议","其他"],selectedType:-1,description:"",images:[],contact:""}),methods:{selectType(e){this.selectedType=e},chooseImage(){e.index.chooseImage({count:3-this.images.length,success:e=>{this.images=[...this.images,...e.tempFilePaths]}})},deleteImage(e){this.images.splice(e,1)},submitFeedback(){-1!==this.selectedType?this.description.trim()?this.contact?e.index.showToast({title:"提交成功",icon:"success"}):e.index.showToast({title:"请留下联系方式",icon:"none"}):e.index.showToast({title:"请描述您的问题",icon:"none"}):e.index.showToast({title:"请选择问题类型",icon:"none"})}}};const s=e._export_sfc(t,[["render",function(t,s,i,c,o,a){return e.e({a:e.f(o.types,((t,s,i)=>({a:e.t(t),b:s,c:o.selectedType===s?1:"",d:e.o((e=>a.selectType(s)),s)}))),b:o.description,c:e.o((e=>o.description=e.detail.value)),d:e.t(o.description.length),e:e.f(o.images,((t,s,i)=>({a:t,b:e.o((e=>a.deleteImage(s)),s),c:s}))),f:o.images.length<3},o.images.length<3?{g:e.o(((...e)=>a.chooseImage&&a.chooseImage(...e)))}:{},{h:o.contact,i:e.o((e=>o.contact=e.detail.value)),j:e.o(((...e)=>a.submitFeedback&&a.submitFeedback(...e)))})}],["__scopeId","data-v-229c69af"]]);wx.createPage(s);
diff --git a/unpackage/dist/build/mp-weixin/pages/feedback/index.json b/unpackage/dist/build/mp-weixin/pages/feedback/index.json
new file mode 100644
index 0000000..5f30bba
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/feedback/index.json
@@ -0,0 +1,4 @@
+{
+ "navigationBarTitleText": "投诉与建议",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/feedback/index.wxml b/unpackage/dist/build/mp-weixin/pages/feedback/index.wxml
new file mode 100644
index 0000000..1fe3740
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/feedback/index.wxml
@@ -0,0 +1 @@
+问题类型{{type.a}}问题描述{{d}}/500图片上传(选填)×+上传图片联系方式提交反馈
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/feedback/index.wxss b/unpackage/dist/build/mp-weixin/pages/feedback/index.wxss
new file mode 100644
index 0000000..ee8ce45
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/feedback/index.wxss
@@ -0,0 +1 @@
+.feedback-container.data-v-229c69af{min-height:100vh;background:#f8f8f8;padding:30rpx}.feedback-container .section-title.data-v-229c69af{font-size:30rpx;color:#333;font-weight:500;margin-bottom:20rpx}.feedback-container .type-section.data-v-229c69af{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .type-section .type-grid.data-v-229c69af{display:flex;flex-wrap:wrap;margin:0 -10rpx}.feedback-container .type-section .type-grid .type-item.data-v-229c69af{width:calc(50% - 20rpx);margin:10rpx;height:80rpx;display:flex;align-items:center;justify-content:center;background:#f5f5f5;border-radius:10rpx;font-size:28rpx;color:#666;transition:all .3s}.feedback-container .type-section .type-grid .type-item.active.data-v-229c69af{background:#e3f2fd;color:#1976d2}.feedback-container .description-section.data-v-229c69af{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .description-section .description-input.data-v-229c69af{width:100%;height:240rpx;background:#f8f8f8;border-radius:10rpx;padding:20rpx;font-size:28rpx;color:#333;box-sizing:border-box}.feedback-container .description-section .word-count.data-v-229c69af{text-align:right;font-size:24rpx;color:#999;margin-top:10rpx}.feedback-container .upload-section.data-v-229c69af{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .upload-section .upload-grid.data-v-229c69af{display:flex;flex-wrap:wrap}.feedback-container .upload-section .upload-grid .upload-item.data-v-229c69af{width:200rpx;height:200rpx;margin-right:20rpx;margin-bottom:20rpx;position:relative}.feedback-container .upload-section .upload-grid .upload-item image.data-v-229c69af{width:100%;height:100%;border-radius:10rpx}.feedback-container .upload-section .upload-grid .upload-item .delete-btn.data-v-229c69af{position:absolute;right:-10rpx;top:-10rpx;width:40rpx;height:40rpx;background:rgba(0,0,0,.5);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:32rpx}.feedback-container .upload-section .upload-grid .upload-btn.data-v-229c69af{width:200rpx;height:200rpx;background:#f5f5f5;border-radius:10rpx;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#999}.feedback-container .upload-section .upload-grid .upload-btn .plus.data-v-229c69af{font-size:60rpx;line-height:1;margin-bottom:10rpx}.feedback-container .upload-section .upload-grid .upload-btn .tip.data-v-229c69af{font-size:24rpx}.feedback-container .contact-section.data-v-229c69af{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:40rpx}.feedback-container .contact-section .contact-input.data-v-229c69af{width:100%;height:80rpx;background:#f8f8f8;border-radius:10rpx;padding:0 20rpx;font-size:28rpx;color:#333;box-sizing:border-box}.feedback-container .submit-section.data-v-229c69af{padding:0 40rpx}.feedback-container .submit-section .submit-btn.data-v-229c69af{width:100%;height:88rpx;background:#1976d2;color:#fff;border-radius:44rpx;font-size:32rpx;font-weight:500;display:flex;align-items:center;justify-content:center}.feedback-container .submit-section .submit-btn.data-v-229c69af:active{transform:scale(.98)}
diff --git a/unpackage/dist/build/mp-weixin/pages/help/index.js b/unpackage/dist/build/mp-weixin/pages/help/index.js
new file mode 100644
index 0000000..6d87c34
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/help/index.js
@@ -0,0 +1 @@
+"use strict";const e=require("../../common/vendor.js"),T=require("../../constants/help.js"),E={data:()=>({HELP_CONTENT:T.HELP_CONTENT,faqList:T.HELP_CONTENT.FAQ_LIST.map((e=>({...e,isOpen:!1})))}),methods:{toggleFaq(e){this.faqList[e].isOpen=!this.faqList[e].isOpen},makePhoneCall(){e.index.makePhoneCall({phoneNumber:T.HELP_CONTENT.CONTACT.PHONE.VALUE})}}};const t=e._export_sfc(E,[["render",function(T,E,t,N,C,a){return{a:e.f(C.faqList,((T,E,t)=>({a:e.t(T.question),b:T.isOpen?1:"",c:e.t(T.answer),d:T.isOpen,e:E,f:e.o((e=>a.toggleFaq(E)),E)}))),b:e.t(C.HELP_CONTENT.CONTACT.TITLE),c:e.t(C.HELP_CONTENT.CONTACT.PHONE.LABEL),d:e.t(C.HELP_CONTENT.CONTACT.PHONE.VALUE),e:e.o(((...e)=>a.makePhoneCall&&a.makePhoneCall(...e))),f:e.t(C.HELP_CONTENT.CONTACT.SERVICE_TIME.LABEL),g:e.t(C.HELP_CONTENT.CONTACT.SERVICE_TIME.VALUE)}}],["__scopeId","data-v-8f1810be"]]);wx.createPage(t);
diff --git a/unpackage/dist/build/mp-weixin/pages/help/index.json b/unpackage/dist/build/mp-weixin/pages/help/index.json
new file mode 100644
index 0000000..ec73286
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/help/index.json
@@ -0,0 +1,4 @@
+{
+ "navigationBarTitleText": "帮助中心",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/help/index.wxml b/unpackage/dist/build/mp-weixin/pages/help/index.wxml
new file mode 100644
index 0000000..2dd40ee
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/help/index.wxml
@@ -0,0 +1 @@
+{{item.c}}{{b}}{{c}}{{d}}{{f}}{{g}}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/help/index.wxss b/unpackage/dist/build/mp-weixin/pages/help/index.wxss
new file mode 100644
index 0000000..90e82ed
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/help/index.wxss
@@ -0,0 +1 @@
+.help-container.data-v-8f1810be{min-height:100vh;background:#f8f8f8;padding:30rpx}.help-container .faq-list.data-v-8f1810be{background:#fff;border-radius:20rpx;padding:20rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.help-container .faq-list .faq-item.data-v-8f1810be{border-bottom:1rpx solid #f5f5f5}.help-container .faq-list .faq-item.data-v-8f1810be:last-child{border-bottom:none}.help-container .faq-list .faq-item .faq-header.data-v-8f1810be{display:flex;justify-content:space-between;align-items:center;padding:30rpx 20rpx}.help-container .faq-list .faq-item .faq-header .question.data-v-8f1810be{font-size:30rpx;color:#333;flex:1;padding-right:20rpx}.help-container .faq-list .faq-item .faq-header .arrow.data-v-8f1810be{width:16rpx;height:16rpx;border-right:4rpx solid #999;border-bottom:4rpx solid #999;transform:rotate(45deg);transition:all .3s}.help-container .faq-list .faq-item .faq-header .arrow.open.data-v-8f1810be{transform:rotate(-135deg)}.help-container .faq-list .faq-item .answer.data-v-8f1810be{font-size:28rpx;color:#666;line-height:1.6;padding:0 20rpx 30rpx;background:#f9f9f9;border-radius:10rpx;margin:0 20rpx 20rpx}.help-container .contact-card.data-v-8f1810be{background:#fff;border-radius:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.help-container .contact-card .contact-title.data-v-8f1810be{font-size:32rpx;color:#333;font-weight:500;margin-bottom:20rpx;border-left:8rpx solid #1976D2;padding-left:20rpx}.help-container .contact-card .contact-content .contact-item.data-v-8f1810be{display:flex;justify-content:space-between;align-items:center;padding:20rpx 0}.help-container .contact-card .contact-content .contact-item .label.data-v-8f1810be{font-size:28rpx;color:#666}.help-container .contact-card .contact-content .contact-item .value.data-v-8f1810be{font-size:28rpx;color:#333;font-weight:500}.help-container .contact-card .contact-content .contact-item .value.data-v-8f1810be:active{opacity:.7}
diff --git a/unpackage/dist/build/mp-weixin/pages/index/index.js b/unpackage/dist/build/mp-weixin/pages/index/index.js
new file mode 100644
index 0000000..8b84cba
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/index/index.js
@@ -0,0 +1 @@
+"use strict";const e=require("../../common/vendor.js"),o=require("../../util/index.js"),t=require("../../config/url.js"),n=require("../../common/assets.js"),a={methods:{async handleScan(){try{const n=await new Promise(((o,t)=>{e.index.scanCode({success:o,fail:t})}));let a=o.getQueryString(n.path,"deviceNo");if(console.log("扫码路径:",n.path),console.log("解析到的设备号:",a),!a)return void e.index.showToast({title:"无效的设备二维码",icon:"none"});e.index.getStorageSync("token")||await o.wxLogin();const d=await e.index.request({url:`${t.URL||"http://127.0.0.1:8080"}/app/order/inUse`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(console.log("使用中订单检查结果:",JSON.stringify(d)),200==d.statusCode&&200==d.data.code&&d.data.data){const o=d.data.data;return console.log("检测到使用中订单,准备跳转:",o),e.index.reLaunch({url:`/pages/return/index?orderId=${o.orderId}&deviceId=${a||o.deviceNo}`}),void console.log("已发起页面跳转")}const i=await e.index.request({url:`${t.URL||"http://127.0.0.1:8080"}/app/order/unpaid`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(console.log("待支付订单检查结果:",JSON.stringify(i)),200==i.statusCode&&200==i.data.code&&i.data.data){const o=i.data.data;console.log("检测到待支付订单,准备跳转:",o),e.index.navigateTo({url:`/pages/order/payment?orderId=${o.orderId}`})}else console.log("无待支付订单,直接跳转到设备详情页面, deviceNo:",a),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${a}`})}catch(n){console.error("扫码处理失败:",n),e.index.showToast({title:"扫码失败",icon:"none"})}}}};const d=e._export_sfc(a,[["render",function(o,t,a,d,i,r){return{a:n._imports_0,b:e.o(((...e)=>r.handleScan&&r.handleScan(...e)))}}],["__scopeId","data-v-8df762f3"]]);wx.createPage(d);
diff --git a/unpackage/dist/build/mp-weixin/pages/index/index.json b/unpackage/dist/build/mp-weixin/pages/index/index.json
new file mode 100644
index 0000000..6038722
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/index/index.json
@@ -0,0 +1,4 @@
+{
+ "navigationBarTitleText": "共享风扇",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/index/index.wxml b/unpackage/dist/build/mp-weixin/pages/index/index.wxml
new file mode 100644
index 0000000..bd597b9
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/index/index.wxml
@@ -0,0 +1 @@
+共享风扇让清凉随身携带扫一扫扫描设备二维码使用或归还租借时间:每次最长可租借12小时押金说明:租借需支付99元押金,归还后自动退还收费标准:2元/小时,不足1小时按1小时计算爱护提示:请勿将设备带离指定区域,保持设备清洁
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/index/index.wxss b/unpackage/dist/build/mp-weixin/pages/index/index.wxss
new file mode 100644
index 0000000..8c18dd3
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/index/index.wxss
@@ -0,0 +1 @@
+.container.data-v-8df762f3{height:87.5vh;background:#f8f8f8;padding-bottom:40rpx}.container .banner.data-v-8df762f3{padding:30rpx}.container .banner .temp-banner.data-v-8df762f3{height:300rpx;background:linear-gradient(135deg,#1976d2,#42a5f5);border-radius:30rpx;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#fff;box-shadow:0 8rpx 32rpx rgba(25,118,210,.2)}.container .banner .temp-banner .banner-text.data-v-8df762f3{font-size:56rpx;font-weight:700;margin-bottom:20rpx;position:relative;z-index:1;text-shadow:0 2rpx 4rpx rgba(0,0,0,.1)}.container .banner .temp-banner .banner-subtitle.data-v-8df762f3{font-size:32rpx;opacity:.95;position:relative;z-index:1;text-shadow:0 2rpx 4rpx rgba(0,0,0,.1)}.container .banner .temp-banner .banner-bg.data-v-8df762f3{position:absolute;right:-60rpx;bottom:-60rpx;width:300rpx;height:300rpx;background:rgba(255,255,255,.1);border-radius:50%;transform:rotate(-15deg)}.container .banner .temp-banner.data-v-8df762f3:after{content:"";position:absolute;left:-80rpx;top:-80rpx;width:240rpx;height:240rpx;background:rgba(255,255,255,.08);border-radius:50%}.container .scan-area.data-v-8df762f3{padding:20rpx 30rpx 40rpx;display:flex;justify-content:center}.container .scan-area .scan-btn.data-v-8df762f3{width:460rpx;height:200rpx;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#00c853,#69f0ae);border-radius:30rpx;box-shadow:0 8rpx 32rpx rgba(0,200,83,.2);transition:all .3s ease;position:relative;overflow:hidden}.container .scan-area .scan-btn.data-v-8df762f3:active{transform:scale(.98);box-shadow:0 4rpx 16rpx rgba(0,200,83,.15)}.container .scan-area .scan-btn.data-v-8df762f3:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(rgba(255,255,255,.1),transparent)}.container .scan-area .scan-btn .btn-content.data-v-8df762f3{display:flex;align-items:center;justify-content:center;margin-bottom:12rpx;position:relative;z-index:1}.container .scan-area .scan-btn .btn-content .btn-icon.data-v-8df762f3{width:48rpx;height:48rpx;margin-right:16rpx}.container .scan-area .scan-btn .btn-content .btn-text.data-v-8df762f3{font-size:42rpx;font-weight:600;color:#fff;text-shadow:0 2rpx 4rpx rgba(0,0,0,.1)}.container .scan-area .scan-btn .btn-desc.data-v-8df762f3{font-size:26rpx;color:rgba(255,255,255,.95);position:relative;z-index:1}.container .tips-section.data-v-8df762f3{margin:0 30rpx;background:#fff;border-radius:24rpx;box-shadow:0 8rpx 32rpx rgba(0,0,0,.05);overflow:hidden}.container .tips-section .tips-header.data-v-8df762f3{padding:30rpx;background:linear-gradient(to right,#f5f9ff,#fff);border-bottom:2rpx solid #f0f0f0}.container .tips-section .tips-header .tips-title.data-v-8df762f3{font-size:32rpx;font-weight:600;color:#333;position:relative;padding-left:24rpx}.container .tips-section .tips-header .tips-title.data-v-8df762f3:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:8rpx;height:32rpx;background:#1976d2;border-radius:4rpx}.container .tips-section .tips-list.data-v-8df762f3{padding:20rpx 30rpx}.container .tips-section .tips-list .tip-item.data-v-8df762f3{display:flex;align-items:center;margin-bottom:24rpx;padding:0 10rpx}.container .tips-section .tips-list .tip-item.data-v-8df762f3:last-child{margin-bottom:0}.container .tips-section .tips-list .tip-item .tip-dot.data-v-8df762f3{width:12rpx;height:12rpx;background:#1976d2;border-radius:50%;margin-right:16rpx;flex-shrink:0;box-shadow:0 2rpx 6rpx rgba(25,118,210,.2)}.container .tips-section .tips-list .tip-item text.data-v-8df762f3{font-size:28rpx;color:#666;line-height:1.6}
diff --git a/unpackage/dist/build/mp-weixin/pages/my/index.js b/unpackage/dist/build/mp-weixin/pages/my/index.js
new file mode 100644
index 0000000..6d4ba52
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/my/index.js
@@ -0,0 +1 @@
+"use strict";const e=require("../../common/vendor.js"),o=require("../../util/index.js"),t=require("../../common/assets.js"),n={data:()=>({userInfo:{},deposit:"0.00",tempAvatar:"",tempNickname:"",show:!1}),onShow(){this.getInfo()},methods:{async getInfo(){try{if(!e.index.getStorageSync("token"))return await o.wxLogin(),void this.getInfo();const t=await o.getUserInfo();if(console.log(t),200===t.code){const o={nickName:t.data.nickname,phone:t.data.phone,avatar:t.data.iconUrl,isAdmin:t.data.isAdmin};this.userInfo=o,e.index.setStorageSync("userInfo",o),this.deposit=t.data.balanceAmount||"0.00"}}catch(t){console.error("获取用户信息失败:",t),e.index.showToast({title:"获取用户信息失败",icon:"none"})}},navigateTo(o){e.index.navigateTo({url:o})}}};const a=e._export_sfc(n,[["render",function(o,n,a,s,i,r){return e.e({a:i.userInfo.avatar||"/static/user.png",b:i.userInfo},i.userInfo?{c:e.t(i.userInfo.nickName),d:e.t(i.userInfo.phone||"")}:{},{e:e.o(((...e)=>o.showPopup&&o.showPopup(...e))),f:e.t(i.deposit),g:e.o((e=>r.navigateTo("/pages/deposit/index"))),h:t._imports_0$1,i:e.o((e=>r.navigateTo("/pages/order/index"))),j:t._imports_1,k:e.o((e=>r.navigateTo("/pages/feedback/index"))),l:t._imports_2,m:e.o((e=>r.navigateTo("/pages/help/index")))})}],["__scopeId","data-v-b106ba06"]]);wx.createPage(a);
diff --git a/unpackage/dist/build/mp-weixin/pages/my/index.json b/unpackage/dist/build/mp-weixin/pages/my/index.json
new file mode 100644
index 0000000..3fc5110
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/my/index.json
@@ -0,0 +1,4 @@
+{
+ "navigationBarTitleText": "个人中心",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/my/index.wxml b/unpackage/dist/build/mp-weixin/pages/my/index.wxml
new file mode 100644
index 0000000..9c163e8
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/my/index.wxml
@@ -0,0 +1 @@
+{{c}}{{d}}点击登录登录后享受更多服务押金余额¥{{f}} 提现 租借记录投诉与建议帮助中心
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/my/index.wxss b/unpackage/dist/build/mp-weixin/pages/my/index.wxss
new file mode 100644
index 0000000..93c2d1c
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/my/index.wxss
@@ -0,0 +1 @@
+.my-container.data-v-b106ba06{min-height:87.5vh;background:#f8f8f8;padding-bottom:env(safe-area-inset-bottom)}.my-container .user-info.data-v-b106ba06{height:360rpx;background:linear-gradient(135deg,#1976d2,#42a5f5);position:relative;overflow:hidden}.my-container .user-info.data-v-b106ba06:before,.my-container .user-info.data-v-b106ba06:after{content:"";position:absolute;background-repeat:no-repeat;opacity:.1}.my-container .user-info.data-v-b106ba06:before{width:200rpx;height:200rpx;left:-40rpx;top:-40rpx;background-image:radial-gradient(circle,#fff 2rpx,transparent 3rpx);background-size:30rpx 30rpx;transform:rotate(30deg)}.my-container .user-info.data-v-b106ba06:after{width:300rpx;height:300rpx;right:-60rpx;bottom:-60rpx;background:radial-gradient(circle at center,rgba(255,255,255,.2) 0%,rgba(255,255,255,.2) 30%,transparent 30.5%),radial-gradient(circle at center,rgba(255,255,255,.2) 0%,rgba(255,255,255,.2) 20%,transparent 20.5%);background-size:60rpx 60rpx;background-position:0 0,30rpx 30rpx;transform:rotate(-15deg)}.my-container .user-info .floating-dots.data-v-b106ba06{position:absolute;width:100%;height:100%;top:0;left:0;pointer-events:none}.my-container .user-info .floating-dots.data-v-b106ba06:before,.my-container .user-info .floating-dots.data-v-b106ba06:after{content:"";position:absolute;width:12rpx;height:12rpx;border-radius:50%;background:rgba(255,255,255,.3);animation:float-b106ba06 3s infinite ease-in-out}.my-container .user-info .floating-dots.data-v-b106ba06:before{top:20%;right:10%;animation-delay:-2s}.my-container .user-info .floating-dots.data-v-b106ba06:after{top:50%;right:20%;width:8rpx;height:8rpx;animation-delay:-1s}.my-container .user-info .user-info-content.data-v-b106ba06{position:relative;z-index:2;padding:60rpx 40rpx;display:flex;align-items:center}.my-container .user-info .user-info-content .avatar-wrap.data-v-b106ba06{width:140rpx;height:140rpx;border-radius:70rpx;border:6rpx solid rgba(255,255,255,.3);overflow:hidden;box-shadow:0 4rpx 16rpx rgba(0,0,0,.1),0 0 0 6rpx rgba(255,255,255,.1);margin-right:40rpx;position:relative}.my-container .user-info .user-info-content .avatar-wrap.data-v-b106ba06:after{content:"";position:absolute;top:-10%;left:-10%;right:-10%;bottom:-10%;background:linear-gradient(45deg,transparent,rgba(255,255,255,.1),transparent);animation:shine-b106ba06 2s infinite}.my-container .user-info .user-info-content .avatar-wrap .avatar.data-v-b106ba06{width:100%;height:100%;background:#fff}.my-container .user-info .user-info-content .info-content.not-login .login-text.data-v-b106ba06{font-size:40rpx;color:#fff;font-weight:500;margin-bottom:12rpx;display:block}.my-container .user-info .user-info-content .info-content.not-login .login-desc.data-v-b106ba06{font-size:28rpx;color:rgba(255,255,255,.9);display:block}.my-container .user-info .user-info-content .info-content .text-group.data-v-b106ba06{display:flex;flex-direction:column;align-items:center;gap:16rpx}.my-container .user-info .user-info-content .info-content .text-group .nickname.data-v-b106ba06{font-size:42rpx;color:#fff;font-weight:600;text-shadow:0 2rpx 4rpx rgba(0,0,0,.1);letter-spacing:2rpx}.my-container .user-info .user-info-content .info-content .text-group .phone.data-v-b106ba06{font-size:30rpx;color:rgba(255,255,255,.85);font-weight:400;letter-spacing:1rpx;position:relative;padding:4rpx 24rpx;background:rgba(255,255,255,.15);border-radius:24rpx;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.my-container .user-info .wave-decoration.data-v-b106ba06{position:absolute;left:0;right:0;bottom:0;height:120rpx;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNDQwIDMyMCI+PHBhdGggZmlsbD0icmdiYSgyNTUsMjU1LDI1NSwwLjEpIiBkPSJNMCwyNjAuMjI3YzE3My42NjEsMCwzMjEuMTM3LDAsNDQyLjQyOCwwYzE4MS41MTcsMCwyODUuNjQ1LDAsMzk3LjU3MiwwQzk1Mi4zODksMjYwLjIyNywxMTQwLjI3MSwyNjAuMjI3LDE0NDAsMjYwLjIyN1YwSDBWMjYwLjIyN3oiLz48L3N2Zz4=) bottom/100% no-repeat;opacity:.8}@keyframes float-b106ba06{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-20rpx) scale(1.1)}}@keyframes shine-b106ba06{0%{transform:translate(-100%) rotate(45deg)}80%,to{transform:translate(100%) rotate(45deg)}}.my-container .balance-card.data-v-b106ba06{margin:-60rpx 30rpx 30rpx;background:#fff;border-radius:24rpx;padding:40rpx;display:flex;justify-content:space-between;align-items:center;position:relative;z-index:3;box-shadow:0 8rpx 32rpx rgba(25,118,210,.1)}.my-container .balance-card .balance-content .label.data-v-b106ba06{font-size:28rpx;color:#666;margin-bottom:12rpx;display:block}.my-container .balance-card .balance-content .amount.data-v-b106ba06{font-size:52rpx;color:#1976d2;font-weight:700}.my-container .balance-card .withdraw-btn.data-v-b106ba06{padding:20rpx 36rpx;background:linear-gradient(135deg,#1976d2,#42a5f5);color:#fff;border-radius:36rpx;font-size:30rpx;display:flex;align-items:center;box-shadow:0 4rpx 12rpx rgba(25,118,210,.2)}.my-container .balance-card .withdraw-btn.data-v-b106ba06:active{transform:scale(.98)}.my-container .balance-card .withdraw-btn .arrow.data-v-b106ba06{width:12rpx;height:12rpx;border-top:3rpx solid #fff;border-right:3rpx solid #fff;transform:rotate(45deg);margin-left:12rpx}.my-container .function-list.data-v-b106ba06{margin:0 30rpx;background:#fff;border-radius:24rpx;padding:10rpx 20rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.my-container .function-list .function-item.data-v-b106ba06{display:flex;align-items:center;justify-content:space-between;padding:32rpx 20rpx;border-bottom:1rpx solid #f5f5f5;transition:all .3s}.my-container .function-list .function-item.data-v-b106ba06:active{background:#f9f9f9}.my-container .function-list .function-item.data-v-b106ba06:last-child{border-bottom:none}.my-container .function-list .function-item .item-left.data-v-b106ba06{display:flex;align-items:center}.my-container .function-list .function-item .item-left .icon-wrap.data-v-b106ba06{width:80rpx;height:80rpx;margin-right:24rpx;display:flex;align-items:center;justify-content:center;border-radius:20rpx;background:#f5f9ff}.my-container .function-list .function-item .item-left .icon-wrap .icon-image.data-v-b106ba06{width:44rpx;height:44rpx}.my-container .function-list .function-item .item-left .title.data-v-b106ba06{font-size:32rpx;color:#333;font-weight:500}.my-container .function-list .function-item .arrow.data-v-b106ba06{width:16rpx;height:16rpx;border-top:3rpx solid #999;border-right:3rpx solid #999;transform:rotate(45deg)}.my-container .popup-content.data-v-b106ba06{background-color:#fff;border-radius:24rpx 24rpx 0 0;padding:40rpx 30rpx}.my-container .popup-content .popup-title.data-v-b106ba06{font-size:32rpx;font-weight:500;text-align:center;margin-bottom:40rpx}.my-container .popup-content .popup-body.data-v-b106ba06{display:flex;flex-direction:column;gap:30rpx}.my-container .popup-content .avatar-btn.data-v-b106ba06{height:88rpx;line-height:88rpx;background:#f5f5f5;border-radius:44rpx;font-size:28rpx;color:#333}.my-container .popup-content .avatar-btn.data-v-b106ba06:after{border:none}.my-container .popup-content .avatar-btn.data-v-b106ba06:active{opacity:.8}.my-container .popup-content .nickname-input.data-v-b106ba06{height:88rpx;background:#f5f5f5;border-radius:44rpx;padding:0 30rpx;font-size:28rpx}.my-container .popup-content .submit-btn.data-v-b106ba06{height:88rpx;line-height:88rpx;background:#1976d2;color:#fff;border-radius:44rpx;font-size:30rpx;margin-top:20rpx}.my-container .popup-content .submit-btn.data-v-b106ba06:active{opacity:.9}
diff --git a/unpackage/dist/build/mp-weixin/pages/order/index.js b/unpackage/dist/build/mp-weixin/pages/order/index.js
new file mode 100644
index 0000000..05b99a4
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/index.js
@@ -0,0 +1 @@
+"use strict";const t=require("../../common/vendor.js"),e=require("../../config/user.js"),r=require("../../constants/orderStatus.js"),s={data:()=>({currentTab:0,OrderStatusMap:r.OrderStatusMap,OrderStatusTabs:r.OrderStatusTabs,orderList:[]}),async onLoad(t){if(t&&t.orderId)try{const r=await e.queryById(t.orderId);if(200===r.code&&r.data){const t=r.data;console.log("特定订单数据:",JSON.stringify(t)),console.log("特定订单的开始时间:",t.startTime),console.log("特定订单的创建时间:",t.createTime);const e=t.startTime||t.createTime||"";console.log("特定订单最终显示的开始时间:",e);const s={orderNo:t.orderId,status:t.orderStatus,deviceId:t.deviceNo,startTime:e,endTime:t.endTime||"",amount:t.payAmount||t.actualDeviceAmount||"0.00"};this.orderList=[s,...this.orderList];const o=this.OrderStatusTabs.findIndex((e=>e.status.includes(t.orderStatus)));-1!==o&&this.switchTab(o)}}catch(r){console.error("获取订单详情失败:",r)}await this.getOrderList()},methods:{async getOrderList(r=[]){try{const t=await e.getOrderList(r);200===t.code&&t.data&&t.data.records&&(console.log("API返回的订单列表数据:",JSON.stringify(t.data.records)),this.orderList=t.data.records.map((t=>{console.log(`订单 ${t.orderId} 的开始时间:`,t.startTime),console.log(`订单 ${t.orderId} 的创建时间:`,t.createTime);const e=t.startTime||t.createTime||"";return console.log(`订单 ${t.orderId} 最终显示的开始时间:`,e),{orderNo:t.orderId,status:t.orderStatus,deviceId:t.deviceNo,startTime:e,endTime:t.endTime||"",amount:t.payAmount||t.actualDeviceAmount||"0.00"}})))}catch(s){console.error("获取订单列表失败:",s),t.index.showToast({title:"获取订单列表失败",icon:"none"})}},async switchTab(t){this.currentTab=t;const e=this.OrderStatusTabs[t].status;await this.getOrderList(e)}}};const o=t._export_sfc(s,[["render",function(e,r,s,o,a,d){return t.e({a:t.f(a.OrderStatusTabs,((e,r,s)=>({a:t.t(e.text),b:r,c:a.currentTab===r?1:"",d:t.o((t=>d.switchTab(r)),r)}))),b:t.f(a.orderList,((e,r,s)=>{var o,d;return t.e({a:t.t(e.orderNo),b:t.t(null==(o=a.OrderStatusMap[e.status])?void 0:o.text),c:t.n(null==(d=a.OrderStatusMap[e.status])?void 0:d.class),d:1===e.status},1===e.status?{e:`/pages/return/index?deviceId=${e.deviceId}&orderId=${e.orderNo}`}:{},{f:t.t(e.deviceId),g:t.t(e.startTime),h:t.t(e.endTime||"-"),i:t.t(e.amount),j:r})})),c:0===a.orderList.length},(a.orderList.length,{}))}],["__scopeId","data-v-d5ec5c8e"]]);wx.createPage(o);
diff --git a/unpackage/dist/build/mp-weixin/pages/order/index.json b/unpackage/dist/build/mp-weixin/pages/order/index.json
new file mode 100644
index 0000000..639d1d2
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/index.json
@@ -0,0 +1,4 @@
+{
+ "navigationBarTitleText": "租借记录",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/order/index.wxml b/unpackage/dist/build/mp-weixin/pages/order/index.wxml
new file mode 100644
index 0000000..d54abac
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/index.wxml
@@ -0,0 +1 @@
+{{tab.a}}共享风扇设备号:{{order.f}}开始时间:{{order.g}}结束时间:{{order.h}}¥{{order.i}}暂无订单记录
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/order/index.wxss b/unpackage/dist/build/mp-weixin/pages/order/index.wxss
new file mode 100644
index 0000000..fb957e3
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/index.wxss
@@ -0,0 +1 @@
+.order-container.data-v-d5ec5c8e{min-height:100vh;background:#f8f8f8}.order-container .tab-bar.data-v-d5ec5c8e{display:flex;background:#fff;padding:20rpx 0;position:-webkit-sticky;position:sticky;top:0;z-index:100;box-shadow:0 2rpx 10rpx rgba(0,0,0,.05)}.order-container .tab-bar .tab-item.data-v-d5ec5c8e{flex:1;text-align:center;font-size:28rpx;color:#666;position:relative;padding:20rpx 0}.order-container .tab-bar .tab-item.active.data-v-d5ec5c8e{color:#1976d2;font-weight:500}.order-container .tab-bar .tab-item.active.data-v-d5ec5c8e:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:40rpx;height:4rpx;background:#1976d2;border-radius:2rpx}.order-container .order-list.data-v-d5ec5c8e{padding:20rpx}.order-container .order-list .order-item.data-v-d5ec5c8e{background:#fff;border-radius:20rpx;margin-bottom:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.order-container .order-list .order-item .order-header.data-v-d5ec5c8e{display:flex;justify-content:space-between;align-items:center;padding-bottom:20rpx;border-bottom:1rpx solid #f5f5f5}.order-container .order-list .order-item .order-header .order-no.data-v-d5ec5c8e{font-size:26rpx;color:#666}.order-container .order-list .order-item .order-header .order-status.data-v-d5ec5c8e{font-size:26rpx}.order-container .order-list .order-item .order-header .order-status.status-waiting.data-v-d5ec5c8e{color:#ff9800}.order-container .order-list .order-item .order-header .order-status.status-progress.data-v-d5ec5c8e{color:#2196f3}.order-container .order-list .order-item .order-header .order-status.status-success.data-v-d5ec5c8e{color:#4caf50}.order-container .order-list .order-item .order-header .order-status.status-using.data-v-d5ec5c8e{color:#1976d2}.order-container .order-list .order-item .order-header .order-status.status-failed.data-v-d5ec5c8e{color:#f44336}.order-container .order-list .order-item .order-header .order-status.status-cancelled.data-v-d5ec5c8e{color:#9e9e9e}.order-container .order-list .order-item .order-header .order-status.status-finished.data-v-d5ec5c8e{color:#4caf50}.order-container .order-list .order-item .order-content.data-v-d5ec5c8e{padding-top:20rpx}.order-container .order-list .order-item .order-content .device-info.data-v-d5ec5c8e{margin-bottom:20rpx}.order-container .order-list .order-item .order-content .device-info .device-name.data-v-d5ec5c8e{font-size:32rpx;color:#333;font-weight:500;margin-right:20rpx}.order-container .order-list .order-item .order-content .device-info .device-id.data-v-d5ec5c8e{font-size:26rpx;color:#999}.order-container .order-list .order-item .order-content .time-info .time-item.data-v-d5ec5c8e{font-size:26rpx;color:#666;margin-bottom:10rpx}.order-container .order-list .order-item .order-content .time-info .time-item .label.data-v-d5ec5c8e{color:#999}.order-container .order-list .order-item .order-content .price-info.data-v-d5ec5c8e{text-align:right;margin-top:20rpx}.order-container .order-list .order-item .order-content .price-info .amount.data-v-d5ec5c8e{font-size:36rpx;color:#ff9800;font-weight:500}.order-container .empty-tip.data-v-d5ec5c8e{padding:100rpx 0;text-align:center;color:#999;font-size:28rpx}.order-container .empty-tip .empty-icon.data-v-d5ec5c8e{width:200rpx;height:200rpx;margin:0 auto 20rpx;background:#f0f0f0;border-radius:50%}
diff --git a/unpackage/dist/build/mp-weixin/pages/order/payment.js b/unpackage/dist/build/mp-weixin/pages/order/payment.js
new file mode 100644
index 0000000..efc49df
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/payment.js
@@ -0,0 +1 @@
+"use strict";const e=require("../../common/vendor.js"),t=require("../../config/user.js"),o=require("../../config/url.js"),r={data:()=>({orderId:null,orderInfo:{},packageInfo:{time:"",price:"0.00"},orderStatus:{text:"等待支付",desc:"请在15分钟内完成支付",class:"waiting"},paymentMethods:[{name:"微信支付",icon:"wechat"},{name:"支付宝",icon:"alipay"}],selectedMethod:0}),computed:{totalAmount(){return(parseFloat(this.orderInfo.deposit||99)+parseFloat(this.orderInfo.amount||this.packageInfo.price||0)).toFixed(2)}},onLoad(t){t&&t.orderId?(this.orderId=t.orderId,t.packageTime&&t.packagePrice&&(this.packageInfo={time:t.packageTime,price:t.packagePrice}),this.loadOrderInfo()):(e.index.showToast({title:"订单信息不存在",icon:"none"}),setTimeout((()=>{e.index.redirectTo({url:"/pages/index/index"})}),1500))},methods:{async loadOrderInfo(){try{e.index.showLoading({title:"加载中"});const o=await t.queryById(this.orderId);if(200!==o.code||!o.data)throw new Error("获取订单信息失败");{const e=o.data;this.orderInfo={orderNo:e.orderNo||e.orderId,deviceNo:e.deviceNo,createTime:this.formatTime(new Date(e.createTime)),phone:e.phone,deposit:"99.00",amount:e.amount||this.packageInfo.price||"0.00"},!e.packageTime&&this.packageInfo.time&&(this.orderInfo.packageTime=this.packageInfo.time,this.orderInfo.packagePrice=this.packageInfo.price)}e.index.hideLoading()}catch(o){e.index.hideLoading(),e.index.showToast({title:o.message||"获取订单信息失败",icon:"none"})}},selectMethod(e){this.selectedMethod=e},async handlePayment(){try{e.index.showLoading({title:"处理中"});const t=await e.index.request({url:`${o.URL||"http://127.0.0.1:8080"}/app/wx-payment/create/${this.orderInfo.orderNo}`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200!==t.statusCode||200!==t.data.code)throw new Error(t.data.msg||"创建支付订单失败");{const o=t.data.data;await e.index.requestPayment({...o,success:()=>{this.pollOrderStatus()},fail:e=>{throw console.error("支付失败:",e),new Error("支付失败,请重试")}})}}catch(t){e.index.hideLoading(),e.index.showToast({title:t.message||"支付失败",icon:"none"})}},async sendRentCommand(){try{e.index.showLoading({title:"处理中"});const t=await this.sendRentRequest();if(200!==t.code)throw new Error(t.msg||"租借失败");e.index.hideLoading(),e.index.showToast({title:"租借成功",icon:"success"}),setTimeout((()=>{e.index.redirectTo({url:`/pages/order/index?orderId=${this.orderId}`})}),1500)}catch(t){e.index.hideLoading(),e.index.showToast({title:t.message||"租借失败",icon:"none"})}},sendRentRequest(){return new Promise(((t,r)=>{e.index.request({url:`${o.URL}/app/device/sendRentCommand`,method:"POST",data:{orderId:this.orderId},header:{"Content-Type":"application/x-www-form-urlencoded",Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")},success(e){200===e.statusCode?t(e.data):r(new Error("请求失败"))},fail(e){r(e)}})}))},formatTime:e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")} ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}`,async pollOrderStatus(){let t=0;const r=async()=>{try{const a=await e.index.request({url:`${o.URL||"http://127.0.0.1:8080"}/app/wx-payment/status/${this.orderInfo.orderNo}`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200===a.statusCode&&200===a.data.code){if("in_used"===a.data.data.orderStatus)return e.index.showToast({title:"支付成功",icon:"success"}),void setTimeout((()=>{e.index.redirectTo({url:`/pages/order/index?orderId=${this.orderId}`})}),1500)}if(!(t<10))throw new Error("订单状态查询超时");t++,setTimeout(r,1e3)}catch(a){e.index.showToast({title:a.message||"查询订单状态失败",icon:"none"})}};r()}}};const a=e._export_sfc(r,[["render",function(t,o,r,a,n,d){return{a:e.n(n.orderStatus.class),b:e.t(n.orderStatus.text),c:e.t(n.orderStatus.desc),d:e.t(n.orderInfo.orderNo||"-"),e:e.t(n.orderInfo.deviceNo||"-"),f:e.t(n.orderInfo.createTime||"-"),g:e.t(n.orderInfo.phone||"-"),h:e.t(n.orderInfo.deposit||"99.00"),i:e.t(n.packageInfo.time),j:e.t(n.packageInfo.price),k:e.t(n.orderInfo.amount||n.packageInfo.price),l:e.t(d.totalAmount),m:e.f(n.paymentMethods,((t,o,r)=>({a:e.n(t.icon),b:e.t(t.name),c:o,d:n.selectedMethod===o?1:"",e:e.o((e=>d.selectMethod(o)),o)}))),n:e.t(d.totalAmount),o:e.o(((...e)=>d.handlePayment&&d.handlePayment(...e)))}}],["__scopeId","data-v-a18b4e4b"]]);wx.createPage(a);
diff --git a/unpackage/dist/build/mp-weixin/pages/order/payment.json b/unpackage/dist/build/mp-weixin/pages/order/payment.json
new file mode 100644
index 0000000..26bc4c5
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/payment.json
@@ -0,0 +1,6 @@
+{
+ "navigationBarTitleText": "订单支付",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/order/payment.wxml b/unpackage/dist/build/mp-weixin/pages/order/payment.wxml
new file mode 100644
index 0000000..44270c6
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/payment.wxml
@@ -0,0 +1 @@
+{{b}}{{c}}订单信息订单号{{d}}设备号{{e}}创建时间{{f}}联系电话{{g}}费用信息押金¥{{h}}套餐{{i}} (¥{{j}})租借费用¥{{k}}合计¥{{l}}支付方式{{method.b}}合计:¥{{n}}立即支付
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/order/payment.wxss b/unpackage/dist/build/mp-weixin/pages/order/payment.wxss
new file mode 100644
index 0000000..d5585c6
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/payment.wxss
@@ -0,0 +1 @@
+.payment-container.data-v-a18b4e4b{min-height:100vh;background:#f8f8f8;padding:30rpx 30rpx 180rpx;box-sizing:border-box}.payment-container .status-card.data-v-a18b4e4b{background:#fff;border-radius:24rpx;padding:40rpx 30rpx;margin-bottom:30rpx;display:flex;flex-direction:column;align-items:center;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.payment-container .status-card .status-icon.data-v-a18b4e4b{width:120rpx;height:120rpx;border-radius:50%;background:#f5f5f5;margin-bottom:20rpx}.payment-container .status-card .status-icon.waiting.data-v-a18b4e4b{background:#fff9c4}.payment-container .status-card .status-icon.success.data-v-a18b4e4b{background:#e8f5e9}.payment-container .status-card .status-icon.failed.data-v-a18b4e4b{background:#ffebee}.payment-container .status-card .status-text.data-v-a18b4e4b{font-size:36rpx;font-weight:600;color:#333;margin-bottom:10rpx}.payment-container .status-card .status-desc.data-v-a18b4e4b{font-size:28rpx;color:#999}.payment-container .order-card.data-v-a18b4e4b,.payment-container .price-card.data-v-a18b4e4b{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.payment-container .order-card .card-title.data-v-a18b4e4b,.payment-container .price-card .card-title.data-v-a18b4e4b{font-size:32rpx;font-weight:600;color:#333;margin-bottom:20rpx;position:relative;padding-left:20rpx}.payment-container .order-card .card-title.data-v-a18b4e4b:before,.payment-container .price-card .card-title.data-v-a18b4e4b:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:8rpx;height:32rpx;background:#1976d2;border-radius:4rpx}.payment-container .order-card .info-item.data-v-a18b4e4b,.payment-container .order-card .price-item.data-v-a18b4e4b,.payment-container .price-card .info-item.data-v-a18b4e4b,.payment-container .price-card .price-item.data-v-a18b4e4b{display:flex;justify-content:space-between;align-items:center;padding:20rpx 0;border-bottom:1px solid #f5f5f5}.payment-container .order-card .info-item.data-v-a18b4e4b:last-child,.payment-container .order-card .price-item.data-v-a18b4e4b:last-child,.payment-container .price-card .info-item.data-v-a18b4e4b:last-child,.payment-container .price-card .price-item.data-v-a18b4e4b:last-child{border-bottom:none}.payment-container .order-card .info-item .label.data-v-a18b4e4b,.payment-container .order-card .price-item .label.data-v-a18b4e4b,.payment-container .price-card .info-item .label.data-v-a18b4e4b,.payment-container .price-card .price-item .label.data-v-a18b4e4b{font-size:28rpx;color:#666}.payment-container .order-card .info-item .value.data-v-a18b4e4b,.payment-container .order-card .price-item .value.data-v-a18b4e4b,.payment-container .price-card .info-item .value.data-v-a18b4e4b,.payment-container .price-card .price-item .value.data-v-a18b4e4b{font-size:28rpx;color:#333}.payment-container .order-card .info-item.total.data-v-a18b4e4b,.payment-container .order-card .price-item.total.data-v-a18b4e4b,.payment-container .price-card .info-item.total.data-v-a18b4e4b,.payment-container .price-card .price-item.total.data-v-a18b4e4b{margin-top:10rpx;padding-top:30rpx;border-top:1px solid #f5f5f5}.payment-container .order-card .info-item.total .label.data-v-a18b4e4b,.payment-container .order-card .info-item.total .value.data-v-a18b4e4b,.payment-container .order-card .price-item.total .label.data-v-a18b4e4b,.payment-container .order-card .price-item.total .value.data-v-a18b4e4b,.payment-container .price-card .info-item.total .label.data-v-a18b4e4b,.payment-container .price-card .info-item.total .value.data-v-a18b4e4b,.payment-container .price-card .price-item.total .label.data-v-a18b4e4b,.payment-container .price-card .price-item.total .value.data-v-a18b4e4b{font-size:32rpx;font-weight:600;color:#333}.payment-container .order-card .info-item.total .value.data-v-a18b4e4b,.payment-container .order-card .price-item.total .value.data-v-a18b4e4b,.payment-container .price-card .info-item.total .value.data-v-a18b4e4b,.payment-container .price-card .price-item.total .value.data-v-a18b4e4b{color:#ff5722}.payment-container .payment-methods.data-v-a18b4e4b{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.payment-container .payment-methods .method-item.data-v-a18b4e4b{display:flex;align-items:center;padding:30rpx 20rpx;border-bottom:1px solid #f5f5f5;position:relative}.payment-container .payment-methods .method-item.data-v-a18b4e4b:last-child{border-bottom:none}.payment-container .payment-methods .method-item.active.data-v-a18b4e4b{background:#f5f5f5}.payment-container .payment-methods .method-item.active .method-check.data-v-a18b4e4b{background:#1976d2}.payment-container .payment-methods .method-item.active .method-check.data-v-a18b4e4b:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:12rpx;height:12rpx;background:#fff;border-radius:50%}.payment-container .payment-methods .method-item .method-icon.data-v-a18b4e4b{width:48rpx;height:48rpx;margin-right:20rpx}.payment-container .payment-methods .method-item .method-icon.wechat.data-v-a18b4e4b{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iIzA3QzE2MCIgZD0iTTkuODI3MjcyNzMsMjQgQzkuODI3MjcyNzMsMjQgOS44MjcyNzI3MywyNCA5LjgyNzI3MjczLDI0IEw5LjgyNzI3MjczLDI0IEM3LjQxNzczMTYzLDI0IDQuOTUzMTgxODIsMjMuNTMxODE4MiA0Ljk1MzE4MTgyLDIzLjUzMTgxODIgQzQuOTUzMTgxODIsMjMuNTMxODE4MiAzLDIzLjExMzYzNjQgMS41LDIyLjIyNzI3MjcgQzEuNSwyMi4yMjcyNzI3IDAuOTU0NTQ1NDU1LDIyLjA4NjM2MzYgMS4wNDMxODE4MiwyMS41NDU0NTQ1IEMxLjEzMTgxODE4LDIxLjAwNDU0NTUgMS4zNjM2MzYzNiwyMC4yNSAxLjM2MzYzNjM2LDIwLjI1IEwyLjI1LDE3LjcyNzI3MjcgQzAuNDA5MDkwOTA5LDE2LjAyMjcyNzMgMCwxNC4wNDU0NTQ1IDAsMTIuODE4MTgxOCBDMCw4LjQ1NDU0NTQ1IDQuOTA5MDkwOTEsNC45MDkwOTA5MSA5LjgyNzI3MjczLDQuOTA5MDkwOTEgQzEzLjc0NTQ1NDUsNC45MDkwOTA5MSAxNy4xODE4MTgyLDcuMTA0NTQ1NDUgMTguNTQ1NDU0NSwxMC4yMjcyNzI3IEMxOS4wOTA5MDkxLDEwLjEzMTgxODIgMTkuNjM2MzYzNiwxMC4wOTA5MDkxIDIwLjE4MTgxODIsMTAuMDkwOTA5MSBDMjQuNTQ1NDU0NSwxMC4wOTA5MDkxIDI4LjA5MDkwOTEsMTMuMTgxODE4MiAyOC4wOTA5MDkxLDE2LjkwOTA5MDkgQzI4LjA5MDkwOTEsMTguODE4MTgxOCAyNi43MjcyNzI3LDIwLjU5MDkwOTEgMjQuNzI3MjcyNywyMS43MjcyNzI3IEwyNS4zNjM2MzY0LDIzLjU5MDkwOTEgQzI1LjM2MzYzNjQsMjMuNTkwOTA5MSAyNS41LDI0LjA0NTQ1NDUgMjUuNTkwOTA5MSwyNC40MDkwOTA5IEMyNS42ODE4MTgyLDI0Ljc3MjcyNzMgMjUuMzYzNjM2NCwyNC45NTQ1NDU1IDI1LjM2MzYzNjQsMjQuOTU0NTQ1NSBDMjQuMjcyNzI3MywyNS42MzYzNjM2IDIyLjcyNzI3MjcsMjYuMDQ1NDU0NSAyMi43MjcyNzI3LDI2LjA0NTQ1NDUgQzIyLjcyNzI3MjcsMjYuMDQ1NDU0NSAyMC43MjcyNzI3LDI2LjQ1NDU0NTUgMTguNzI3MjcyNywyNi40NTQ1NDU1IEMxNi43MjcyNzI3LDI2LjQ1NDU0NTUgMTQuNzI3MjcyNywyNi4wNDU0NTQ1IDE0LjcyNzI3MjcsMjYuMDQ1NDU0NSBDMTMuNjM2MzYzNiwyNS43NzI3MjczIDEyLjU0NTQ1NDUsMjUuNDA5MDkwOSAxMS41NDU0NTQ1LDI0Ljk1NDU0NTUgQzEwLjkwOTA5MDksMjQuNjgxODE4MiAxMC4zNjM2MzY0LDI0LjM2MzYzNjQgOS44MjcyNzI3MywyNCBaIE02LjEzNjM2MzY0LDExLjMxODE4MTggQzUuMDQ1NDU0NTUsMTEuMzE4MTgxOCA0LjE4MTgxODE4LDEyLjE4MTgxODIgNC4xODE4MTgxOCwxMy4yNzI3MjczIEM0LjE4MTgxODE4LDE0LjM2MzYzNjQgNS4wNDU0NTQ1NSwxNS4yMjcyNzI3IDYuMTM2MzYzNjQsMTUuMjI3MjcyNyBDNy4yMjcyNzI3MywxNS4yMjcyNzI3IDguMDkwOTA5MDksMTQuMzYzNjM2NCA4LjA5MDkwOTA5LDEzLjI3MjcyNzMgQzguMDkwOTA5MDksMTIuMTgxODE4MiA3LjIyNzI3MjczLDExLjMxODE4MTggNi4xMzYzNjM2NCwxMS4zMTgxODE4IFogTTEzLjUsMTEuMzE4MTgxOCBDMTIuNDA5MDkwOSwxMS4zMTgxODE4IDExLjU0NTQ1NDUsMTIuMTgxODE4MiAxMS41NDU0NTQ1LDEzLjI3MjcyNzMgQzExLjU0NTQ1NDUsMTQuMzYzNjM2NCAxMi40MDkwOTA5LDE1LjIyNzI3MjcgMTMuNSwxNS4yMjcyNzI3IEMxNC41OTA5MDkxLDE1LjIyNzI3MjcgMTUuNDU0NTQ1NSwxNC4zNjM2MzY0IDE1LjQ1NDU0NTUsMTMuMjcyNzI3MyBDMTUuNDU0NTQ1NSwxMi4xODE4MTgyIDE0LjU5MDkwOTEsMTEuMzE4MTgxOCAxMy41LDExLjMxODE4MTggWiBNMjAuMTgxODE4MiwxNi41IEMxOS4wOTA5MDkxLDE2LjUgMTguMjI3MjcyNywxNy4zNjM2MzY0IDE4LjIyNzI3MjcsMTguNDU0NTQ1NSBDMTguMjI3MjcyNywxOS41NDU0NTQ1IDE5LjA5MDkwOTEsMjAuNDA5MDkwOSAyMC4xODE4MTgyLDIwLjQwOTA5MDkgQzIxLjI3MjcyNzMsMjAuNDA5MDkwOSAyMi4xMzYzNjM2LDE5LjU0NTQ1NDUgMjIuMTM2MzYzNiwxOC40NTQ1NDU1IEMyMi4xMzYzNjM2LDE3LjM2MzYzNjQgMjEuMjcyNzI3MywxNi41IDIwLjE4MTgxODIsMTYuNSBaIE0yNS41LDE2LjUgQzI0LjQwOTA5MDksMTYuNSAyMy41NDU0NTQ1LDE3LjM2MzYzNjQgMjMuNTQ1NDU0NSwxOC40NTQ1NDU1IEMyMy41NDU0NTQ1LDE5LjU0NTQ1NDUgMjQuNDA5MDkwOSwyMC40MDkwOTA5IDI1LjUsMjAuNDA5MDkwOSBDMjYuNTkwOTA5MSwyMC40MDkwOTA5IDI3LjQ1NDU0NTUsMTkuNTQ1NDU0NSAyNy40NTQ1NDU1LDE4LjQ1NDU0NTUgQzI3LjQ1NDU0NTUsMTcuMzYzNjM2NCAyNi41OTA5MDkxLDE2LjUgMjUuNSwxNi41IFoiLz48L3N2Zz4=) no-repeat center/contain}.payment-container .payment-methods .method-item .method-icon.alipay.data-v-a18b4e4b{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iIzE2NzdGRiIgZD0iTTIzLjg1MzU1MzQsMTUuMTQ2NDQ2NiBDMjQuMDQ4ODE1NSwxNS4zNDE3MDg4IDI0LjA0ODgxNTUsMTUuNjU4MjkxMiAyMy44NTM1NTM0LDE1Ljg1MzU1MzQgTDE1Ljg1MzU1MzQsMjMuODUzNTUzNCBDMTUuNjU4MjkxMiwyNC4wNDg4MTU1IDE1LjM0MTcwODgsMjQuMDQ4ODE1NSAxNS4xNDY0NDY2LDIzLjg1MzU1MzQgTDAuMTQ2NDQ2NjA5LDguODUzNTUzMzkgQy0wLjA0ODgxNTUzNjUsOC42NTgyOTEyNCAtMC4wNDg4MTU1MzY1LDguMzQxNzA4NzYgMC4xNDY0NDY2MDksOC4xNDY0NDY2MSBMOC4xNDY0NDY2MSwwLjE0NjQ0NjYwOSBDOC4zNDE3MDg3NiwtMC4wNDg4MTU1MzY1IDguNjU4MjkxMjQsLTAuMDQ4ODE1NTM2NSA4Ljg1MzU1MzM5LDAuMTQ2NDQ2NjA5IEwyMy44NTM1NTM0LDE1LjE0NjQ0NjYgWiBNMTcuMDM1NTMzOSwxNy4wMzU1MzM5IEwxOS4wMzU1MzM5LDE1LjAzNTUzMzkgTDE1LjAzNTUzMzksMTEuMDM1NTMzOSBMMTMuMDM1NTMzOSwxMy4wMzU1MzM5IEwxNy4wMzU1MzM5LDE3LjAzNTUzMzkgWiBNMTEuMDM1NTMzOSwxNS4wMzU1MzM5IEwxMy4wMzU1MzM5LDE3LjAzNTUzMzkgTDkuMDM1NTMzOTEsMjEuMDM1NTMzOSBMNy4wMzU1MzM5MSwxOS4wMzU1MzM5IEwxMS4wMzU1MzM5LDE1LjAzNTUzMzkgWiBNOS4wMzU1MzM5MSw5LjAzNTUzMzkxIEwxMS4wMzU1MzM5LDExLjAzNTUzMzkgTDcuMDM1NTMzOTEsMTUuMDM1NTMzOSBMNS4wMzU1MzM5MSwxMy4wMzU1MzM5IEw5LjAzNTUzMzkxLDkuMDM1NTMzOTEgWiBNMy4wMzU1MzM5MSwxMS4wMzU1MzM5IEw1LjAzNTUzMzkxLDEzLjAzNTUzMzkgTDMuMDM1NTMzOTEsMTUuMDM1NTMzOSBMMS4wMzU1MzM5MSwxMy4wMzU1MzM5IEwzLjAzNTUzMzkxLDExLjAzNTUzMzkgWiBNMTMuMDM1NTMzOSw3LjAzNTUzMzkxIEwxNS4wMzU1MzM5LDkuMDM1NTMzOTEgTDExLjAzNTUzMzksMTMuMDM1NTMzOSBMOS4wMzU1MzM5MSwxMS4wMzU1MzM5IEwxMy4wMzU1MzM5LDcuMDM1NTMzOTEgWiBNMTcuMDM1NTMzOSwzLjAzNTUzMzkxIEwxOS4wMzU1MzM5LDUuMDM1NTMzOTEgTDE1LjAzNTUzMzksOS4wMzU1MzM5MSBMMTMuMDM1NTMzOSw3LjAzNTUzMzkxIEwxNy4wMzU1MzM5LDMuMDM1NTMzOTEgWiBNMjEuMDM1NTMzOSw3LjAzNTUzMzkxIEwyMy4wMzU1MzM5LDkuMDM1NTMzOTEgTDE5LjAzNTUzMzksMTMuMDM1NTMzOSBMMTcuMDM1NTMzOSwxMS4wMzU1MzM5IEwyMS4wMzU1MzM5LDcuMDM1NTMzOTEgWiIvPjwvc3ZnPg==) no-repeat center/contain}.payment-container .payment-methods .method-item .method-name.data-v-a18b4e4b{flex:1;font-size:28rpx;color:#333}.payment-container .payment-methods .method-item .method-check.data-v-a18b4e4b{width:32rpx;height:32rpx;border-radius:50%;border:2rpx solid #ddd;position:relative}.payment-container .bottom-bar.data-v-a18b4e4b{position:fixed;left:0;right:0;bottom:0;background:#fff;padding:20rpx 30rpx;padding-bottom:calc(20rpx + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;box-shadow:0 -4rpx 16rpx rgba(0,0,0,.04)}.payment-container .bottom-bar .total-amount.data-v-a18b4e4b{font-size:28rpx;color:#666}.payment-container .bottom-bar .total-amount .amount.data-v-a18b4e4b{font-size:36rpx;font-weight:600;color:#ff5722;margin-left:10rpx}.payment-container .bottom-bar .pay-btn.data-v-a18b4e4b{background:#1976d2;color:#fff;font-size:32rpx;font-weight:600;padding:20rpx 60rpx;border-radius:100rpx;border:none}.payment-container .bottom-bar .pay-btn.data-v-a18b4e4b:active{opacity:.9}
diff --git a/unpackage/dist/build/mp-weixin/pages/order/return-success.js b/unpackage/dist/build/mp-weixin/pages/order/return-success.js
new file mode 100644
index 0000000..2e20c94
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/return-success.js
@@ -0,0 +1 @@
+"use strict";const e=require("../../common/vendor.js"),t=require("../../config/user.js"),r=require("../../config/url.js"),o={data:()=>({orderId:"",orderInfo:{orderNo:"",deviceNo:"",usedTime:"",currentFee:"0.00",deposit:"99.00",refundAmount:"99.00",endTime:"",withdrawStatus:"waiting",isWithdrawn:!1}}),onLoad(t){t&&t.orderId?(this.orderId=t.orderId,this.loadOrderInfo()):(e.index.showToast({title:"订单ID不能为空",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500))},methods:{getWithdrawStatusText(){return{waiting:"待申请",processing:"处理中",success:"已退款",failed:"退款失败"}[this.orderInfo.withdrawStatus]||"待申请"},async loadOrderInfo(){try{e.index.showLoading({title:"加载中"});const o=await t.queryById(this.orderId);if(200!==o.code||!o.data)throw new Error(o.msg||"获取订单信息失败");{const e=o.data;let t=60,d=0,n=0,i="0.00",a="0.00";if(e.remark)try{const r=e.remark,o=r.match(/使用时长:(\d+)分钟/);o&&o[1]&&(n=parseInt(o[1]));const s=r.match(/套餐时长:(\d+)分钟/);s&&s[1]&&(t=parseInt(s[1]));const c=r.match(/超出时长:(\d+)分钟/);c&&c[1]&&(d=parseInt(c[1]));const h=r.match(/套餐费用:([\d.]+)元/);h&&h[1]&&(i=h[1]);const u=r.match(/超时费用:([\d.]+)元/);u&&u[1]&&(a=u[1]),console.log("从remark解析到的信息:",{usedMinutes:n,packageMinutes:t,extraMinutes:d,packagePrice:i,extraFee:a})}catch(r){console.error("解析remark字段失败:",r)}this.orderInfo={orderNo:e.orderNo||"",deviceNo:e.deviceNo||"",usedTime:n+"分钟",packageTime:t+"分钟",extraTime:d+"分钟",packagePrice:i,extraFee:a,currentFee:e.actualDeviceAmount||"0.00",deposit:e.depositAmount||"99.00",refundAmount:e.residueAmount||"99.00",endTime:e.endTime||"",withdrawStatus:e.withdrawStatus||"waiting",isWithdrawn:"success"===e.withdrawStatus}}}catch(o){console.error("加载订单信息错误:",o),e.index.showToast({title:o.message||"获取订单信息失败",icon:"none"})}finally{e.index.hideLoading()}},async handleWithdraw(){try{e.index.showLoading({title:"处理中"});const t=await e.index.request({url:`${r.URL||"http://127.0.0.1:8080"}/app/withdraw/add/${this.orderInfo.orderNo}`,method:"GET",header:{"Content-Type":"application/json",Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200!==t.statusCode||200!==t.data.code)throw new Error(t.data.msg||"退款申请失败");e.index.showToast({title:"退款申请成功",icon:"success"}),this.orderInfo.withdrawStatus="processing",this.orderInfo.isWithdrawn=!0,setTimeout((()=>{this.loadOrderInfo()}),1500)}catch(t){console.error("退款申请错误:",t),e.index.showToast({title:t.message||"退款申请失败",icon:"none"})}finally{e.index.hideLoading()}},goToHome(){e.index.reLaunch({url:"/pages/index/index"})}}};const d=e._export_sfc(o,[["render",function(t,r,o,d,n,i){return e.e({a:e.t(n.orderInfo.orderNo||"-"),b:e.t(n.orderInfo.deviceNo||"-"),c:e.t(n.orderInfo.usedTime||"-"),d:e.t(n.orderInfo.packageTime||"1小时"),e:e.t(n.orderInfo.extraTime||"0分钟"),f:e.t(n.orderInfo.endTime||"-"),g:e.t(n.orderInfo.packagePrice||"0.00"),h:e.t(n.orderInfo.extraFee||"0.00"),i:e.t(n.orderInfo.currentFee||"0.00"),j:e.t(n.orderInfo.deposit||"99.00"),k:e.t(n.orderInfo.refundAmount||"99.00"),l:e.t(i.getWithdrawStatusText()),m:e.n(n.orderInfo.withdrawStatus||"waiting"),n:!n.orderInfo.isWithdrawn},n.orderInfo.isWithdrawn?{}:{o:e.o(((...e)=>i.handleWithdraw&&i.handleWithdraw(...e)))},{p:e.o(((...e)=>i.goToHome&&i.goToHome(...e)))})}],["__scopeId","data-v-845b5869"]]);wx.createPage(d);
diff --git a/unpackage/dist/build/mp-weixin/pages/order/return-success.json b/unpackage/dist/build/mp-weixin/pages/order/return-success.json
new file mode 100644
index 0000000..0bd5924
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/return-success.json
@@ -0,0 +1,6 @@
+{
+ "navigationBarTitleText": "归还成功",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/order/return-success.wxml b/unpackage/dist/build/mp-weixin/pages/order/return-success.wxml
new file mode 100644
index 0000000..d25344d
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/return-success.wxml
@@ -0,0 +1 @@
+归还成功您的充电宝已归还,费用已从押金中扣除订单信息订单号{{a}}设备号{{b}}使用时长{{c}}套餐时长{{d}}超出时长{{e}}归还时间{{f}}费用信息套餐费用¥{{g}}超时费用¥{{h}}总费用¥{{i}}押金¥{{j}}退还金额¥{{k}}退还状态{{l}}退款说明1. 押金剩余金额需要您手动申请提现2. 提现申请提交后将在1-3个工作日内退还到原支付账户3. 如有疑问,请联系客服申请退款返回首页
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/order/return-success.wxss b/unpackage/dist/build/mp-weixin/pages/order/return-success.wxss
new file mode 100644
index 0000000..c69a0a1
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/return-success.wxss
@@ -0,0 +1 @@
+.success-container.data-v-845b5869{padding:20px;background-color:#f8f8f8;min-height:100vh}.status-card.data-v-845b5869{background-color:#fff;border-radius:12px;padding:30px;text-align:center;margin-bottom:20px;box-shadow:0 2px 8px rgba(0,0,0,.04)}.status-card .status-icon.data-v-845b5869{width:60px;height:60px;margin:0 auto 16px}.status-card .status-icon.success.data-v-845b5869{background-color:#07c160;border-radius:50%;position:relative}.status-card .status-icon.success.data-v-845b5869:after{content:"";position:absolute;left:50%;top:50%;width:30px;height:20px;border:3px solid #fff;border-top:none;border-right:none;transform-origin:center;transform:translate(-50%,-70%) rotate(-45deg)}.status-card .status-text.data-v-845b5869{font-size:24px;font-weight:700;color:#07c160;margin-bottom:8px}.status-card .status-desc.data-v-845b5869{font-size:14px;color:#666}.order-card.data-v-845b5869,.refund-card.data-v-845b5869{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px;box-shadow:0 2px 8px rgba(0,0,0,.04)}.order-card .card-title.data-v-845b5869,.refund-card .card-title.data-v-845b5869{font-size:16px;font-weight:700;margin-bottom:16px;color:#333;border-bottom:1px solid #f0f0f0;padding-bottom:10px}.order-card .info-item.data-v-845b5869,.refund-card .info-item.data-v-845b5869{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.order-card .info-item.data-v-845b5869:last-child,.refund-card .info-item.data-v-845b5869:last-child{margin-bottom:0}.order-card .info-item .label.data-v-845b5869,.refund-card .info-item .label.data-v-845b5869{color:#666;font-size:14px}.order-card .info-item .value.data-v-845b5869,.refund-card .info-item .value.data-v-845b5869{color:#333;font-size:14px}.order-card .info-item .value.highlight.data-v-845b5869,.refund-card .info-item .value.highlight.data-v-845b5869{color:#ff6b00;font-weight:700;font-size:16px}.order-card .info-item .value.success.data-v-845b5869,.refund-card .info-item .value.success.data-v-845b5869{color:#07c160}.button-group.data-v-845b5869{margin-top:40rpx;display:flex;justify-content:space-between;gap:20rpx}.button-group .primary-btn.data-v-845b5869,.button-group .secondary-btn.data-v-845b5869{flex:1;height:88rpx;line-height:88rpx;border-radius:44rpx;text-align:center;font-size:32rpx}.button-group .primary-btn.data-v-845b5869{background:#07c160;color:#fff}.button-group .primary-btn.data-v-845b5869:active{opacity:.8}.button-group .secondary-btn.data-v-845b5869{background:#f0f0f0;color:#333}.button-group .secondary-btn.data-v-845b5869:active{opacity:.8}.notice-card.data-v-845b5869{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px;box-shadow:0 2px 8px rgba(0,0,0,.04)}.notice-card .card-title.data-v-845b5869{font-size:16px;font-weight:700;margin-bottom:16px;color:#333;border-bottom:1px solid #f0f0f0;padding-bottom:10px}.notice-card .notice-content.data-v-845b5869{text-align:left;color:#666;font-size:14px}.waiting.data-v-845b5869{color:#fa0;font-weight:700}
diff --git a/unpackage/dist/build/mp-weixin/pages/order/success.js b/unpackage/dist/build/mp-weixin/pages/order/success.js
new file mode 100644
index 0000000..538dad0
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/success.js
@@ -0,0 +1 @@
+"use strict";const e=require("../../common/vendor.js"),o=require("../../config/user.js"),r={data:()=>({orderId:"",orderInfo:{},isLoading:!0,deviceMessage:"正在准备您的设备,请稍候...",hasTriggeredDevice:!1}),onLoad(o){o&&o.orderId?(this.orderId=o.orderId,this.loadOrderInfo(),e.index.$once("orderSuccess:"+this.orderId,(()=>{console.log("已经触发过弹出逻辑,不再重复触发"),this.hasTriggeredDevice=!0}))):(e.index.showToast({title:"订单信息不存在",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500))},methods:{async loadOrderInfo(){try{e.index.showLoading({title:"加载中"});const r=await o.queryById(this.orderId);if(200!==r.code||!r.data)throw new Error("获取订单信息失败");{const o=r.data;this.orderInfo={orderNo:o.orderNo||o.orderId,deviceNo:o.deviceNo,amount:o.payAmount||o.amount,payTime:o.payTime||this.formatTime(new Date)},"IN_USED"===o.orderStatus?(this.deviceMessage="设备已弹出,请取走您的充电宝",this.isLoading=!1,this.hasTriggeredDevice||(e.index.$emit("orderSuccess:"+this.orderId),this.hasTriggeredDevice=!0)):this.triggerDeviceEject()}e.index.hideLoading()}catch(r){e.index.hideLoading(),e.index.showToast({title:r.message||"获取订单信息失败",icon:"none"})}},async triggerDeviceEject(){if(this.hasTriggeredDevice)console.log("已经触发过弹出充电宝,不重复触发");else{this.hasTriggeredDevice=!0,e.index.$emit("orderSuccess:"+this.orderId),this.isLoading=!0,this.deviceMessage="正在准备您的设备,请稍候...";try{console.log(`准备触发弹出充电宝,orderId: ${this.orderId}`);const r=await o.confirmPaymentAndRent(this.orderId);if(console.log("确认支付并弹出充电宝结果:",JSON.stringify(r)),!r||200!==r.code)throw new Error(r&&r.msg||"弹出充电宝失败");this.deviceMessage="设备已弹出,请取走您的充电宝",e.index.showToast({title:"充电宝已弹出",icon:"success"})}catch(r){console.error("弹出充电宝错误:",r),this.deviceMessage="弹出设备失败,请联系客服",e.index.showToast({title:r.message||"弹出充电宝失败,请联系客服",icon:"none"})}finally{this.isLoading=!1}}},formatTime:e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")} ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}`,goToHome(){e.index.switchTab({url:"/pages/index/index"})},goToOrderList(){e.index.redirectTo({url:"/pages/order/index"})}}};const i=e._export_sfc(r,[["render",function(o,r,i,t,d,s){return e.e({a:e.t(d.orderInfo.orderNo||"-"),b:e.t(d.orderInfo.deviceNo||"-"),c:e.t(d.orderInfo.amount||"0.00"),d:e.t(d.orderInfo.payTime||"-"),e:e.t(d.deviceMessage),f:d.isLoading},(d.isLoading,{}),{g:e.o(((...e)=>s.goToHome&&s.goToHome(...e))),h:e.o(((...e)=>s.goToOrderList&&s.goToOrderList(...e)))})}],["__scopeId","data-v-174f45e8"]]);wx.createPage(i);
diff --git a/unpackage/dist/build/mp-weixin/pages/order/success.json b/unpackage/dist/build/mp-weixin/pages/order/success.json
new file mode 100644
index 0000000..0fafd7e
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/success.json
@@ -0,0 +1,6 @@
+{
+ "navigationBarTitleText": "支付成功",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/order/success.wxml b/unpackage/dist/build/mp-weixin/pages/order/success.wxml
new file mode 100644
index 0000000..d4d0f99
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/success.wxml
@@ -0,0 +1 @@
+支付成功您的订单已支付成功订单信息订单号{{a}}设备号{{b}}支付金额¥{{c}}支付时间{{d}}{{e}}返回首页查看订单
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/order/success.wxss b/unpackage/dist/build/mp-weixin/pages/order/success.wxss
new file mode 100644
index 0000000..c38226b
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/order/success.wxss
@@ -0,0 +1 @@
+.success-container.data-v-174f45e8{padding:20px;background-color:#f5f5f5;min-height:100vh}.status-card.data-v-174f45e8{background-color:#fff;border-radius:12px;padding:30px;text-align:center;margin-bottom:20px}.status-card .status-icon.data-v-174f45e8{width:60px;height:60px;margin:0 auto 16px;background-color:#07c160;border-radius:50%;position:relative}.status-card .status-icon.data-v-174f45e8:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:30px;height:20px;border:3px solid #fff;border-top:none;border-right:none;transform-origin:center;transform:translate(-50%,-70%) rotate(-45deg)}.status-card .status-text.data-v-174f45e8{font-size:24px;font-weight:700;color:#07c160;margin-bottom:8px}.status-card .status-desc.data-v-174f45e8{font-size:14px;color:#666}.order-card.data-v-174f45e8{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px}.order-card .card-title.data-v-174f45e8{font-size:16px;font-weight:700;margin-bottom:16px;color:#333}.order-card .info-item.data-v-174f45e8{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.order-card .info-item .label.data-v-174f45e8{color:#666;font-size:14px}.order-card .info-item .value.data-v-174f45e8{color:#333;font-size:14px}.device-status.data-v-174f45e8{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px;text-align:center}.device-status .status-message.data-v-174f45e8{font-size:16px;color:#333;margin-bottom:12px}.device-status .loading-animation.data-v-174f45e8{display:flex;justify-content:center;align-items:center;height:40px}.device-status .loading-animation .loading-circle.data-v-174f45e8{width:30px;height:30px;border-radius:50%;border:3px solid #f0f0f0;border-top-color:#07c160;animation:spin-174f45e8 1s linear infinite}@keyframes spin-174f45e8{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.button-group.data-v-174f45e8{margin-top:30px;display:flex;flex-direction:column;gap:16px}.button-group .primary-btn.data-v-174f45e8{background-color:#07c160;color:#fff;border:none;border-radius:24px;padding:12px;font-size:16px}.button-group .primary-btn.data-v-174f45e8:active{opacity:.8}.button-group .secondary-btn.data-v-174f45e8{background-color:#fff;color:#07c160;border:1px solid #07c160;border-radius:24px;padding:12px;font-size:16px}.button-group .secondary-btn.data-v-174f45e8:active{background-color:#f5f5f5}
diff --git a/unpackage/dist/build/mp-weixin/pages/return/index.js b/unpackage/dist/build/mp-weixin/pages/return/index.js
new file mode 100644
index 0000000..d91430e
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/return/index.js
@@ -0,0 +1 @@
+"use strict";const e=require("../../common/vendor.js"),t=require("../../config/user.js"),r=require("../../config/url.js"),o={data:()=>({deviceId:"",orderInfo:{orderId:"",startTime:"",_rawStartTime:"",usedTime:"0分钟",currentFee:"0.00",orderStatus:"in_used"},timer:null,statusCheckTimer:null,maxStatusChecks:30,currentStatusChecks:0,statusCheckInterval:5e3}),onLoad(t){if(console.log("Return page loaded with options:",JSON.stringify(t)),this.orderInfo.orderId=t.orderId||"",this.deviceId=t.deviceNo||t.deviceId||"",console.log(`初始化参数: orderId=${this.orderInfo.orderId}, deviceId=${this.deviceId}`),!this.orderInfo.orderId&&this.deviceId)this.getOrderByDevice();else if(this.orderInfo.orderId){this.getOrderDetails(),this.startTimer(),this.startStatusCheckTimer(),e.index.setStorageSync("activeOrderId",this.orderInfo.orderId);try{this.$orderMonitor?(this.$orderMonitor.addOrder({orderId:this.orderInfo.orderId}),console.log("订单已添加到监控队列:",this.orderInfo.orderId)):console.warn("$orderMonitor 未定义,无法添加订单到监控队列")}catch(r){console.error("添加订单到监控队列失败:",r)}}else e.index.showToast({title:"缺少订单信息",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500);e.index.$on("orderCompleted",this.handleOrderCompleted)},onUnload(){this.clearTimer(),this.clearStatusCheckTimer(),e.index.$off("orderCompleted",this.handleOrderCompleted)},methods:{handleOrderCompleted(e){console.log("收到订单完成事件:",e),e.orderId!==this.orderInfo.orderId&&e.orderNo!==this.orderInfo.orderNo||this.showReturnSuccessModal(e)},showReturnSuccessModal(t){this.clearTimer(),this.clearStatusCheckTimer(),e.index.showModal({title:"归还成功",content:"充电宝已归还成功,剩余押金将退还到您的账户",confirmText:"查看详情",success:r=>{r.confirm?e.index.redirectTo({url:`/pages/order/return-success?orderId=${t.orderId||this.orderInfo.orderId}`}):e.index.reLaunch({url:"/pages/index/index"})}})},getOrderStatusText(){return{waiting_for_payment:"待支付",payment_in_progress:"支付中",payment_successful:"支付成功",in_used:"使用中",payment_failed:"支付失败",order_cancelled:"订单取消",used_done:"订单完成",used_down:"订单完成"}[this.orderInfo.orderStatus]||"使用中"},async getOrderDetails(){try{if(e.index.showLoading({title:"加载中"}),!this.orderInfo.orderId)throw new Error("订单ID不能为空");console.log("请求订单详情, orderId:",this.orderInfo.orderId);const r=await t.queryById(this.orderInfo.orderId);if(console.log("订单详情结果:",JSON.stringify(r)),200!==r.code||!r.data)throw new Error(r.msg||"获取订单详情失败");{const t=r.data;if(console.log("订单原始数据:",t),console.log("开始时间字段:",t.startTime,typeof t.startTime),t.orderStatus&&(this.orderInfo.orderStatus=t.orderStatus),t.orderStatus&&("used_done"===t.orderStatus||"used_down"===t.orderStatus))return e.index.$emit("orderCompleted",t),void this.showReturnSuccessModal(t);this.updateOrderInfo(t),console.log("更新后的开始时间:",this.orderInfo.startTime)}}catch(r){console.error("获取订单详情错误:",r),e.index.showToast({title:r.message||"获取订单信息失败",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500)}finally{e.index.hideLoading()}},formatTime:e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")} ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}`,updateOrderInfo(e){if(console.log("更新订单信息:",JSON.stringify(e)),this.orderInfo.usedTime=e.usedTime||"0分钟",this.orderInfo.currentFee=e.currentFee||e.actualDeviceAmount||e.payAmount||"0.00",e.orderStatus&&(this.orderInfo.orderStatus=e.orderStatus),this.orderInfo._rawStartTime=e.startTime,e.startTime)try{console.log("API返回的开始时间:",e.startTime),this.orderInfo.startTime=e.startTime}catch(t){console.error("更新开始时间错误:",t),this.orderInfo.startTime="未知"}else console.warn("API返回的订单数据中没有startTime字段"),e.createTime?(console.log("使用createTime作为备选:",e.createTime),this.orderInfo.startTime=e.createTime):this.orderInfo.startTime="未知";e.deviceNo&&!this.deviceId&&(this.deviceId=e.deviceNo)},startTimer(){this.timer=setInterval((()=>{this.getOrderDetails()}),6e4)},clearTimer(){this.timer&&(clearInterval(this.timer),this.timer=null)},clearStatusCheckTimer(){this.statusCheckTimer&&(clearInterval(this.statusCheckTimer),this.statusCheckTimer=null)},startStatusCheckTimer(){this.currentStatusChecks=0,this.clearStatusCheckTimer(),this.statusCheckTimer=setInterval((()=>{this.currentStatusChecks++,this.checkReturnStatus(),this.currentStatusChecks>=this.maxStatusChecks&&(this.clearStatusCheckTimer(),e.index.showToast({title:"请手动刷新查看归还状态",icon:"none",duration:3e3}))}),this.statusCheckInterval)},async getOrderByDevice(){try{if(e.index.showLoading({title:"加载中"}),!this.deviceId)throw new Error("设备号不能为空");const t=await e.index.request({url:`${r.URL||"http://127.0.0.1:8080"}/app/order/inUse`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(console.log("通过设备号查询订单结果:",JSON.stringify(t)),200!==t.statusCode||200!==t.data.code||!t.data.data)throw new Error("未找到使用中的订单");{const e=t.data.data;console.log("使用中的订单:",e),this.orderInfo.orderId=e.orderId,e.orderStatus&&(this.orderInfo.orderStatus=e.orderStatus),e.startTime&&(console.log("inUse API返回的开始时间:",e.startTime),this.orderInfo.startTime=e.startTime),this.getOrderDetails(),this.startTimer(),this.startStatusCheckTimer()}}catch(t){console.error("通过设备号查询订单失败:",t),e.index.showToast({title:t.message||"获取订单信息失败",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500)}finally{e.index.hideLoading()}},async checkReturnStatus(){try{await this.getOrderDetails()}catch(e){console.error("检查归还状态失败:",e)}},goToHome(){e.index.reLaunch({url:"/pages/index/index"})}}};const s=e._export_sfc(o,[["render",function(t,r,o,s,i,d){return e.e({a:e.t(d.getOrderStatusText()),b:e.t(i.orderInfo.orderId),c:e.t(i.deviceId),d:e.t(i.orderInfo.startTime),e:e.t(i.orderInfo.usedTime),f:e.t(i.orderInfo.currentFee)},{},{j:e.o(((...e)=>d.checkReturnStatus&&d.checkReturnStatus(...e))),k:e.o(((...e)=>d.goToHome&&d.goToHome(...e)))})}],["__scopeId","data-v-44a2261b"]]);wx.createPage(s);
diff --git a/unpackage/dist/build/mp-weixin/pages/return/index.json b/unpackage/dist/build/mp-weixin/pages/return/index.json
new file mode 100644
index 0000000..91c1ef2
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/return/index.json
@@ -0,0 +1,6 @@
+{
+ "navigationBarTitleText": "归还设备",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/return/index.wxml b/unpackage/dist/build/mp-weixin/pages/return/index.wxml
new file mode 100644
index 0000000..8808f6d
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/return/index.wxml
@@ -0,0 +1 @@
+共享风扇设备号:{{c}}开始时间{{d}}已使用时长{{e}}当前费用¥{{f}}调试信息原始开始时间: {{g}}处理后开始时间: {{h}}订单状态: {{i}}归还说明请确保设备完好无损将充电宝插入原位置或空闲插口系统将自动检测归还并处理退款归还成功后将自动跳转到成功页面刷新状态返回首页
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/return/index.wxss b/unpackage/dist/build/mp-weixin/pages/return/index.wxss
new file mode 100644
index 0000000..6a6ae6e
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/return/index.wxss
@@ -0,0 +1 @@
+.return-container.data-v-44a2261b{min-height:100vh;background:#f8f8f8;padding:30rpx 30rpx 180rpx;box-sizing:border-box}.return-container .order-card.data-v-44a2261b{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.return-container .order-card .order-header.data-v-44a2261b{display:flex;justify-content:space-between;align-items:center;margin-bottom:30rpx}.return-container .order-card .order-header .title.data-v-44a2261b{font-size:32rpx;font-weight:700;color:#333}.return-container .order-card .order-header .order-no.data-v-44a2261b{font-size:24rpx;color:#999}.return-container .order-card .device-info.data-v-44a2261b{margin-bottom:30rpx}.return-container .order-card .device-info .device-name.data-v-44a2261b{font-size:28rpx;color:#333;display:block;margin-bottom:10rpx}.return-container .order-card .device-info .device-id.data-v-44a2261b{font-size:24rpx;color:#666}.return-container .order-card .time-info.data-v-44a2261b{background:#f9f9f9;border-radius:16rpx;padding:20rpx}.return-container .order-card .time-info .time-item.data-v-44a2261b{display:flex;justify-content:space-between;align-items:center;margin-bottom:16rpx}.return-container .order-card .time-info .time-item.data-v-44a2261b:last-child{margin-bottom:0}.return-container .order-card .time-info .time-item .label.data-v-44a2261b{font-size:26rpx;color:#666}.return-container .order-card .time-info .time-item .value.data-v-44a2261b{font-size:26rpx;color:#333}.return-container .order-card .time-info .time-item .value.highlight.data-v-44a2261b{color:#ff6b00;font-weight:700}.return-container .notice-card.data-v-44a2261b{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.return-container .notice-card .notice-title.data-v-44a2261b{font-size:28rpx;font-weight:700;color:#333;margin-bottom:20rpx}.return-container .notice-card .notice-list .notice-item.data-v-44a2261b{display:flex;align-items:flex-start;margin-bottom:16rpx}.return-container .notice-card .notice-list .notice-item.data-v-44a2261b:last-child{margin-bottom:0}.return-container .notice-card .notice-list .notice-item .dot.data-v-44a2261b{width:12rpx;height:12rpx;background:#07c160;border-radius:50%;margin-top:10rpx;margin-right:16rpx;flex-shrink:0}.return-container .notice-card .notice-list .notice-item text.data-v-44a2261b{font-size:26rpx;color:#666;line-height:1.5}.return-container .bottom-bar.data-v-44a2261b{position:fixed;left:0;right:0;bottom:0;padding:30rpx;background:#fff;box-shadow:0 -4rpx 16rpx rgba(0,0,0,.04);z-index:10;display:flex;justify-content:space-between;gap:20rpx}.return-container .bottom-bar .primary-btn.data-v-44a2261b,.return-container .bottom-bar .secondary-btn.data-v-44a2261b{height:88rpx;line-height:88rpx;font-size:32rpx;border-radius:44rpx;text-align:center;flex:1}.return-container .bottom-bar .primary-btn.data-v-44a2261b{background:#07c160;color:#fff}.return-container .bottom-bar .primary-btn.data-v-44a2261b:active{opacity:.8}.return-container .bottom-bar .secondary-btn.data-v-44a2261b{background:#f0f0f0;color:#333}.return-container .bottom-bar .secondary-btn.data-v-44a2261b:active{opacity:.8}
diff --git a/unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.js b/unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.js
new file mode 100644
index 0000000..9a76f29
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.js
@@ -0,0 +1 @@
+"use strict";const e=require("../../../common/vendor.js"),i=require("../../../util/index.js"),o=require("../../../config/user.js"),d={data:()=>({}),async onLoad(d){try{if(e.index.showLoading({title:"加载中..."}),e.index.getStorageSync("token")||await i.wxLogin(),!d.deviceNo)return e.index.hideLoading(),void e.index.showToast({title:"设备编号不能为空",icon:"none"});const n=await o.queryHasOrder(d.deviceNo);e.index.hideLoading(),n.data&&n.data.data&&n.data.data.length>0?e.index.redirectTo({url:`/pages/device/return?deviceNo=${d.deviceNo}`}):e.index.redirectTo({url:`/pages/device/detail?deviceNo=${d.deviceNo}`})}catch(n){e.index.hideLoading(),e.index.showToast({title:"页面加载失败,请重试",icon:"none"}),console.error("bagCheck onLoad error:",n)}},methods:{}};const n=e._export_sfc(d,[["render",function(e,i,o,d,n,t){return{}}]]);wx.createPage(n);
diff --git a/unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.json b/unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.json
new file mode 100644
index 0000000..6038722
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.json
@@ -0,0 +1,4 @@
+{
+ "navigationBarTitleText": "共享风扇",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.wxml b/unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.wxml
new file mode 100644
index 0000000..8dcff42
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.wxml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.wxss b/unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/unpackage/dist/build/mp-weixin/project.config.json b/unpackage/dist/build/mp-weixin/project.config.json
new file mode 100644
index 0000000..3d5d05e
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/project.config.json
@@ -0,0 +1,36 @@
+{
+ "description": "项目配置文件。",
+ "packOptions": {
+ "ignore": []
+ },
+ "setting": {
+ "urlCheck": false,
+ "es6": true,
+ "postcss": false,
+ "minified": false,
+ "newFeature": true,
+ "bigPackageSizeSupport": true
+ },
+ "compileType": "miniprogram",
+ "libVersion": "",
+ "appid": "wxe752f45e7f7aa271",
+ "projectname": "fs",
+ "condition": {
+ "search": {
+ "current": -1,
+ "list": []
+ },
+ "conversation": {
+ "current": -1,
+ "list": []
+ },
+ "game": {
+ "current": -1,
+ "list": []
+ },
+ "miniprogram": {
+ "current": -1,
+ "list": []
+ }
+ }
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/static/complaint.png b/unpackage/dist/build/mp-weixin/static/complaint.png
new file mode 100644
index 0000000..b4343a9
Binary files /dev/null and b/unpackage/dist/build/mp-weixin/static/complaint.png differ
diff --git a/unpackage/dist/build/mp-weixin/static/head.png b/unpackage/dist/build/mp-weixin/static/head.png
new file mode 100644
index 0000000..4ebeb16
Binary files /dev/null and b/unpackage/dist/build/mp-weixin/static/head.png differ
diff --git a/unpackage/dist/build/mp-weixin/static/hlep.png b/unpackage/dist/build/mp-weixin/static/hlep.png
new file mode 100644
index 0000000..4d9475a
Binary files /dev/null and b/unpackage/dist/build/mp-weixin/static/hlep.png differ
diff --git a/unpackage/dist/build/mp-weixin/static/home-active.png b/unpackage/dist/build/mp-weixin/static/home-active.png
new file mode 100644
index 0000000..2b9c61a
Binary files /dev/null and b/unpackage/dist/build/mp-weixin/static/home-active.png differ
diff --git a/unpackage/dist/build/mp-weixin/static/home.png b/unpackage/dist/build/mp-weixin/static/home.png
new file mode 100644
index 0000000..1cf632f
Binary files /dev/null and b/unpackage/dist/build/mp-weixin/static/home.png differ
diff --git a/unpackage/dist/build/mp-weixin/static/images/alipay.svg b/unpackage/dist/build/mp-weixin/static/images/alipay.svg
new file mode 100644
index 0000000..efe8ea0
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/static/images/alipay.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/static/images/wechat.svg b/unpackage/dist/build/mp-weixin/static/images/wechat.svg
new file mode 100644
index 0000000..3f623e1
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/static/images/wechat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/static/jl.png b/unpackage/dist/build/mp-weixin/static/jl.png
new file mode 100644
index 0000000..f6083bb
Binary files /dev/null and b/unpackage/dist/build/mp-weixin/static/jl.png differ
diff --git a/unpackage/dist/build/mp-weixin/static/logo.png b/unpackage/dist/build/mp-weixin/static/logo.png
new file mode 100644
index 0000000..b5771e2
Binary files /dev/null and b/unpackage/dist/build/mp-weixin/static/logo.png differ
diff --git a/unpackage/dist/build/mp-weixin/static/scan-icon.png b/unpackage/dist/build/mp-weixin/static/scan-icon.png
new file mode 100644
index 0000000..7fb452d
Binary files /dev/null and b/unpackage/dist/build/mp-weixin/static/scan-icon.png differ
diff --git a/unpackage/dist/build/mp-weixin/static/user-active.png b/unpackage/dist/build/mp-weixin/static/user-active.png
new file mode 100644
index 0000000..892cea3
Binary files /dev/null and b/unpackage/dist/build/mp-weixin/static/user-active.png differ
diff --git a/unpackage/dist/build/mp-weixin/static/user.png b/unpackage/dist/build/mp-weixin/static/user.png
new file mode 100644
index 0000000..1054ecf
Binary files /dev/null and b/unpackage/dist/build/mp-weixin/static/user.png differ
diff --git a/unpackage/dist/build/mp-weixin/util/index.js b/unpackage/dist/build/mp-weixin/util/index.js
new file mode 100644
index 0000000..0611271
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/util/index.js
@@ -0,0 +1 @@
+"use strict";const e=require("../common/vendor.js"),n=require("../config/user.js");exports.getQueryString=function(e,n){var o=new RegExp("(^|&|/?)"+n+"=([^&|/?]*)(&|/?|$)","i"),i=e.substr(1).match(o);return null!=i?i[2]:null},exports.getUserInfo=()=>new Promise((async(e,o)=>{e(await n.getMyIndexInfo({isHide:!1}))})),exports.wxLogin=()=>new Promise(((o,i)=>{e.index.login({provider:"weixin",success:async t=>{try{if(!t.code)throw new Error("获取微信登录凭证失败");{const i=await n.login({code:t.code,appid:"wxe752f45e7f7aa271"});if(200!==i.code)throw new Error(i.message||"登录失败");e.index.setStorageSync("token",i.data.LoginWxVo.access_token),e.index.setStorageSync("client_id",i.data.LoginWxVo.client_id),o(i.data)}}catch(s){e.index.showToast({title:s.message||"登录失败",icon:"none"}),i(s)}},fail:n=>{e.index.showToast({title:"微信登录失败",icon:"none"}),i(n)}})}));
diff --git a/unpackage/dist/build/mp-weixin/utils/orderMonitor.js b/unpackage/dist/build/mp-weixin/utils/orderMonitor.js
new file mode 100644
index 0000000..9726257
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/utils/orderMonitor.js
@@ -0,0 +1 @@
+"use strict";const e=require("../common/vendor.js"),s=require("../config/user.js");const r=new class{constructor(){this.activeOrders=new Map,this.timer=null,this.checkInterval=1e4,this.isRunning=!1}addOrder(e){e&&e.orderId?(console.log("添加订单到监控队列:",e.orderId),this.activeOrders.set(e.orderId,e),this.isRunning||this.start()):console.error("添加订单监控失败:无效的订单数据")}removeOrder(e){this.activeOrders.has(e)&&(console.log("从监控队列移除订单:",e),this.activeOrders.delete(e),0===this.activeOrders.size&&this.stop())}start(){this.isRunning||(console.log("启动订单监控服务"),this.isRunning=!0,this.checkOrders(),this.timer=setInterval((()=>{this.checkOrders()}),this.checkInterval))}stop(){this.isRunning&&(console.log("停止订单监控服务"),this.isRunning=!1,this.timer&&(clearInterval(this.timer),this.timer=null))}async checkOrders(){if(0!==this.activeOrders.size){console.log(`检查 ${this.activeOrders.size} 个活跃订单状态`);for(const[s,r]of this.activeOrders.entries())try{await this.checkOrderStatus(s)}catch(e){console.error(`检查订单状态失败: ${s}`,e)}}}async checkOrderStatus(r){try{console.log(`检查订单 ${r} 的状态`);const t=await s.queryById(r);if(200===t.code&&t.data){const s=t.data;if(this.activeOrders.set(r,s),"used_done"===s.orderStatus||"used_down"===s.orderStatus){console.log(`订单 ${r} 已完成!`),e.index.$emit("orderCompleted",s),e.index.showToast({title:"充电宝归还成功",icon:"success",duration:2e3});const t=e.index.createInnerAudioContext();t.src="/static/audio/return_success.mp3",t.play(),this.removeOrder(r),setTimeout((()=>{e.index.showModal({title:"归还成功",content:"充电宝已归还成功,剩余押金将退还到您的账户",confirmText:"查看详情",success:s=>{s.confirm&&e.index.redirectTo({url:`/pages/order/return-success?orderId=${r}`})}})}),500)}}}catch(t){console.error(`检查订单 ${r} 状态出错:`,t)}}};(()=>{const s=e.index.getStorageSync("activeOrderId");if(s){const e={orderId:s};r.addOrder(e)}})(),exports.orderMonitor=r;
diff --git a/unpackage/dist/cache/.vite/deps/_metadata.json b/unpackage/dist/cache/.vite/deps/_metadata.json
index 509efcb..aea5a68 100644
--- a/unpackage/dist/cache/.vite/deps/_metadata.json
+++ b/unpackage/dist/cache/.vite/deps/_metadata.json
@@ -1,13 +1,13 @@
{
- "hash": "eecc45c6",
- "configHash": "e4fbd916",
+ "hash": "1aab2153",
+ "configHash": "d5af41b4",
"lockfileHash": "78df9316",
- "browserHash": "8d847c28",
+ "browserHash": "506545f1",
"optimized": {
"uview-ui": {
"src": "../../../../../node_modules/uview-ui/index.js",
"file": "uview-ui.js",
- "fileHash": "b095c49f",
+ "fileHash": "4f573264",
"needsInterop": false
}
},
diff --git a/unpackage/dist/cache/.vite/deps/uview-ui.js b/unpackage/dist/cache/.vite/deps/uview-ui.js
index 3457315..c584443 100644
--- a/unpackage/dist/cache/.vite/deps/uview-ui.js
+++ b/unpackage/dist/cache/.vite/deps/uview-ui.js
@@ -24,9 +24,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
mod
));
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/mixin/mixin.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/mixin/mixin.js
var require_mixin = __commonJS({
- "C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/mixin/mixin.js"(exports, module) {
+ "../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/mixin/mixin.js"(exports, module) {
module.exports = {
data() {
return {};
@@ -82,10 +82,10 @@ var require_mixin = __commonJS({
}
});
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/index.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/index.js
var import_mixin = __toESM(require_mixin());
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/deepClone.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/deepClone.js
function deepClone(obj, cache = /* @__PURE__ */ new WeakMap()) {
if (obj === null || typeof obj !== "object")
return obj;
@@ -116,7 +116,7 @@ function deepClone(obj, cache = /* @__PURE__ */ new WeakMap()) {
}
var deepClone_default = deepClone;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/deepMerge.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/deepMerge.js
function deepMerge(target = {}, source = {}) {
target = deepClone_default(target);
if (typeof target !== "object" || target === null || typeof source !== "object" || source === null)
@@ -145,7 +145,7 @@ function deepMerge(target = {}, source = {}) {
}
var deepMerge_default = deepMerge;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/test.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/test.js
function email(value) {
return /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(value);
}
@@ -290,7 +290,7 @@ var test_default = {
code
};
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/request/index.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/request/index.js
var Request = class {
// 设置全局默认配置
setConfig(customConfig) {
@@ -424,7 +424,7 @@ var Request = class {
};
var request_default = new Request();
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/queryParams.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/queryParams.js
function queryParams(data = {}, isPrefix = true, arrayFormat = "brackets") {
let prefix = isPrefix ? "?" : "";
let _result = [];
@@ -472,7 +472,7 @@ function queryParams(data = {}, isPrefix = true, arrayFormat = "brackets") {
}
var queryParams_default = queryParams;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/route.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/route.js
var Router = class {
constructor() {
this.config = {
@@ -571,7 +571,7 @@ var Router = class {
};
var route_default = new Router().route;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/timeFormat.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/timeFormat.js
if (!String.prototype.padStart) {
String.prototype.padStart = function(maxLength, fillString = " ") {
if (Object.prototype.toString.call(fillString) !== "[object String]")
@@ -625,7 +625,7 @@ function timeFormat(dateTime = null, fmt = "yyyy-mm-dd") {
}
var timeFormat_default = timeFormat;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/timeFrom.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/timeFrom.js
function timeFrom(dateTime = null, format = "yyyy-mm-dd") {
if (!dateTime)
dateTime = Number(/* @__PURE__ */ new Date());
@@ -662,7 +662,7 @@ function timeFrom(dateTime = null, format = "yyyy-mm-dd") {
}
var timeFrom_default = timeFrom;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/colorGradient.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/colorGradient.js
function colorGradient(startColor = "rgb(0, 0, 0)", endColor = "rgb(255, 255, 255)", step = 10) {
let startRGB = hexToRgb(startColor, false);
let startR = startRGB[0];
@@ -770,7 +770,7 @@ var colorGradient_default = {
colorToRgba
};
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/guid.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/guid.js
function guid(len = 32, firstU = true, radix = null) {
let chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split("");
let uuid = [];
@@ -798,7 +798,7 @@ function guid(len = 32, firstU = true, radix = null) {
}
var guid_default = guid;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/color.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/color.js
var color = {
primary: "#2979ff",
primaryDark: "#2b85e4",
@@ -829,7 +829,7 @@ var color = {
};
var color_default = color;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/type2icon.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/type2icon.js
function type2icon(type = "success", fill = false) {
if (["primary", "info", "error", "warning", "success"].indexOf(type) == -1)
type = "success";
@@ -859,19 +859,19 @@ function type2icon(type = "success", fill = false) {
}
var type2icon_default = type2icon;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/randomArray.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/randomArray.js
function randomArray(array2 = []) {
return array2.sort(() => Math.random() - 0.5);
}
var randomArray_default = randomArray;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/addUnit.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/addUnit.js
function addUnit(value = "auto", unit = "rpx") {
value = String(value);
return test_default.number(value) ? `${value}${unit}` : value;
}
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/random.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/random.js
function random(min, max) {
if (min >= 0 && max > 0 && max >= min) {
let gab = max - min + 1;
@@ -882,7 +882,7 @@ function random(min, max) {
}
var random_default = random;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/trim.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/trim.js
function trim(str, pos = "both") {
if (pos == "both") {
return str.replace(/^\s+|\s+$/g, "");
@@ -898,7 +898,7 @@ function trim(str, pos = "both") {
}
var trim_default = trim;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/toast.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/toast.js
function toast(title, duration = 1500) {
uni.showToast({
title,
@@ -908,7 +908,7 @@ function toast(title, duration = 1500) {
}
var toast_default = toast;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/getParent.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/getParent.js
function getParent(name, keys) {
let parent = this.$parent;
while (parent) {
@@ -945,7 +945,7 @@ function getParent(name, keys) {
return {};
}
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/$parent.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/$parent.js
function $parent(name = void 0) {
let parent = this.$parent;
while (parent) {
@@ -958,7 +958,7 @@ function $parent(name = void 0) {
return false;
}
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/sys.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/sys.js
function os() {
return uni.getSystemInfoSync().platform;
}
@@ -966,7 +966,7 @@ function sys() {
return uni.getSystemInfoSync();
}
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/debounce.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/debounce.js
var timeout = null;
function debounce(func, wait = 500, immediate = false) {
if (timeout !== null)
@@ -986,7 +986,7 @@ function debounce(func, wait = 500, immediate = false) {
}
var debounce_default = debounce;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/function/throttle.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/function/throttle.js
var timer;
var flag;
function throttle(func, wait = 500, immediate = true) {
@@ -1010,7 +1010,7 @@ function throttle(func, wait = 500, immediate = true) {
}
var throttle_default = throttle;
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/config/config.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/config/config.js
var version = "1.8.8";
var config_default = {
v: version,
@@ -1025,7 +1025,7 @@ var config_default = {
]
};
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/libs/config/zIndex.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/libs/config/zIndex.js
var zIndex_default = {
toast: 10090,
noNetwork: 10080,
@@ -1038,7 +1038,7 @@ var zIndex_default = {
indexListSticky: 965
};
-// C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/node_modules/uview-ui/index.js
+// ../../../../../../Users/apple/Documents/subject/locker-fans/uni-fans/node_modules/uview-ui/index.js
function wranning(str) {
if (true) {
console.warn(str);
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/app.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/app.js.map
new file mode 100644
index 0000000..a0ba8d4
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/app.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_sfc_main","onLaunch","common_vendor","index","__f__","onShow","_onShow","_asyncToGenerator2","_regeneratorRuntime2","mark","_callee","wrap","_callee$","_context","prev","next","autoLogin","stop","apply","arguments","onHide","methods","_callee2","loginResult","_callee2$","_context2","util_index","wxLogin","sent","t0"],"sources":["App.vue"],"sourcesContent":["\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOC,IAAKA,SAAA,GAAU;EACdC,QAAA,EAAU,SAAVA,SAAA,EAAqB;IACpBC,aAAA,CAAAC,KAAA,CAAAC,KAAA,yBAAY,YAAY;EAExB;EACDC,MAAA;IAAA,IAAAC,OAAA,GAAAC,kBAAA,eAAAC,oBAAA,GAAAC,IAAA,CAAQ,SAAAC,QAAA;MAAA,OAAAF,oBAAA,GAAAG,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YACPb,aAAA,CAAAC,KAAA,CAAYC,KAAA,mCAAU;YAAAS,QAAA,CAAAE,IAAA;YAAA,OAChB,KAAKC,SAAA,EAAU;UAAA;UAAA;YAAA,OAAAH,QAAA,CAAAI,IAAA;QAAA;MAAA,GAAAP,OAAA;IAAA,CAErB;IAAA,SAJDL,OAAA;MAAA,OAAAC,OAAA,CAAAY,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAAd,MAAA;EAAA,GAIC;EACDe,MAAA,EAAQ,SAARA,OAAA,EAAmB;IAClBlB,aAAA,CAAAC,KAAA,CAAYC,KAAA,mCAAU;EACtB;EAIDiB,OAAA,EAAS;IACFL,SAAA,WAAAA,UAAA,EAAY;MAAA,OAAAT,kBAAA,eAAAC,oBAAA,GAAAC,IAAA,UAAAa,SAAA;QAAA,IAAAC,WAAA;QAAA,OAAAf,oBAAA,GAAAG,IAAA,UAAAa,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAX,IAAA,GAAAW,SAAA,CAAAV,IAAA;YAAA;cAAAU,SAAA,CAAAX,IAAA;cAAAW,SAAA,CAAAV,IAAA;cAAA,OAEUW,UAAA,CAAAC,OAAA,EAAQ;YAAA;cAA5BJ,WAAA,GAAAE,SAAA,CAAAG,IAAA;cACN1B,aAAA,CAAAC,KAAA,CAAYC,KAAA,oCAAWmB,WAAW;cAAAE,SAAA,CAAAV,IAAA;cAAA;YAAA;cAAAU,SAAA,CAAAX,IAAA;cAAAW,SAAA,CAAAI,EAAA,GAAAJ,SAAA;cAGlCvB,aAAA,CAAAC,KAAA,CAAAC,KAAA,2BAAc,WAAAqB,SAAA,CAAAI,EAAA,CAAgB;YAAA;YAAA;cAAA,OAAAJ,SAAA,CAAAR,IAAA;UAAA;QAAA,GAAAK,QAAA;MAAA;IAIhC;EACD;AACD","ignoreList":[]}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map
index 77e025e..b0ab1c3 100644
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map
@@ -1 +1 @@
-{"version":3,"file":"app.js","sources":["App.vue"],"sourcesContent":["\r\n\r\n"],"names":["uni","wxLogin"],"mappings":";;;;;;;;;;;;;;;;;AAOC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,iBAAY,YAAY;AAAA,EAExB;AAAA,EACD,QAAQ,iBAAiB;AACxBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AACtB,UAAM,KAAK,UAAU;AAAA,EAErB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACtB;AAAA,EAID,SAAS;AAAA,IACR,MAAM,YAAY;AACjB,UAAI;AACH,cAAM,cAAc,MAAMC,mBAAQ;AAClCD,sBAAAA,MAAY,MAAA,OAAA,iBAAA,WAAW,WAAW;AAAA,MAEjC,SAAO,OAAO;AACfA,sBAAAA,sCAAc,WAAW,KAAK;AAAA,MAG/B;AAAA,IACD;AAAA,EACD;AACD;;;;;;;;;"}
\ No newline at end of file
+{"version":3,"file":"app.js","sources":["App.vue"],"sourcesContent":["\r\n\r\n"],"names":["uni","wxLogin"],"mappings":";;;;;;;;;;;;;;;;;;;AAOC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,iBAAY,YAAY;AAAA,EAExB;AAAA,EACD,QAAQ,iBAAiB;AACxBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AACtB,UAAM,KAAK,UAAU;AAAA,EAErB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACtB;AAAA,EAID,SAAS;AAAA,IACR,MAAM,YAAY;AACjB,UAAI;AACH,cAAM,cAAc,MAAMC,mBAAQ;AAClCD,sBAAAA,MAAY,MAAA,OAAA,iBAAA,WAAW,WAAW;AAAA,MAEjC,SAAO,OAAO;AACfA,sBAAAA,sCAAc,WAAW,KAAK;AAAA,MAG/B;AAAA,IACD;AAAA,EACD;AACD;;;;;;;;;;"}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
index f8d1f9a..f1c4f6d 100644
--- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
@@ -1 +1 @@
-{"version":3,"file":"vendor.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/shared/dist/shared.esm-bundler.js","E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js","E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-shared/dist/uni-shared.es.js","E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-vue/dist/vue.runtime.esm.js","E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-weixin/dist/uni.api.esm.js","E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-console/dist/index.esm.js","E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-weixin/dist/uni.mp.esm.js","node_modules/uview-ui/libs/function/deepClone.js","node_modules/uview-ui/libs/function/deepMerge.js","node_modules/uview-ui/libs/function/test.js","node_modules/uview-ui/libs/request/index.js","node_modules/uview-ui/libs/function/queryParams.js","node_modules/uview-ui/libs/function/route.js","node_modules/uview-ui/libs/function/timeFormat.js","node_modules/uview-ui/libs/function/timeFrom.js","node_modules/uview-ui/libs/function/colorGradient.js","node_modules/uview-ui/libs/function/guid.js","node_modules/uview-ui/libs/function/color.js","node_modules/uview-ui/libs/function/type2icon.js","node_modules/uview-ui/libs/function/randomArray.js","node_modules/uview-ui/libs/function/addUnit.js","node_modules/uview-ui/libs/function/random.js","node_modules/uview-ui/libs/function/trim.js","node_modules/uview-ui/libs/function/toast.js","node_modules/uview-ui/libs/function/getParent.js","node_modules/uview-ui/libs/function/$parent.js","node_modules/uview-ui/libs/function/sys.js","node_modules/uview-ui/libs/function/debounce.js","node_modules/uview-ui/libs/function/throttle.js","node_modules/uview-ui/libs/config/config.js","node_modules/uview-ui/libs/config/zIndex.js","node_modules/uview-ui/index.js"],"sourcesContent":["/**\n* @vue/shared v3.4.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nfunction makeMap(str, expectsLowerCase) {\n const set = new Set(str.split(\",\"));\n return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"HOISTED\": -1,\n \"-1\": \"HOISTED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === \"number\") {\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>| looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v;\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","const isObject = (val) => val !== null && typeof val === 'object';\nconst defaultDelimiters = ['{', '}'];\nclass BaseFormatter {\n constructor() {\n this._caches = Object.create(null);\n }\n interpolate(message, values, delimiters = defaultDelimiters) {\n if (!values) {\n return [message];\n }\n let tokens = this._caches[message];\n if (!tokens) {\n tokens = parse(message, delimiters);\n this._caches[message] = tokens;\n }\n return compile(tokens, values);\n }\n}\nconst RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nconst RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\nfunction parse(format, [startDelimiter, endDelimiter]) {\n const tokens = [];\n let position = 0;\n let text = '';\n while (position < format.length) {\n let char = format[position++];\n if (char === startDelimiter) {\n if (text) {\n tokens.push({ type: 'text', value: text });\n }\n text = '';\n let sub = '';\n char = format[position++];\n while (char !== undefined && char !== endDelimiter) {\n sub += char;\n char = format[position++];\n }\n const isClosed = char === endDelimiter;\n const type = RE_TOKEN_LIST_VALUE.test(sub)\n ? 'list'\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n ? 'named'\n : 'unknown';\n tokens.push({ value: sub, type });\n }\n // else if (char === '%') {\n // // when found rails i18n syntax, skip text capture\n // if (format[position] !== '{') {\n // text += char\n // }\n // }\n else {\n text += char;\n }\n }\n text && tokens.push({ type: 'text', value: text });\n return tokens;\n}\nfunction compile(tokens, values) {\n const compiled = [];\n let index = 0;\n const mode = Array.isArray(values)\n ? 'list'\n : isObject(values)\n ? 'named'\n : 'unknown';\n if (mode === 'unknown') {\n return compiled;\n }\n while (index < tokens.length) {\n const token = tokens[index];\n switch (token.type) {\n case 'text':\n compiled.push(token.value);\n break;\n case 'list':\n compiled.push(values[parseInt(token.value, 10)]);\n break;\n case 'named':\n if (mode === 'named') {\n compiled.push(values[token.value]);\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Type of token '${token.type}' and format of value '${mode}' don't match!`);\n }\n }\n break;\n case 'unknown':\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Detect 'unknown' type of token!`);\n }\n break;\n }\n index++;\n }\n return compiled;\n}\n\nconst LOCALE_ZH_HANS = 'zh-Hans';\nconst LOCALE_ZH_HANT = 'zh-Hant';\nconst LOCALE_EN = 'en';\nconst LOCALE_FR = 'fr';\nconst LOCALE_ES = 'es';\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst defaultFormatter = new BaseFormatter();\nfunction include(str, parts) {\n return !!parts.find((part) => str.indexOf(part) !== -1);\n}\nfunction startsWith(str, parts) {\n return parts.find((part) => str.indexOf(part) === 0);\n}\nfunction normalizeLocale(locale, messages) {\n if (!locale) {\n return;\n }\n locale = locale.trim().replace(/_/g, '-');\n if (messages && messages[locale]) {\n return locale;\n }\n locale = locale.toLowerCase();\n if (locale === 'chinese') {\n // 支付宝\n return LOCALE_ZH_HANS;\n }\n if (locale.indexOf('zh') === 0) {\n if (locale.indexOf('-hans') > -1) {\n return LOCALE_ZH_HANS;\n }\n if (locale.indexOf('-hant') > -1) {\n return LOCALE_ZH_HANT;\n }\n if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {\n return LOCALE_ZH_HANT;\n }\n return LOCALE_ZH_HANS;\n }\n let locales = [LOCALE_EN, LOCALE_FR, LOCALE_ES];\n if (messages && Object.keys(messages).length > 0) {\n locales = Object.keys(messages);\n }\n const lang = startsWith(locale, locales);\n if (lang) {\n return lang;\n }\n}\nclass I18n {\n constructor({ locale, fallbackLocale, messages, watcher, formater, }) {\n this.locale = LOCALE_EN;\n this.fallbackLocale = LOCALE_EN;\n this.message = {};\n this.messages = {};\n this.watchers = [];\n if (fallbackLocale) {\n this.fallbackLocale = fallbackLocale;\n }\n this.formater = formater || defaultFormatter;\n this.messages = messages || {};\n this.setLocale(locale || LOCALE_EN);\n if (watcher) {\n this.watchLocale(watcher);\n }\n }\n setLocale(locale) {\n const oldLocale = this.locale;\n this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;\n if (!this.messages[this.locale]) {\n // 可能初始化时不存在\n this.messages[this.locale] = {};\n }\n this.message = this.messages[this.locale];\n // 仅发生变化时,通知\n if (oldLocale !== this.locale) {\n this.watchers.forEach((watcher) => {\n watcher(this.locale, oldLocale);\n });\n }\n }\n getLocale() {\n return this.locale;\n }\n watchLocale(fn) {\n const index = this.watchers.push(fn) - 1;\n return () => {\n this.watchers.splice(index, 1);\n };\n }\n add(locale, message, override = true) {\n const curMessages = this.messages[locale];\n if (curMessages) {\n if (override) {\n Object.assign(curMessages, message);\n }\n else {\n Object.keys(message).forEach((key) => {\n if (!hasOwn(curMessages, key)) {\n curMessages[key] = message[key];\n }\n });\n }\n }\n else {\n this.messages[locale] = message;\n }\n }\n f(message, values, delimiters) {\n return this.formater.interpolate(message, values, delimiters).join('');\n }\n t(key, locale, values) {\n let message = this.message;\n if (typeof locale === 'string') {\n locale = normalizeLocale(locale, this.messages);\n locale && (message = this.messages[locale]);\n }\n else {\n values = locale;\n }\n if (!hasOwn(message, key)) {\n console.warn(`Cannot translate the value of keypath ${key}. Use the value of keypath as default.`);\n return key;\n }\n return this.formater.interpolate(message[key], values).join('');\n }\n}\n\nfunction watchAppLocale(appVm, i18n) {\n // 需要保证 watch 的触发在组件渲染之前\n if (appVm.$watchLocale) {\n // vue2\n appVm.$watchLocale((newLocale) => {\n i18n.setLocale(newLocale);\n });\n }\n else {\n appVm.$watch(() => appVm.$locale, (newLocale) => {\n i18n.setLocale(newLocale);\n });\n }\n}\nfunction getDefaultLocale() {\n if (typeof uni !== 'undefined' && uni.getLocale) {\n return uni.getLocale();\n }\n // 小程序平台,uni 和 uni-i18n 互相引用,导致访问不到 uni,故在 global 上挂了 getLocale\n if (typeof global !== 'undefined' && global.getLocale) {\n return global.getLocale();\n }\n return LOCALE_EN;\n}\nfunction initVueI18n(locale, messages = {}, fallbackLocale, watcher) {\n // 兼容旧版本入参\n if (typeof locale !== 'string') {\n // ;[locale, messages] = [\n // messages as unknown as string,\n // locale as unknown as LocaleMessages,\n // ]\n // 暂不使用数组解构,uts编译器暂未支持。\n const options = [\n messages,\n locale,\n ];\n locale = options[0];\n messages = options[1];\n }\n if (typeof locale !== 'string') {\n // 因为小程序平台,uni-i18n 和 uni 互相引用,导致此时访问 uni 时,为 undefined\n locale = getDefaultLocale();\n }\n if (typeof fallbackLocale !== 'string') {\n fallbackLocale =\n (typeof __uniConfig !== 'undefined' && __uniConfig.fallbackLocale) ||\n LOCALE_EN;\n }\n const i18n = new I18n({\n locale,\n fallbackLocale,\n messages,\n watcher,\n });\n let t = (key, values) => {\n if (typeof getApp !== 'function') {\n // app view\n /* eslint-disable no-func-assign */\n t = function (key, values) {\n return i18n.t(key, values);\n };\n }\n else {\n let isWatchedAppLocale = false;\n t = function (key, values) {\n const appVm = getApp().$vm;\n // 可能$vm还不存在,比如在支付宝小程序中,组件定义较早,在props的default里使用了t()函数(如uni-goods-nav),此时app还未初始化\n // options: {\n // \ttype: Array,\n // \tdefault () {\n // \t\treturn [{\n // \t\t\ticon: 'shop',\n // \t\t\ttext: t(\"uni-goods-nav.options.shop\"),\n // \t\t}, {\n // \t\t\ticon: 'cart',\n // \t\t\ttext: t(\"uni-goods-nav.options.cart\")\n // \t\t}]\n // \t}\n // },\n if (appVm) {\n // 触发响应式\n appVm.$locale;\n if (!isWatchedAppLocale) {\n isWatchedAppLocale = true;\n watchAppLocale(appVm, i18n);\n }\n }\n return i18n.t(key, values);\n };\n }\n return t(key, values);\n };\n return {\n i18n,\n f(message, values, delimiters) {\n return i18n.f(message, values, delimiters);\n },\n t(key, values) {\n return t(key, values);\n },\n add(locale, message, override = true) {\n return i18n.add(locale, message, override);\n },\n watch(fn) {\n return i18n.watchLocale(fn);\n },\n getLocale() {\n return i18n.getLocale();\n },\n setLocale(newLocale) {\n return i18n.setLocale(newLocale);\n },\n };\n}\n\nconst isString = (val) => typeof val === 'string';\nlet formater;\nfunction hasI18nJson(jsonObj, delimiters) {\n if (!formater) {\n formater = new BaseFormatter();\n }\n return walkJsonObj(jsonObj, (jsonObj, key) => {\n const value = jsonObj[key];\n if (isString(value)) {\n if (isI18nStr(value, delimiters)) {\n return true;\n }\n }\n else {\n return hasI18nJson(value, delimiters);\n }\n });\n}\nfunction parseI18nJson(jsonObj, values, delimiters) {\n if (!formater) {\n formater = new BaseFormatter();\n }\n walkJsonObj(jsonObj, (jsonObj, key) => {\n const value = jsonObj[key];\n if (isString(value)) {\n if (isI18nStr(value, delimiters)) {\n jsonObj[key] = compileStr(value, values, delimiters);\n }\n }\n else {\n parseI18nJson(value, values, delimiters);\n }\n });\n return jsonObj;\n}\nfunction compileI18nJsonStr(jsonStr, { locale, locales, delimiters, }) {\n if (!isI18nStr(jsonStr, delimiters)) {\n return jsonStr;\n }\n if (!formater) {\n formater = new BaseFormatter();\n }\n const localeValues = [];\n Object.keys(locales).forEach((name) => {\n if (name !== locale) {\n localeValues.push({\n locale: name,\n values: locales[name],\n });\n }\n });\n localeValues.unshift({ locale, values: locales[locale] });\n try {\n return JSON.stringify(compileJsonObj(JSON.parse(jsonStr), localeValues, delimiters), null, 2);\n }\n catch (e) { }\n return jsonStr;\n}\nfunction isI18nStr(value, delimiters) {\n return value.indexOf(delimiters[0]) > -1;\n}\nfunction compileStr(value, values, delimiters) {\n return formater.interpolate(value, values, delimiters).join('');\n}\nfunction compileValue(jsonObj, key, localeValues, delimiters) {\n const value = jsonObj[key];\n if (isString(value)) {\n // 存在国际化\n if (isI18nStr(value, delimiters)) {\n jsonObj[key] = compileStr(value, localeValues[0].values, delimiters);\n if (localeValues.length > 1) {\n // 格式化国际化语言\n const valueLocales = (jsonObj[key + 'Locales'] = {});\n localeValues.forEach((localValue) => {\n valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters);\n });\n }\n }\n }\n else {\n compileJsonObj(value, localeValues, delimiters);\n }\n}\nfunction compileJsonObj(jsonObj, localeValues, delimiters) {\n walkJsonObj(jsonObj, (jsonObj, key) => {\n compileValue(jsonObj, key, localeValues, delimiters);\n });\n return jsonObj;\n}\nfunction walkJsonObj(jsonObj, walk) {\n if (Array.isArray(jsonObj)) {\n for (let i = 0; i < jsonObj.length; i++) {\n if (walk(jsonObj, i)) {\n return true;\n }\n }\n }\n else if (isObject(jsonObj)) {\n for (const key in jsonObj) {\n if (walk(jsonObj, key)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction resolveLocale(locales) {\n return (locale) => {\n if (!locale) {\n return locale;\n }\n locale = normalizeLocale(locale) || locale;\n return resolveLocaleChain(locale).find((locale) => locales.indexOf(locale) > -1);\n };\n}\nfunction resolveLocaleChain(locale) {\n const chain = [];\n const tokens = locale.split('-');\n while (tokens.length) {\n chain.push(tokens.join('-'));\n tokens.pop();\n }\n return chain;\n}\n\nexport { BaseFormatter as Formatter, I18n, LOCALE_EN, LOCALE_ES, LOCALE_FR, LOCALE_ZH_HANS, LOCALE_ZH_HANT, compileI18nJsonStr, hasI18nJson, initVueI18n, isI18nStr, isString, normalizeLocale, parseI18nJson, resolveLocale };\n","import { isHTMLTag, isSVGTag, isString, isFunction, isPlainObject, hyphenate, camelize, normalizeStyle as normalizeStyle$1, parseStringStyle, isArray, normalizeClass as normalizeClass$1, extend, capitalize } from '@vue/shared';\n\nconst BUILT_IN_TAG_NAMES = [\n 'ad',\n 'ad-content-page',\n 'ad-draw',\n 'audio',\n 'button',\n 'camera',\n 'canvas',\n 'checkbox',\n 'checkbox-group',\n 'cover-image',\n 'cover-view',\n 'editor',\n 'form',\n 'functional-page-navigator',\n 'icon',\n 'image',\n 'input',\n 'label',\n 'live-player',\n 'live-pusher',\n 'map',\n 'movable-area',\n 'movable-view',\n 'navigator',\n 'official-account',\n 'open-data',\n 'picker',\n 'picker-view',\n 'picker-view-column',\n 'progress',\n 'radio',\n 'radio-group',\n 'rich-text',\n 'scroll-view',\n 'slider',\n 'swiper',\n 'swiper-item',\n 'switch',\n 'text',\n 'textarea',\n 'video',\n 'view',\n 'web-view',\n 'location-picker',\n 'location-view',\n];\nconst BUILT_IN_TAGS = BUILT_IN_TAG_NAMES.map((tag) => 'uni-' + tag);\nconst TAGS = [\n 'app',\n 'layout',\n 'content',\n 'main',\n 'top-window',\n 'left-window',\n 'right-window',\n 'tabbar',\n 'page',\n 'page-head',\n 'page-wrapper',\n 'page-body',\n 'page-refresh',\n 'actionsheet',\n 'modal',\n 'toast',\n 'resize-sensor',\n 'shadow-root',\n].map((tag) => 'uni-' + tag);\nconst NVUE_BUILT_IN_TAGS = [\n 'svg',\n 'view',\n 'a',\n 'div',\n 'img',\n 'image',\n 'text',\n 'span',\n 'input',\n 'textarea',\n 'spinner',\n 'select',\n // slider 被自定义 u-slider 替代\n // 'slider',\n 'slider-neighbor',\n 'indicator',\n 'canvas',\n 'list',\n 'cell',\n 'header',\n 'loading',\n 'loading-indicator',\n 'refresh',\n 'scrollable',\n 'scroller',\n 'video',\n 'web',\n 'embed',\n 'tabbar',\n 'tabheader',\n 'datepicker',\n 'timepicker',\n 'marquee',\n 'countdown',\n 'dc-switch',\n 'waterfall',\n 'richtext',\n 'recycle-list',\n 'u-scalable',\n 'barcode',\n 'gcanvas',\n];\nconst UVUE_BUILT_IN_TAGS = [\n 'ad',\n 'ad-content-page',\n 'ad-draw',\n 'native-view',\n 'loading-indicator',\n 'list-view',\n 'list-item',\n 'swiper',\n 'swiper-item',\n 'rich-text',\n 'sticky-view',\n 'sticky-header',\n 'sticky-section',\n // 自定义\n 'uni-slider',\n // 原生实现\n 'button',\n 'nested-scroll-header',\n 'nested-scroll-body',\n 'waterflow',\n 'flow-item',\n 'share-element',\n 'cover-view',\n 'cover-image',\n];\nconst UVUE_WEB_BUILT_IN_TAGS = [\n 'list-view',\n 'list-item',\n 'sticky-section',\n 'sticky-header',\n 'cloud-db-element',\n].map((tag) => 'uni-' + tag);\nconst UVUE_IOS_BUILT_IN_TAGS = [\n 'scroll-view',\n 'web-view',\n 'slider',\n 'form',\n 'switch',\n];\nconst UVUE_HARMONY_BUILT_IN_TAGS = [\n // TODO 列出完整列表\n ...BUILT_IN_TAG_NAMES,\n];\nconst NVUE_U_BUILT_IN_TAGS = [\n 'u-text',\n 'u-image',\n 'u-input',\n 'u-textarea',\n 'u-video',\n 'u-web-view',\n 'u-slider',\n 'u-ad',\n 'u-ad-draw',\n 'u-rich-text',\n];\nconst UNI_UI_CONFLICT_TAGS = ['list-item'].map((tag) => 'uni-' + tag);\nfunction isBuiltInComponent(tag) {\n if (UNI_UI_CONFLICT_TAGS.indexOf(tag) !== -1) {\n return false;\n }\n // h5 平台会被转换为 v-uni-\n const realTag = 'uni-' + tag.replace('v-uni-', '');\n // TODO 区分x和非x\n return (BUILT_IN_TAGS.indexOf(realTag) !== -1 ||\n UVUE_WEB_BUILT_IN_TAGS.indexOf(realTag) !== -1);\n}\nfunction isH5CustomElement(tag, isX = false) {\n if (isX && UVUE_WEB_BUILT_IN_TAGS.indexOf(tag) !== -1) {\n return true;\n }\n return TAGS.indexOf(tag) !== -1 || BUILT_IN_TAGS.indexOf(tag) !== -1;\n}\nfunction isUniXElement(name) {\n return /^I?Uni.*Element(?:Impl)?$/.test(name);\n}\nfunction isH5NativeTag(tag) {\n return (tag !== 'head' &&\n (isHTMLTag(tag) || isSVGTag(tag)) &&\n !isBuiltInComponent(tag));\n}\nfunction isAppNativeTag(tag) {\n return isHTMLTag(tag) || isSVGTag(tag) || isBuiltInComponent(tag);\n}\nconst NVUE_CUSTOM_COMPONENTS = [\n 'ad',\n 'ad-draw',\n 'button',\n 'checkbox-group',\n 'checkbox',\n 'form',\n 'icon',\n 'label',\n 'movable-area',\n 'movable-view',\n 'navigator',\n 'picker',\n 'progress',\n 'radio-group',\n 'radio',\n 'rich-text',\n 'swiper-item',\n 'swiper',\n 'switch',\n 'slider',\n 'picker-view',\n 'picker-view-column',\n];\n// 内置的easycom组件\nconst UVUE_BUILT_IN_EASY_COMPONENTS = ['map'];\nfunction isAppUVueBuiltInEasyComponent(tag) {\n return UVUE_BUILT_IN_EASY_COMPONENTS.includes(tag);\n}\n// 主要是指前端实现的组件列表\nconst UVUE_CUSTOM_COMPONENTS = [\n ...NVUE_CUSTOM_COMPONENTS,\n ...UVUE_BUILT_IN_EASY_COMPONENTS,\n];\nfunction isAppUVueNativeTag(tag) {\n // 前端实现的内置组件都会注册一个根组件\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n if (UVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_CUSTOM_COMPONENTS.includes(tag)) {\n return false;\n }\n if (isBuiltInComponent(tag)) {\n return true;\n }\n // u-text,u-video...\n if (NVUE_U_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isAppIOSUVueNativeTag(tag) {\n // 前端实现的内置组件都会注册一个根组件\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n if (NVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_IOS_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isAppHarmonyUVueNativeTag(tag) {\n // 前端实现的内置组件都会注册一个根组件\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n if (NVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_HARMONY_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isAppNVueNativeTag(tag) {\n if (NVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (NVUE_CUSTOM_COMPONENTS.includes(tag)) {\n return false;\n }\n if (isBuiltInComponent(tag)) {\n return true;\n }\n // u-text,u-video...\n if (NVUE_U_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isMiniProgramNativeTag(tag) {\n return isBuiltInComponent(tag);\n}\nfunction isMiniProgramUVueNativeTag(tag) {\n // 小程序平台内置的自定义元素,会被转换为 view\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n return isBuiltInComponent(tag);\n}\nfunction createIsCustomElement(tags = []) {\n return function isCustomElement(tag) {\n return tags.includes(tag);\n };\n}\nfunction isComponentTag(tag) {\n return tag[0].toLowerCase() + tag.slice(1) === 'component';\n}\nconst COMPONENT_SELECTOR_PREFIX = 'uni-';\nconst COMPONENT_PREFIX = 'v-' + COMPONENT_SELECTOR_PREFIX;\n\nconst LINEFEED = '\\n';\nconst NAVBAR_HEIGHT = 44;\nconst TABBAR_HEIGHT = 50;\nconst ON_REACH_BOTTOM_DISTANCE = 50;\nconst RESPONSIVE_MIN_WIDTH = 768;\nconst UNI_STORAGE_LOCALE = 'UNI_LOCALE';\n// quickapp-webview 不能使用 default 作为插槽名称\nconst SLOT_DEFAULT_NAME = 'd';\nconst COMPONENT_NAME_PREFIX = 'VUni';\nconst I18N_JSON_DELIMITERS = ['%', '%'];\nconst PRIMARY_COLOR = '#007aff';\nconst SELECTED_COLOR = '#0062cc'; // 选中的颜色,如选项卡默认的选中颜色\nconst BACKGROUND_COLOR = '#f7f7f7'; // 背景色,如标题栏默认背景色\nconst UNI_SSR = '__uniSSR';\nconst UNI_SSR_TITLE = 'title';\nconst UNI_SSR_STORE = 'store';\nconst UNI_SSR_DATA = 'data';\nconst UNI_SSR_GLOBAL_DATA = 'globalData';\nconst SCHEME_RE = /^([a-z-]+:)?\\/\\//i;\nconst DATA_RE = /^data:.*,.*/;\nconst WEB_INVOKE_APPSERVICE = 'WEB_INVOKE_APPSERVICE';\nconst WXS_PROTOCOL = 'wxs://';\nconst JSON_PROTOCOL = 'json://';\nconst WXS_MODULES = 'wxsModules';\nconst RENDERJS_MODULES = 'renderjsModules';\n// lifecycle\n// App and Page\nconst ON_SHOW = 'onShow';\nconst ON_HIDE = 'onHide';\n//App\nconst ON_LAUNCH = 'onLaunch';\nconst ON_ERROR = 'onError';\nconst ON_THEME_CHANGE = 'onThemeChange';\nconst OFF_THEME_CHANGE = 'offThemeChange';\nconst ON_HOST_THEME_CHANGE = 'onHostThemeChange';\nconst OFF_HOST_THEME_CHANGE = 'offHostThemeChange';\nconst ON_KEYBOARD_HEIGHT_CHANGE = 'onKeyboardHeightChange';\nconst ON_PAGE_NOT_FOUND = 'onPageNotFound';\nconst ON_UNHANDLE_REJECTION = 'onUnhandledRejection';\nconst ON_EXIT = 'onExit';\n//Page\nconst ON_LOAD = 'onLoad';\nconst ON_READY = 'onReady';\nconst ON_UNLOAD = 'onUnload';\n// 百度特有\nconst ON_INIT = 'onInit';\n// 微信特有\nconst ON_SAVE_EXIT_STATE = 'onSaveExitState';\nconst ON_RESIZE = 'onResize';\nconst ON_BACK_PRESS = 'onBackPress';\nconst ON_PAGE_SCROLL = 'onPageScroll';\nconst ON_TAB_ITEM_TAP = 'onTabItemTap';\nconst ON_REACH_BOTTOM = 'onReachBottom';\nconst ON_PULL_DOWN_REFRESH = 'onPullDownRefresh';\nconst ON_SHARE_TIMELINE = 'onShareTimeline';\nconst ON_SHARE_CHAT = 'onShareChat'; // xhs-share\nconst ON_ADD_TO_FAVORITES = 'onAddToFavorites';\nconst ON_SHARE_APP_MESSAGE = 'onShareAppMessage';\n// navigationBar\nconst ON_NAVIGATION_BAR_BUTTON_TAP = 'onNavigationBarButtonTap';\nconst ON_NAVIGATION_BAR_CHANGE = 'onNavigationBarChange';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED = 'onNavigationBarSearchInputClicked';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED = 'onNavigationBarSearchInputChanged';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED = 'onNavigationBarSearchInputConfirmed';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED = 'onNavigationBarSearchInputFocusChanged';\n// framework\nconst ON_APP_ENTER_FOREGROUND = 'onAppEnterForeground';\nconst ON_APP_ENTER_BACKGROUND = 'onAppEnterBackground';\nconst ON_WEB_INVOKE_APP_SERVICE = 'onWebInvokeAppService';\nconst ON_WXS_INVOKE_CALL_METHOD = 'onWxsInvokeCallMethod';\n// mergeVirtualHostAttributes\nconst VIRTUAL_HOST_STYLE = 'virtualHostStyle';\nconst VIRTUAL_HOST_CLASS = 'virtualHostClass';\nconst VIRTUAL_HOST_HIDDEN = 'virtualHostHidden';\nconst VIRTUAL_HOST_ID = 'virtualHostId';\n\nfunction cache(fn) {\n const cache = Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nfunction cacheStringFunction(fn) {\n return cache(fn);\n}\nfunction getLen(str = '') {\n return ('' + str).replace(/[^\\x00-\\xff]/g, '**').length;\n}\nfunction hasLeadingSlash(str) {\n return str.indexOf('/') === 0;\n}\nfunction addLeadingSlash(str) {\n return hasLeadingSlash(str) ? str : '/' + str;\n}\nfunction removeLeadingSlash(str) {\n return hasLeadingSlash(str) ? str.slice(1) : str;\n}\nconst invokeArrayFns = (fns, arg) => {\n let ret;\n for (let i = 0; i < fns.length; i++) {\n ret = fns[i](arg);\n }\n return ret;\n};\nfunction updateElementStyle(element, styles) {\n for (const attrName in styles) {\n element.style[attrName] = styles[attrName];\n }\n}\nfunction once(fn, ctx = null) {\n let res;\n return ((...args) => {\n if (fn) {\n res = fn.apply(ctx, args);\n fn = null;\n }\n return res;\n });\n}\nconst sanitise = (val) => (val && JSON.parse(JSON.stringify(val))) || val;\nconst _completeValue = (value) => (value > 9 ? value : '0' + value);\nfunction formatDateTime({ date = new Date(), mode = 'date' }) {\n if (mode === 'time') {\n return (_completeValue(date.getHours()) + ':' + _completeValue(date.getMinutes()));\n }\n else {\n return (date.getFullYear() +\n '-' +\n _completeValue(date.getMonth() + 1) +\n '-' +\n _completeValue(date.getDate()));\n }\n}\nfunction callOptions(options, data) {\n options = options || {};\n if (isString(data)) {\n data = {\n errMsg: data,\n };\n }\n if (/:ok$/.test(data.errMsg)) {\n if (isFunction(options.success)) {\n options.success(data);\n }\n }\n else {\n if (isFunction(options.fail)) {\n options.fail(data);\n }\n }\n if (isFunction(options.complete)) {\n options.complete(data);\n }\n}\nfunction getValueByDataPath(obj, path) {\n if (!isString(path)) {\n return;\n }\n path = path.replace(/\\[(\\d+)\\]/g, '.$1');\n const parts = path.split('.');\n let key = parts[0];\n if (!obj) {\n obj = {};\n }\n if (parts.length === 1) {\n return obj[key];\n }\n return getValueByDataPath(obj[key], parts.slice(1).join('.'));\n}\nfunction sortObject(obj) {\n let sortObj = {};\n if (isPlainObject(obj)) {\n Object.keys(obj)\n .sort()\n .forEach((key) => {\n const _key = key;\n sortObj[_key] = obj[_key];\n });\n }\n return !Object.keys(sortObj) ? obj : sortObj;\n}\nfunction getGlobalOnce() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n // worker\n if (typeof self !== 'undefined') {\n return self;\n }\n // browser\n if (typeof window !== 'undefined') {\n return window;\n }\n // nodejs\n // if (typeof global !== 'undefined') {\n // return global\n // }\n function g() {\n return this;\n }\n if (typeof g() !== 'undefined') {\n return g();\n }\n return (function () {\n return new Function('return this')();\n })();\n}\nlet g = undefined;\nfunction getGlobal() {\n if (g) {\n return g;\n }\n g = getGlobalOnce();\n return g;\n}\n\nfunction isComponentInternalInstance(vm) {\n return !!vm.appContext;\n}\nfunction resolveComponentInstance(instance) {\n return (instance &&\n (isComponentInternalInstance(instance) ? instance.proxy : instance));\n}\nfunction resolveOwnerVm(vm) {\n if (!vm) {\n return;\n }\n let componentName = vm.type.name;\n while (componentName && isBuiltInComponent(hyphenate(componentName))) {\n // ownerInstance 内置组件需要使用父 vm\n vm = vm.parent;\n componentName = vm.type.name;\n }\n return vm.proxy;\n}\nfunction isElement(el) {\n // Element\n return el.nodeType === 1;\n}\nfunction resolveOwnerEl(instance, multi = false) {\n const { vnode } = instance;\n if (isElement(vnode.el)) {\n return multi ? (vnode.el ? [vnode.el] : []) : vnode.el;\n }\n const { subTree } = instance;\n // ShapeFlags.ARRAY_CHILDREN = 1<<4\n if (subTree.shapeFlag & 16) {\n const elemVNodes = subTree.children.filter((vnode) => vnode.el && isElement(vnode.el));\n if (elemVNodes.length > 0) {\n if (multi) {\n return elemVNodes.map((node) => node.el);\n }\n return elemVNodes[0].el;\n }\n }\n return multi ? (vnode.el ? [vnode.el] : []) : vnode.el;\n}\nfunction dynamicSlotName(name) {\n return name === 'default' ? SLOT_DEFAULT_NAME : name;\n}\nconst customizeRE = /:/g;\nfunction customizeEvent(str) {\n return camelize(str.replace(customizeRE, '-'));\n}\nfunction normalizeStyle(value) {\n const g = getGlobal();\n if (g && g.UTSJSONObject && value instanceof g.UTSJSONObject) {\n const styleObject = {};\n g.UTSJSONObject.keys(value).forEach((key) => {\n styleObject[key] = value[key];\n });\n return normalizeStyle$1(styleObject);\n }\n else if (value instanceof Map) {\n const styleObject = {};\n value.forEach((value, key) => {\n styleObject[key] = value;\n });\n return normalizeStyle$1(styleObject);\n }\n else if (isString(value)) {\n return parseStringStyle(value);\n }\n else if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item)\n ? parseStringStyle(item)\n : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n }\n else {\n return normalizeStyle$1(value);\n }\n}\nfunction normalizeClass(value) {\n let res = '';\n const g = getGlobal();\n if (g && g.UTSJSONObject && value instanceof g.UTSJSONObject) {\n g.UTSJSONObject.keys(value).forEach((key) => {\n if (value[key]) {\n res += key + ' ';\n }\n });\n }\n else if (value instanceof Map) {\n value.forEach((value, key) => {\n if (value) {\n res += key + ' ';\n }\n });\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + ' ';\n }\n }\n }\n else {\n res = normalizeClass$1(value);\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nlet lastLogTime = 0;\nfunction formatLog(module, ...args) {\n const now = Date.now();\n const diff = lastLogTime ? now - lastLogTime : 0;\n lastLogTime = now;\n return `[${now}][${diff}ms][${module}]:${args\n .map((arg) => JSON.stringify(arg))\n .join(' ')}`;\n}\n\nfunction formatKey(key) {\n return camelize(key.substring(5));\n}\n// question/139181,增加副作用,避免 initCustomDataset 在 build 下被 tree-shaking\nconst initCustomDatasetOnce = /*#__PURE__*/ once((isBuiltInElement) => {\n isBuiltInElement =\n isBuiltInElement || ((el) => el.tagName.startsWith('UNI-'));\n const prototype = HTMLElement.prototype;\n const setAttribute = prototype.setAttribute;\n prototype.setAttribute = function (key, value) {\n if (key.startsWith('data-') && isBuiltInElement(this)) {\n const dataset = this.__uniDataset ||\n (this.__uniDataset = {});\n dataset[formatKey(key)] = value;\n }\n setAttribute.call(this, key, value);\n };\n const removeAttribute = prototype.removeAttribute;\n prototype.removeAttribute = function (key) {\n if (this.__uniDataset &&\n key.startsWith('data-') &&\n isBuiltInElement(this)) {\n delete this.__uniDataset[formatKey(key)];\n }\n removeAttribute.call(this, key);\n };\n});\nfunction getCustomDataset(el) {\n return extend({}, el.dataset, el.__uniDataset);\n}\n\nconst unitRE = new RegExp(`\"[^\"]+\"|'[^']+'|url\\\\([^)]+\\\\)|(\\\\d*\\\\.?\\\\d+)[r|u]px`, 'g');\nfunction toFixed(number, precision) {\n const multiplier = Math.pow(10, precision + 1);\n const wholeNumber = Math.floor(number * multiplier);\n return (Math.round(wholeNumber / 10) * 10) / multiplier;\n}\nconst defaultRpx2Unit = {\n unit: 'rem',\n unitRatio: 10 / 320,\n unitPrecision: 5,\n};\nconst defaultMiniProgramRpx2Unit = {\n unit: 'rpx',\n unitRatio: 1,\n unitPrecision: 1,\n};\nconst defaultNVueRpx2Unit = defaultMiniProgramRpx2Unit;\nfunction createRpx2Unit(unit, unitRatio, unitPrecision) {\n // ignore: rpxCalcIncludeWidth\n return (val) => val.replace(unitRE, (m, $1) => {\n if (!$1) {\n return m;\n }\n if (unitRatio === 1) {\n return `${$1}${unit}`;\n }\n const value = toFixed(parseFloat($1) * unitRatio, unitPrecision);\n return value === 0 ? '0' : `${value}${unit}`;\n });\n}\n\nfunction passive(passive) {\n return { passive };\n}\nfunction normalizeDataset(el) {\n // TODO\n return JSON.parse(JSON.stringify(el.dataset || {}));\n}\nfunction normalizeTarget(el) {\n const { id, offsetTop, offsetLeft } = el;\n return {\n id,\n dataset: getCustomDataset(el),\n offsetTop,\n offsetLeft,\n };\n}\nfunction addFont(family, source, desc) {\n const fonts = document.fonts;\n if (fonts) {\n const fontFace = new FontFace(family, source, desc);\n return fontFace.load().then(() => {\n fonts.add && fonts.add(fontFace);\n });\n }\n return new Promise((resolve) => {\n const style = document.createElement('style');\n const values = [];\n if (desc) {\n const { style, weight, stretch, unicodeRange, variant, featureSettings } = desc;\n style && values.push(`font-style:${style}`);\n weight && values.push(`font-weight:${weight}`);\n stretch && values.push(`font-stretch:${stretch}`);\n unicodeRange && values.push(`unicode-range:${unicodeRange}`);\n variant && values.push(`font-variant:${variant}`);\n featureSettings && values.push(`font-feature-settings:${featureSettings}`);\n }\n style.innerText = `@font-face{font-family:\"${family}\";src:${source};${values.join(';')}}`;\n document.head.appendChild(style);\n resolve();\n });\n}\nfunction scrollTo(scrollTop, duration, isH5) {\n if (isString(scrollTop)) {\n const el = document.querySelector(scrollTop);\n if (el) {\n const { top } = el.getBoundingClientRect();\n scrollTop = top + window.pageYOffset;\n // 如果存在,减去 高度\n const pageHeader = document.querySelector('uni-page-head');\n if (pageHeader) {\n scrollTop -= pageHeader.offsetHeight;\n }\n }\n }\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n const documentElement = document.documentElement;\n const { clientHeight, scrollHeight } = documentElement;\n scrollTop = Math.min(scrollTop, scrollHeight - clientHeight);\n if (duration === 0) {\n // 部分浏览器(比如微信)中 scrollTop 的值需要通过 document.body 来控制\n documentElement.scrollTop = document.body.scrollTop = scrollTop;\n return;\n }\n if (window.scrollY === scrollTop) {\n return;\n }\n const scrollTo = (duration) => {\n if (duration <= 0) {\n window.scrollTo(0, scrollTop);\n return;\n }\n const distaince = scrollTop - window.scrollY;\n requestAnimationFrame(function () {\n window.scrollTo(0, window.scrollY + (distaince / duration) * 10);\n scrollTo(duration - 10);\n });\n };\n scrollTo(duration);\n}\n\nconst encode = encodeURIComponent;\nfunction stringifyQuery(obj, encodeStr = encode) {\n const res = obj\n ? Object.keys(obj)\n .map((key) => {\n let val = obj[key];\n if (typeof val === undefined || val === null) {\n val = '';\n }\n else if (isPlainObject(val)) {\n val = JSON.stringify(val);\n }\n return encodeStr(key) + '=' + encodeStr(val);\n })\n .filter((x) => x.length > 0)\n .join('&')\n : null;\n return res ? `?${res}` : '';\n}\n/**\n * Decode text using `decodeURIComponent`. Returns the original text if it\n * fails.\n *\n * @param text - string to decode\n * @returns decoded string\n */\nfunction decode(text) {\n try {\n return decodeURIComponent('' + text);\n }\n catch (err) { }\n return '' + text;\n}\nfunction decodedQuery(query = {}) {\n const decodedQuery = {};\n Object.keys(query).forEach((name) => {\n try {\n decodedQuery[name] = decode(query[name]);\n }\n catch (e) {\n decodedQuery[name] = query[name];\n }\n });\n return decodedQuery;\n}\nconst PLUS_RE = /\\+/g; // %2B\n/**\n * https://github.com/vuejs/vue-router-next/blob/master/src/query.ts\n * @internal\n *\n * @param search - search string to parse\n * @returns a query object\n */\nfunction parseQuery(search) {\n const query = {};\n // avoid creating an object with an empty key and empty value\n // because of split('&')\n if (search === '' || search === '?')\n return query;\n const hasLeadingIM = search[0] === '?';\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\n for (let i = 0; i < searchParams.length; ++i) {\n // pre decode the + into space\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\n // allow the = character\n let eqPos = searchParam.indexOf('=');\n let key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\n let value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\n if (key in query) {\n // an extra variable for ts types\n let currentValue = query[key];\n if (!isArray(currentValue)) {\n currentValue = query[key] = [currentValue];\n }\n currentValue.push(value);\n }\n else {\n query[key] = value;\n }\n }\n return query;\n}\n\nfunction parseUrl(url) {\n const [path, querystring] = url.split('?', 2);\n return {\n path,\n query: parseQuery(querystring || ''),\n };\n}\n\nfunction parseNVueDataset(attr) {\n const dataset = {};\n if (attr) {\n Object.keys(attr).forEach((key) => {\n if (key.indexOf('data-') === 0) {\n dataset[key.replace('data-', '')] = attr[key];\n }\n });\n }\n return dataset;\n}\n\nfunction plusReady(callback) {\n if (!isFunction(callback)) {\n return;\n }\n if (window.plus) {\n return callback();\n }\n document.addEventListener('plusready', callback);\n}\n\nclass DOMException extends Error {\n constructor(message) {\n super(message);\n this.name = 'DOMException';\n }\n}\n\nfunction normalizeEventType(type, options) {\n if (options) {\n if (options.capture) {\n type += 'Capture';\n }\n if (options.once) {\n type += 'Once';\n }\n if (options.passive) {\n type += 'Passive';\n }\n }\n return `on${capitalize(camelize(type))}`;\n}\nclass UniEvent {\n constructor(type, opts) {\n this.defaultPrevented = false;\n this.timeStamp = Date.now();\n this._stop = false;\n this._end = false;\n this.type = type;\n this.bubbles = !!opts.bubbles;\n this.cancelable = !!opts.cancelable;\n }\n preventDefault() {\n this.defaultPrevented = true;\n }\n stopImmediatePropagation() {\n this._end = this._stop = true;\n }\n stopPropagation() {\n this._stop = true;\n }\n}\nfunction createUniEvent(evt) {\n if (evt instanceof UniEvent) {\n return evt;\n }\n const [type] = parseEventName(evt.type);\n const uniEvent = new UniEvent(type, {\n bubbles: false,\n cancelable: false,\n });\n extend(uniEvent, evt);\n return uniEvent;\n}\nclass UniEventTarget {\n constructor() {\n this.listeners = Object.create(null);\n }\n dispatchEvent(evt) {\n const listeners = this.listeners[evt.type];\n if (!listeners) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(formatLog('dispatchEvent', this.nodeId), evt.type, 'not found');\n }\n return false;\n }\n // 格式化事件类型\n const event = createUniEvent(evt);\n const len = listeners.length;\n for (let i = 0; i < len; i++) {\n listeners[i].call(this, event);\n if (event._end) {\n break;\n }\n }\n return event.cancelable && event.defaultPrevented;\n }\n addEventListener(type, listener, options) {\n type = normalizeEventType(type, options);\n (this.listeners[type] || (this.listeners[type] = [])).push(listener);\n }\n removeEventListener(type, callback, options) {\n type = normalizeEventType(type, options);\n const listeners = this.listeners[type];\n if (!listeners) {\n return;\n }\n const index = listeners.indexOf(callback);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseEventName(name) {\n let options;\n if (optionsModifierRE.test(name)) {\n options = {};\n let m;\n while ((m = name.match(optionsModifierRE))) {\n name = name.slice(0, name.length - m[0].length);\n options[m[0].toLowerCase()] = true;\n }\n }\n return [hyphenate(name.slice(2)), options];\n}\n\nconst EventModifierFlags = /*#__PURE__*/ (() => {\n return {\n stop: 1,\n prevent: 1 << 1,\n self: 1 << 2,\n };\n})();\nfunction encodeModifier(modifiers) {\n let flag = 0;\n if (modifiers.includes('stop')) {\n flag |= EventModifierFlags.stop;\n }\n if (modifiers.includes('prevent')) {\n flag |= EventModifierFlags.prevent;\n }\n if (modifiers.includes('self')) {\n flag |= EventModifierFlags.self;\n }\n return flag;\n}\n\nconst NODE_TYPE_PAGE = 0;\nconst NODE_TYPE_ELEMENT = 1;\nconst NODE_TYPE_TEXT = 3;\nconst NODE_TYPE_COMMENT = 8;\nfunction sibling(node, type) {\n const { parentNode } = node;\n if (!parentNode) {\n return null;\n }\n const { childNodes } = parentNode;\n return childNodes[childNodes.indexOf(node) + (type === 'n' ? 1 : -1)] || null;\n}\nfunction removeNode(node) {\n const { parentNode } = node;\n if (parentNode) {\n const { childNodes } = parentNode;\n const index = childNodes.indexOf(node);\n if (index > -1) {\n node.parentNode = null;\n childNodes.splice(index, 1);\n }\n }\n}\nfunction checkNodeId(node) {\n if (!node.nodeId && node.pageNode) {\n node.nodeId = node.pageNode.genId();\n }\n}\n// 为优化性能,各平台不使用proxy来实现node的操作拦截,而是直接通过pageNode定制\nclass UniNode extends UniEventTarget {\n constructor(nodeType, nodeName, container) {\n super();\n this.pageNode = null;\n this.parentNode = null;\n this._text = null;\n if (container) {\n const { pageNode } = container;\n if (pageNode) {\n this.pageNode = pageNode;\n this.nodeId = pageNode.genId();\n !pageNode.isUnmounted && pageNode.onCreate(this, nodeName);\n }\n }\n this.nodeType = nodeType;\n this.nodeName = nodeName;\n this.childNodes = [];\n }\n get firstChild() {\n return this.childNodes[0] || null;\n }\n get lastChild() {\n const { childNodes } = this;\n const length = childNodes.length;\n return length ? childNodes[length - 1] : null;\n }\n get nextSibling() {\n return sibling(this, 'n');\n }\n get nodeValue() {\n return null;\n }\n set nodeValue(_val) { }\n get textContent() {\n return this._text || '';\n }\n set textContent(text) {\n this._text = text;\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onTextContent(this, text);\n }\n }\n get parentElement() {\n const { parentNode } = this;\n if (parentNode && parentNode.nodeType === NODE_TYPE_ELEMENT) {\n return parentNode;\n }\n return null;\n }\n get previousSibling() {\n return sibling(this, 'p');\n }\n appendChild(newChild) {\n return this.insertBefore(newChild, null);\n }\n cloneNode(deep) {\n const cloned = extend(Object.create(Object.getPrototypeOf(this)), this);\n const { attributes } = cloned;\n if (attributes) {\n cloned.attributes = extend({}, attributes);\n }\n if (deep) {\n cloned.childNodes = cloned.childNodes.map((childNode) => childNode.cloneNode(true));\n }\n return cloned;\n }\n insertBefore(newChild, refChild) {\n // 先从现在的父节点移除(注意:不能触发onRemoveChild,否则会生成先remove该 id,再 insert)\n removeNode(newChild);\n newChild.pageNode = this.pageNode;\n newChild.parentNode = this;\n checkNodeId(newChild);\n const { childNodes } = this;\n if (refChild) {\n const index = childNodes.indexOf(refChild);\n if (index === -1) {\n throw new DOMException(`Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.`);\n }\n childNodes.splice(index, 0, newChild);\n }\n else {\n childNodes.push(newChild);\n }\n return this.pageNode && !this.pageNode.isUnmounted\n ? this.pageNode.onInsertBefore(this, newChild, refChild)\n : newChild;\n }\n removeChild(oldChild) {\n const { childNodes } = this;\n const index = childNodes.indexOf(oldChild);\n if (index === -1) {\n throw new DOMException(`Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.`);\n }\n oldChild.parentNode = null;\n childNodes.splice(index, 1);\n return this.pageNode && !this.pageNode.isUnmounted\n ? this.pageNode.onRemoveChild(oldChild)\n : oldChild;\n }\n}\nconst ATTR_CLASS = 'class';\nconst ATTR_STYLE = 'style';\nconst ATTR_INNER_HTML = 'innerHTML';\nconst ATTR_TEXT_CONTENT = 'textContent';\nconst ATTR_V_SHOW = '.vShow';\nconst ATTR_V_OWNER_ID = '.vOwnerId';\nconst ATTR_V_RENDERJS = '.vRenderjs';\nconst ATTR_CHANGE_PREFIX = 'change:';\nclass UniBaseNode extends UniNode {\n constructor(nodeType, nodeName, container) {\n super(nodeType, nodeName, container);\n this.attributes = Object.create(null);\n this.style = null;\n this.vShow = null;\n this._html = null;\n }\n get className() {\n return (this.attributes[ATTR_CLASS] || '');\n }\n set className(val) {\n this.setAttribute(ATTR_CLASS, val);\n }\n get innerHTML() {\n return '';\n }\n set innerHTML(html) {\n this._html = html;\n }\n addEventListener(type, listener, options) {\n super.addEventListener(type, listener, options);\n if (this.pageNode && !this.pageNode.isUnmounted) {\n if (listener.wxsEvent) {\n this.pageNode.onAddWxsEvent(this, normalizeEventType(type, options), listener.wxsEvent, encodeModifier(listener.modifiers || []));\n }\n else {\n this.pageNode.onAddEvent(this, normalizeEventType(type, options), encodeModifier(listener.modifiers || []));\n }\n }\n }\n removeEventListener(type, callback, options) {\n super.removeEventListener(type, callback, options);\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onRemoveEvent(this, normalizeEventType(type, options));\n }\n }\n getAttribute(qualifiedName) {\n if (qualifiedName === ATTR_STYLE) {\n return this.style;\n }\n return this.attributes[qualifiedName];\n }\n removeAttribute(qualifiedName) {\n if (qualifiedName == ATTR_STYLE) {\n this.style = null;\n }\n else {\n delete this.attributes[qualifiedName];\n }\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onRemoveAttribute(this, qualifiedName);\n }\n }\n setAttribute(qualifiedName, value) {\n if (qualifiedName === ATTR_STYLE) {\n this.style = value;\n }\n else {\n this.attributes[qualifiedName] = value;\n }\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onSetAttribute(this, qualifiedName, value);\n }\n }\n toJSON({ attr, normalize, } = {}) {\n const { attributes, style, listeners, _text } = this;\n const res = {};\n if (Object.keys(attributes).length) {\n res.a = normalize ? normalize(attributes) : attributes;\n }\n const events = Object.keys(listeners);\n if (events.length) {\n let w = undefined;\n const e = {};\n events.forEach((name) => {\n const handlers = listeners[name];\n if (handlers.length) {\n // 可能存在多个 handler 且不同 modifiers 吗?\n const { wxsEvent, modifiers } = handlers[0];\n const modifier = encodeModifier(modifiers || []);\n if (!wxsEvent) {\n e[name] = modifier;\n }\n else {\n if (!w) {\n w = {};\n }\n w[name] = [normalize ? normalize(wxsEvent) : wxsEvent, modifier];\n }\n }\n });\n res.e = normalize ? normalize(e, false) : e;\n if (w) {\n res.w = normalize ? normalize(w, false) : w;\n }\n }\n if (style !== null) {\n res.s = normalize ? normalize(style) : style;\n }\n if (!attr) {\n res.i = this.nodeId;\n res.n = this.nodeName;\n }\n if (_text !== null) {\n res.t = normalize ? normalize(_text) : _text;\n }\n return res;\n }\n}\n\nclass UniCommentNode extends UniNode {\n constructor(text, container) {\n super(NODE_TYPE_COMMENT, '#comment', container);\n this._text = (process.env.NODE_ENV !== 'production') ? text : '';\n }\n toJSON(opts = {}) {\n // 暂时不传递 text 到 view 层,没啥意义,节省点数据量\n return opts.attr\n ? {}\n : {\n i: this.nodeId,\n };\n // return opts.attr\n // ? { t: this._text as string }\n // : {\n // i: this.nodeId!,\n // t: this._text as string,\n // }\n }\n}\n\nclass UniElement extends UniBaseNode {\n constructor(nodeName, container) {\n super(NODE_TYPE_ELEMENT, nodeName.toUpperCase(), container);\n this.tagName = this.nodeName;\n }\n}\nclass UniInputElement extends UniElement {\n get value() {\n return this.getAttribute('value');\n }\n set value(val) {\n this.setAttribute('value', val);\n }\n}\nclass UniTextAreaElement extends UniInputElement {\n}\n\nclass UniTextNode extends UniBaseNode {\n constructor(text, container) {\n super(NODE_TYPE_TEXT, '#text', container);\n this._text = text;\n }\n get nodeValue() {\n return this._text || '';\n }\n set nodeValue(text) {\n this._text = text;\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onNodeValue(this, text);\n }\n }\n}\n\nconst forcePatchProps = {\n AD: ['data'],\n 'AD-DRAW': ['data'],\n 'LIVE-PLAYER': ['picture-in-picture-mode'],\n MAP: [\n 'markers',\n 'polyline',\n 'circles',\n 'controls',\n 'include-points',\n 'polygons',\n ],\n PICKER: ['range', 'value'],\n 'PICKER-VIEW': ['value'],\n 'RICH-TEXT': ['nodes'],\n VIDEO: ['danmu-list', 'header'],\n 'WEB-VIEW': ['webview-styles'],\n};\nconst forcePatchPropKeys = ['animation'];\n\nconst forcePatchProp = (el, key) => {\n if (forcePatchPropKeys.indexOf(key) > -1) {\n return true;\n }\n const keys = forcePatchProps[el.nodeName];\n if (keys && keys.indexOf(key) > -1) {\n return true;\n }\n return false;\n};\n\nconst ACTION_TYPE_PAGE_CREATE = 1;\nconst ACTION_TYPE_PAGE_CREATED = 2;\nconst ACTION_TYPE_CREATE = 3;\nconst ACTION_TYPE_INSERT = 4;\nconst ACTION_TYPE_REMOVE = 5;\nconst ACTION_TYPE_SET_ATTRIBUTE = 6;\nconst ACTION_TYPE_REMOVE_ATTRIBUTE = 7;\nconst ACTION_TYPE_ADD_EVENT = 8;\nconst ACTION_TYPE_REMOVE_EVENT = 9;\nconst ACTION_TYPE_SET_TEXT = 10;\nconst ACTION_TYPE_ADD_WXS_EVENT = 12;\nconst ACTION_TYPE_PAGE_SCROLL = 15;\nconst ACTION_TYPE_EVENT = 20;\n\n/**\n * 需要手动传入 timer,主要是解决 App 平台的定制 timer\n */\nfunction debounce(fn, delay, { clearTimeout, setTimeout }) {\n let timeout;\n const newFn = function () {\n clearTimeout(timeout);\n const timerFn = () => fn.apply(this, arguments);\n timeout = setTimeout(timerFn, delay);\n };\n newFn.cancel = function () {\n clearTimeout(timeout);\n };\n return newFn;\n}\n\nclass EventChannel {\n constructor(id, events) {\n this.id = id;\n this.listener = {};\n this.emitCache = [];\n if (events) {\n Object.keys(events).forEach((name) => {\n this.on(name, events[name]);\n });\n }\n }\n emit(eventName, ...args) {\n const fns = this.listener[eventName];\n if (!fns) {\n return this.emitCache.push({\n eventName,\n args,\n });\n }\n fns.forEach((opt) => {\n opt.fn.apply(opt.fn, args);\n });\n this.listener[eventName] = fns.filter((opt) => opt.type !== 'once');\n }\n on(eventName, fn) {\n this._addListener(eventName, 'on', fn);\n this._clearCache(eventName);\n }\n once(eventName, fn) {\n this._addListener(eventName, 'once', fn);\n this._clearCache(eventName);\n }\n off(eventName, fn) {\n const fns = this.listener[eventName];\n if (!fns) {\n return;\n }\n if (fn) {\n for (let i = 0; i < fns.length;) {\n if (fns[i].fn === fn) {\n fns.splice(i, 1);\n i--;\n }\n i++;\n }\n }\n else {\n delete this.listener[eventName];\n }\n }\n _clearCache(eventName) {\n for (let index = 0; index < this.emitCache.length; index++) {\n const cache = this.emitCache[index];\n const _name = eventName\n ? cache.eventName === eventName\n ? eventName\n : null\n : cache.eventName;\n if (!_name)\n continue;\n const location = this.emit.apply(this, [_name, ...cache.args]);\n if (typeof location === 'number') {\n this.emitCache.pop();\n continue;\n }\n this.emitCache.splice(index, 1);\n index--;\n }\n }\n _addListener(eventName, type, fn) {\n (this.listener[eventName] || (this.listener[eventName] = [])).push({\n fn,\n type,\n });\n }\n}\n\nconst PAGE_HOOKS = [\n ON_INIT,\n ON_LOAD,\n ON_SHOW,\n ON_HIDE,\n ON_UNLOAD,\n ON_BACK_PRESS,\n ON_PAGE_SCROLL,\n ON_TAB_ITEM_TAP,\n ON_REACH_BOTTOM,\n ON_PULL_DOWN_REFRESH,\n ON_SHARE_TIMELINE,\n ON_SHARE_APP_MESSAGE,\n ON_SHARE_CHAT,\n ON_ADD_TO_FAVORITES,\n ON_SAVE_EXIT_STATE,\n ON_NAVIGATION_BAR_BUTTON_TAP,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED,\n];\nfunction isRootImmediateHook(name) {\n const PAGE_SYNC_HOOKS = [ON_LOAD, ON_SHOW];\n return PAGE_SYNC_HOOKS.indexOf(name) > -1;\n}\n// isRootImmediateHookX deprecated\nfunction isRootHook(name) {\n return PAGE_HOOKS.indexOf(name) > -1;\n}\nconst UniLifecycleHooks = [\n ON_SHOW,\n ON_HIDE,\n ON_LAUNCH,\n ON_ERROR,\n ON_THEME_CHANGE,\n ON_PAGE_NOT_FOUND,\n ON_UNHANDLE_REJECTION,\n ON_EXIT,\n ON_INIT,\n ON_LOAD,\n ON_READY,\n ON_UNLOAD,\n ON_RESIZE,\n ON_BACK_PRESS,\n ON_PAGE_SCROLL,\n ON_TAB_ITEM_TAP,\n ON_REACH_BOTTOM,\n ON_PULL_DOWN_REFRESH,\n ON_SHARE_TIMELINE,\n ON_ADD_TO_FAVORITES,\n ON_SHARE_APP_MESSAGE,\n ON_SHARE_CHAT,\n ON_SAVE_EXIT_STATE,\n ON_NAVIGATION_BAR_BUTTON_TAP,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED,\n];\nconst MINI_PROGRAM_PAGE_RUNTIME_HOOKS = /*#__PURE__*/ (() => {\n return {\n onPageScroll: 1,\n onShareAppMessage: 1 << 1,\n onShareTimeline: 1 << 2,\n };\n})();\nfunction isUniLifecycleHook(name, value, checkType = true) {\n // 检查类型\n if (checkType && !isFunction(value)) {\n return false;\n }\n if (UniLifecycleHooks.indexOf(name) > -1) {\n // 已预定义\n return true;\n }\n else if (name.indexOf('on') === 0) {\n // 以 on 开头\n return true;\n }\n return false;\n}\n\nlet vueApp;\nconst createVueAppHooks = [];\n/**\n * 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑\n */\nfunction onCreateVueApp(hook) {\n // TODO 每个 nvue 页面都会触发\n if (vueApp) {\n return hook(vueApp);\n }\n createVueAppHooks.push(hook);\n}\nfunction invokeCreateVueAppHook(app) {\n vueApp = app;\n createVueAppHooks.forEach((hook) => hook(app));\n}\nconst invokeCreateErrorHandler = once((app, createErrorHandler) => {\n // 不再判断开发者是否监听了onError,直接返回 createErrorHandler,内部 errorHandler 会调用开发者自定义的 errorHandler,以及判断开发者是否监听了onError\n return createErrorHandler(app);\n});\n\nconst E = function () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n};\nE.prototype = {\n _id: 1,\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx,\n _id: this._id,\n });\n return this._id++;\n },\n once: function (name, callback, ctx) {\n var self = this;\n function listener() {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n return this;\n },\n off: function (name, event) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n if (evts && event) {\n for (var i = evts.length - 1; i >= 0; i--) {\n if (evts[i].fn === event ||\n evts[i].fn._ === event ||\n evts[i]._id === event) {\n evts.splice(i, 1);\n break;\n }\n }\n liveEvents = evts;\n }\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n liveEvents.length ? (e[name] = liveEvents) : delete e[name];\n return this;\n },\n};\nvar E$1 = E;\n\nconst borderStyles = {\n black: 'rgba(0,0,0,0.4)',\n white: 'rgba(255,255,255,0.4)',\n};\nfunction normalizeTabBarStyles(borderStyle) {\n if (borderStyle && borderStyle in borderStyles) {\n return borderStyles[borderStyle];\n }\n return borderStyle;\n}\nfunction normalizeTitleColor(titleColor) {\n return titleColor === 'black' ? '#000000' : '#ffffff';\n}\nfunction resolveStringStyleItem(modeStyle, styleItem, key) {\n if (isString(styleItem) && styleItem.startsWith('@')) {\n const _key = styleItem.replace('@', '');\n let _styleItem = modeStyle[_key] || styleItem;\n switch (key) {\n case 'titleColor':\n _styleItem = normalizeTitleColor(_styleItem);\n break;\n case 'borderStyle':\n _styleItem = normalizeTabBarStyles(_styleItem);\n break;\n }\n return _styleItem;\n }\n return styleItem;\n}\nfunction normalizeStyles(pageStyle, themeConfig = {}, mode = 'light') {\n const modeStyle = themeConfig[mode];\n const styles = {};\n if (typeof modeStyle === 'undefined' || !pageStyle)\n return pageStyle;\n Object.keys(pageStyle).forEach((key) => {\n const styleItem = pageStyle[key]; // Object Array String\n const parseStyleItem = () => {\n if (isPlainObject(styleItem))\n return normalizeStyles(styleItem, themeConfig, mode);\n if (isArray(styleItem))\n return styleItem.map((item) => {\n if (typeof item === 'object')\n return normalizeStyles(item, themeConfig, mode);\n return resolveStringStyleItem(modeStyle, item);\n });\n return resolveStringStyleItem(modeStyle, styleItem, key);\n };\n styles[key] = parseStyleItem();\n });\n return styles;\n}\n\nfunction getEnvLocale() {\n const { env } = process;\n const lang = env.LC_ALL || env.LC_MESSAGES || env.LANG || env.LANGUAGE;\n return (lang && lang.replace(/[.:].*/, '')) || 'en';\n}\n\nconst isStringIntegerKey = (key) => typeof key === 'string' &&\n key !== 'NaN' &&\n key[0] !== '-' &&\n '' + parseInt(key, 10) === key;\nconst isNumberIntegerKey = (key) => typeof key === 'number' &&\n !isNaN(key) &&\n key >= 0 &&\n parseInt(key + '', 10) === key;\n/**\n * 用于替代@vue/shared的isIntegerKey,原始方法在鸿蒙arkts中会引发bug。根本原因是arkts的数组的key是数字而不是字符串。\n * 目前这个方法使用的地方都和数组有关,切记不能挪作他用。\n * @param key\n * @returns\n */\nconst isIntegerKey = (key) => isNumberIntegerKey(key) || isStringIntegerKey(key);\n\nexport { ACTION_TYPE_ADD_EVENT, ACTION_TYPE_ADD_WXS_EVENT, ACTION_TYPE_CREATE, ACTION_TYPE_EVENT, ACTION_TYPE_INSERT, ACTION_TYPE_PAGE_CREATE, ACTION_TYPE_PAGE_CREATED, ACTION_TYPE_PAGE_SCROLL, ACTION_TYPE_REMOVE, ACTION_TYPE_REMOVE_ATTRIBUTE, ACTION_TYPE_REMOVE_EVENT, ACTION_TYPE_SET_ATTRIBUTE, ACTION_TYPE_SET_TEXT, ATTR_CHANGE_PREFIX, ATTR_CLASS, ATTR_INNER_HTML, ATTR_STYLE, ATTR_TEXT_CONTENT, ATTR_V_OWNER_ID, ATTR_V_RENDERJS, ATTR_V_SHOW, BACKGROUND_COLOR, BUILT_IN_TAGS, BUILT_IN_TAG_NAMES, COMPONENT_NAME_PREFIX, COMPONENT_PREFIX, COMPONENT_SELECTOR_PREFIX, DATA_RE, E$1 as Emitter, EventChannel, EventModifierFlags, I18N_JSON_DELIMITERS, JSON_PROTOCOL, LINEFEED, MINI_PROGRAM_PAGE_RUNTIME_HOOKS, NAVBAR_HEIGHT, NODE_TYPE_COMMENT, NODE_TYPE_ELEMENT, NODE_TYPE_PAGE, NODE_TYPE_TEXT, NVUE_BUILT_IN_TAGS, NVUE_U_BUILT_IN_TAGS, OFF_HOST_THEME_CHANGE, OFF_THEME_CHANGE, ON_ADD_TO_FAVORITES, ON_APP_ENTER_BACKGROUND, ON_APP_ENTER_FOREGROUND, ON_BACK_PRESS, ON_ERROR, ON_EXIT, ON_HIDE, ON_HOST_THEME_CHANGE, ON_INIT, ON_KEYBOARD_HEIGHT_CHANGE, ON_LAUNCH, ON_LOAD, ON_NAVIGATION_BAR_BUTTON_TAP, ON_NAVIGATION_BAR_CHANGE, ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED, ON_PAGE_NOT_FOUND, ON_PAGE_SCROLL, ON_PULL_DOWN_REFRESH, ON_REACH_BOTTOM, ON_REACH_BOTTOM_DISTANCE, ON_READY, ON_RESIZE, ON_SAVE_EXIT_STATE, ON_SHARE_APP_MESSAGE, ON_SHARE_CHAT, ON_SHARE_TIMELINE, ON_SHOW, ON_TAB_ITEM_TAP, ON_THEME_CHANGE, ON_UNHANDLE_REJECTION, ON_UNLOAD, ON_WEB_INVOKE_APP_SERVICE, ON_WXS_INVOKE_CALL_METHOD, PLUS_RE, PRIMARY_COLOR, RENDERJS_MODULES, RESPONSIVE_MIN_WIDTH, SCHEME_RE, SELECTED_COLOR, SLOT_DEFAULT_NAME, TABBAR_HEIGHT, TAGS, UNI_SSR, UNI_SSR_DATA, UNI_SSR_GLOBAL_DATA, UNI_SSR_STORE, UNI_SSR_TITLE, UNI_STORAGE_LOCALE, UNI_UI_CONFLICT_TAGS, UVUE_BUILT_IN_TAGS, UVUE_HARMONY_BUILT_IN_TAGS, UVUE_IOS_BUILT_IN_TAGS, UVUE_WEB_BUILT_IN_TAGS, UniBaseNode, UniCommentNode, UniElement, UniEvent, UniInputElement, UniLifecycleHooks, UniNode, UniTextAreaElement, UniTextNode, VIRTUAL_HOST_CLASS, VIRTUAL_HOST_HIDDEN, VIRTUAL_HOST_ID, VIRTUAL_HOST_STYLE, WEB_INVOKE_APPSERVICE, WXS_MODULES, WXS_PROTOCOL, addFont, addLeadingSlash, borderStyles, cache, cacheStringFunction, callOptions, createIsCustomElement, createRpx2Unit, createUniEvent, customizeEvent, debounce, decode, decodedQuery, defaultMiniProgramRpx2Unit, defaultNVueRpx2Unit, defaultRpx2Unit, dynamicSlotName, forcePatchProp, formatDateTime, formatLog, getCustomDataset, getEnvLocale, getGlobal, getLen, getValueByDataPath, initCustomDatasetOnce, invokeArrayFns, invokeCreateErrorHandler, invokeCreateVueAppHook, isAppHarmonyUVueNativeTag, isAppIOSUVueNativeTag, isAppNVueNativeTag, isAppNativeTag, isAppUVueBuiltInEasyComponent, isAppUVueNativeTag, isBuiltInComponent, isComponentInternalInstance, isComponentTag, isH5CustomElement, isH5NativeTag, isIntegerKey, isMiniProgramNativeTag, isMiniProgramUVueNativeTag, isRootHook, isRootImmediateHook, isUniLifecycleHook, isUniXElement, normalizeClass, normalizeDataset, normalizeEventType, normalizeProps, normalizeStyle, normalizeStyles, normalizeTabBarStyles, normalizeTarget, normalizeTitleColor, onCreateVueApp, once, parseEventName, parseNVueDataset, parseQuery, parseUrl, passive, plusReady, removeLeadingSlash, resolveComponentInstance, resolveOwnerEl, resolveOwnerVm, sanitise, scrollTo, sortObject, stringifyQuery, updateElementStyle };\n","import { isRootHook, getValueByDataPath, isUniLifecycleHook, ON_ERROR, UniLifecycleHooks, invokeCreateErrorHandler, dynamicSlotName } from '@dcloudio/uni-shared';\nimport { NOOP, extend, isSymbol, isObject, def, hasChanged, isFunction, isArray, isPromise, camelize, capitalize, EMPTY_OBJ, remove, toHandlerKey, hasOwn, hyphenate, isReservedProp, toRawType, isString, normalizeClass, normalizeStyle, isOn, toTypeString, isMap, isIntegerKey, isSet, isPlainObject, makeMap, invokeArrayFns, isBuiltInDirective, looseToNumber, NO, EMPTY_ARR, isModelListener, toNumber, toDisplayString } from '@vue/shared';\nexport { EMPTY_OBJ, camelize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\n/**\n* @dcloudio/uni-mp-vue v3.4.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n\nfunction warn$2(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n constructor(fn, trigger, scheduler, scope) {\n this.fn = fn;\n this.trigger = trigger;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n /**\n * @internal\n */\n this._dirtyLevel = 4;\n /**\n * @internal\n */\n this._trackId = 0;\n /**\n * @internal\n */\n this._runnings = 0;\n /**\n * @internal\n */\n this._shouldSchedule = false;\n /**\n * @internal\n */\n this._depsLength = 0;\n recordEffectScope(this, scope);\n }\n get dirty() {\n if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {\n this._dirtyLevel = 1;\n pauseTracking();\n for (let i = 0; i < this._depsLength; i++) {\n const dep = this.deps[i];\n if (dep.computed) {\n triggerComputed(dep.computed);\n if (this._dirtyLevel >= 4) {\n break;\n }\n }\n }\n if (this._dirtyLevel === 1) {\n this._dirtyLevel = 0;\n }\n resetTracking();\n }\n return this._dirtyLevel >= 4;\n }\n set dirty(v) {\n this._dirtyLevel = v ? 4 : 0;\n }\n run() {\n this._dirtyLevel = 0;\n if (!this.active) {\n return this.fn();\n }\n let lastShouldTrack = shouldTrack;\n let lastEffect = activeEffect;\n try {\n shouldTrack = true;\n activeEffect = this;\n this._runnings++;\n preCleanupEffect(this);\n return this.fn();\n } finally {\n postCleanupEffect(this);\n this._runnings--;\n activeEffect = lastEffect;\n shouldTrack = lastShouldTrack;\n }\n }\n stop() {\n var _a;\n if (this.active) {\n preCleanupEffect(this);\n postCleanupEffect(this);\n (_a = this.onStop) == null ? void 0 : _a.call(this);\n this.active = false;\n }\n }\n}\nfunction triggerComputed(computed) {\n return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n effect2._trackId++;\n effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n if (effect2.deps.length > effect2._depsLength) {\n for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n cleanupDepEffect(effect2.deps[i], effect2);\n }\n effect2.deps.length = effect2._depsLength;\n }\n}\nfunction cleanupDepEffect(dep, effect2) {\n const trackId = dep.get(effect2);\n if (trackId !== void 0 && effect2._trackId !== trackId) {\n dep.delete(effect2);\n if (dep.size === 0) {\n dep.cleanup();\n }\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn, NOOP, () => {\n if (_effect.dirty) {\n _effect.run();\n }\n });\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n pauseScheduleStack++;\n}\nfunction resetScheduling() {\n pauseScheduleStack--;\n while (!pauseScheduleStack && queueEffectSchedulers.length) {\n queueEffectSchedulers.shift()();\n }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n var _a;\n if (dep.get(effect2) !== effect2._trackId) {\n dep.set(effect2, effect2._trackId);\n const oldDep = effect2.deps[effect2._depsLength];\n if (oldDep !== dep) {\n if (oldDep) {\n cleanupDepEffect(oldDep, effect2);\n }\n effect2.deps[effect2._depsLength++] = dep;\n } else {\n effect2._depsLength++;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n var _a;\n pauseScheduling();\n for (const effect2 of dep.keys()) {\n let tracking;\n if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);\n effect2._dirtyLevel = dirtyLevel;\n }\n if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n effect2.trigger();\n if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {\n effect2._shouldSchedule = false;\n if (effect2.scheduler) {\n queueEffectSchedulers.push(effect2.scheduler);\n }\n }\n }\n }\n resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n const dep = /* @__PURE__ */ new Map();\n dep.cleanup = cleanup;\n dep.computed = computed;\n return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n }\n trackEffect(\n activeEffect,\n dep,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key\n } : void 0\n );\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n pauseScheduling();\n for (const dep of deps) {\n if (dep) {\n triggerEffects(\n dep,\n 4,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : void 0\n );\n }\n }\n resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n var _a;\n return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n pauseScheduling();\n const res = toRaw(this)[key].apply(this, args);\n resetScheduling();\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the reciever is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\"];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn$2(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n warn$2(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nconst COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this.getter = getter;\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this.effect = new ReactiveEffect(\n () => getter(this._value),\n () => triggerRefValue(\n this,\n this.effect._dirtyLevel === 2 ? 2 : 3\n )\n );\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {\n triggerRefValue(self, 4);\n }\n trackRefValue(self);\n if (self.effect._dirtyLevel >= 2) {\n if (!!(process.env.NODE_ENV !== \"production\") && this._warnRecursive) {\n warn$2(COMPUTED_SIDE_EFFECT_WARN, `\n\ngetter: `, this.getter);\n }\n triggerRefValue(self, 2);\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n get _dirty() {\n return this.effect.dirty;\n }\n set _dirty(v) {\n this.effect.dirty = v;\n }\n // #endregion\n}\nfunction computed$1(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn$2(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nfunction trackRefValue(ref2) {\n var _a;\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n trackEffect(\n activeEffect,\n (_a = ref2.dep) != null ? _a : ref2.dep = createDep(\n () => ref2.dep = void 0,\n ref2 instanceof ComputedRefImpl ? ref2 : void 0\n ),\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"get\",\n key: \"value\"\n } : void 0\n );\n }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 4, newVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n triggerEffects(\n dep,\n dirtyLevel,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal\n } : void 0\n );\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, 4, newVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, 4, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn$2(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn$1(msg, ...args) {\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings[type] || type : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings[type] || type;\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n console.error(err);\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick$1(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.pre) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction hasQueueJob(job) {\n return queue.indexOf(job) > -1;\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools && typeof devtools.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n // fixed by xxxxxx\n // 为 0 是 App,无 parent 是 Page 指向 App\n component.uid === 0 ? void 0 : component.parent ? component.parent.uid : 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx)\n return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nfunction markAttrsAccessed() {\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n immediate,\n deep,\n flush,\n once,\n onTrack,\n onTrigger\n} = EMPTY_OBJ) {\n if (cb && once) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n unwatch();\n };\n }\n if (!!(process.env.NODE_ENV !== \"production\") && deep !== void 0 && typeof deep === \"number\") {\n warn$1(\n `watch() \"deep\" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const warnInvalidSource = (s) => {\n warn$1(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const instance = currentInstance;\n const reactiveGetter = (source2) => deep === true ? source2 : (\n // for deep: false, only traverse root-level properties\n traverse(source2, deep === false ? 1 : void 0)\n );\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2);\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = () => callWithErrorHandling(source, instance, 2);\n } else {\n getter = () => {\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(\n source,\n instance,\n 3,\n [onCleanup]\n );\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4);\n cleanup = effect.onStop = void 0;\n };\n };\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active || !effect.dirty) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n } else {\n effect.run();\n }\n };\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === \"sync\") {\n scheduler = job;\n } else if (flush === \"post\") {\n scheduler = () => queuePostRenderEffect$1(job, instance && instance.suspense);\n } else {\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, NOOP, scheduler);\n const scope = getCurrentScope();\n const unwatch = () => {\n effect.stop();\n if (scope) {\n remove(scope.effects, effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n if (cb) {\n if (immediate) {\n job();\n } else {\n oldValue = effect.run();\n }\n } else if (flush === \"post\") {\n queuePostRenderEffect$1(\n effect.run.bind(effect),\n instance && instance.suspense\n );\n } else {\n effect.run();\n }\n return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, depth, currentDepth = 0, seen) {\n if (!isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n if (depth && depth > 0) {\n if (currentDepth >= depth) {\n return value;\n }\n currentDepth++;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, depth, currentDepth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, currentDepth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, currentDepth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, currentDepth, seen);\n }\n }\n return value;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: void 0,\n warnHandler: void 0,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: /* @__PURE__ */ Object.create(null),\n optionsCache: /* @__PURE__ */ new WeakMap(),\n propsCache: /* @__PURE__ */ new WeakMap(),\n emitsCache: /* @__PURE__ */ new WeakMap()\n };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = extend({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = /* @__PURE__ */ new WeakSet();\n const app = context.app = {\n _uid: uid$1++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `app.config cannot be replaced. Modify individual options instead.`\n );\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`Plugin has already been applied to target app.`);\n } else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n } else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `A plugin must either be a function or an object with an \"install\" function.`\n );\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n );\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Mixins are only available in builds supporting Options API\");\n }\n return app;\n },\n component(name, component) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n warn$1(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n warn$1(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n // fixed by xxxxxx\n mount() {\n },\n // fixed by xxxxxx\n unmount() {\n },\n provide(key, value) {\n if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n warn$1(\n `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n );\n }\n context.provides[key] = value;\n return app;\n },\n runWithContext(fn) {\n const lastApp = currentApp;\n currentApp = app;\n try {\n return fn();\n } finally {\n currentApp = lastApp;\n }\n }\n };\n return app;\n };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`provide() can only be used inside setup().`);\n }\n } else {\n let provides = currentInstance.provides;\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n provides[key] = value;\n if (currentInstance.type.mpType === \"app\") {\n currentInstance.appContext.app.provide(key, value);\n }\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n const instance = currentInstance || currentRenderingInstance;\n if (instance || currentApp) {\n const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;\n if (provides && key in provides) {\n return provides[key];\n } else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`injection \"${String(key)}\" not found.`);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`inject() can only be used inside setup() or functional components.`);\n }\n}\nfunction hasInjectionContext() {\n return !!(currentInstance || currentRenderingInstance || currentApp);\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n if (isRootHook(type)) {\n target = target.root;\n }\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(\n (ErrorTypeStrings[type] || type.replace(/^on/, \"\")).replace(/ hook$/, \"\")\n );\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (``)\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n // fixed by xxxxxx vue-i18n 在 dev 模式,访问了 $el,故模拟一个假的\n // $el: i => i.vnode.el,\n $el: (i) => i.__$el || (i.__$el = {}),\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n // $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy!)),// fixed by xxxxxx\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance, \"get\", key);\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate