From 14bbe243434d2ef9f37f414545c73d76178af7b3 Mon Sep 17 00:00:00 2001 From: renyt <renyt@troyrc.com> Date: Thu, 8 May 2025 18:26:27 +0800 Subject: [PATCH 1/4] 1 --- pages/index/.DS_Store | Bin 6148 -> 0 bytes pages/index/index.vue | 222 +++++++++++++++++++++++++++++------------- 2 files changed, 155 insertions(+), 67 deletions(-) delete mode 100644 pages/index/.DS_Store diff --git a/pages/index/.DS_Store b/pages/index/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**<q8>++&mCkOWA81W14cNZ<zv;LbK1Poaz?KmsK2CSc!( z0ynLxE!0092;Krf2c+FF_Fe*7ECH>lEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0<F0fCPF1$Cyrb|F7^5{eNG?83~ZUUlGt@xh*qZDeu<Z%US-OSsOPv j)R!Z4KLME7ReXlK;d!wEw5GODWMKRea10D2@KpjYNUI8I diff --git a/pages/index/index.vue b/pages/index/index.vue index 43ae4de..9fff1df 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -2,17 +2,12 @@ <view> <!-- 定义canvas画布 // 设置canvas大小为200x200像素 --> <!-- // @touchstart="handleCanvasTouch" --> - <canvas - @touchstart="handleTouchStart" - @touchmove="handleTouchMove" - @touchend="handleTouchEnd" - :style="{ + <canvas @touchstart="handleTouchStart" @touchmove="handleTouchMove" @touchend="handleTouchEnd" :style="{ width: 1000 + 'px', height: 800 + 'px', transform: `translate(${offsetX}px, ${offsetY}px) scale(${scale})` - }" - canvas-id="canvas" id="canvas" ></canvas> - <!-- style="border: 1px solid red;height: 600px;width: 100vw;" --> + }" canvas-id="canvas" id="canvas"></canvas> + <!-- style="border: 1px solid red;height: 600px;width: 100vw;" --> <image src="https://assets.sx25.troyrc.com/sx25/images/events/XBDT.jpg"></image> <!-- 添加一个按钮,用于触发绘图 --> <button @click="handleDraw">点击绘制圆形</button> @@ -25,7 +20,9 @@ onMounted, getCurrentInstance } from 'vue' - import { onReady } from '@dcloudio/uni-app' + import { + onReady + } from '@dcloudio/uni-app' const canvasWidth = ref(375) // 动态设置Canvas宽度 const canvasHeight = ref(400) // 动态设置Canvas高度 @@ -38,7 +35,28 @@ const startY = ref(0) const isDragging = ref(false) const imgUrl = ref('https://assets.sx25.troyrc.com/sx25/images/events/XBDT.jpg'); // 修改为ref - + // 定义图形数组 + const blocks = ref([{ + points: [{ + x: 50, + y: 50 + }, // 左下角点 + { + x: 150, + y: 50 + }, // 右下角点 + { + x: 200, + y: 100 + }, // 右上角点 + { + x: 100, + y: 100 + }, // 左上角点 + ], + message: '点击了四边形', + type: 'quadrilateral' + }]); async function draw() { const ctx = uni.createCanvasContext('canvas', instance) // 创建canvas绘图上下文 ctx.scale(scale.value, scale.value); @@ -46,7 +64,26 @@ src: imgUrl.value, }) ctx.drawImage(res.path, 0, 0); - + + // 绘制每个图形 + blocks.value.forEach((block) => { + ctx.beginPath(); + ctx.fillStyle = block.color; + + switch (block.type) { + case 'quadrilateral': // 四边形 + ctx.moveTo(block.points[0].x, block.points[0].y); + for (let i = 1; i < block.points.length; i++) { + ctx.lineTo(block.points[i].x, block.points[i].y); + } + ctx.closePath(); + break; + + } + + ctx.stroke(); // 绘制边框 + }); + // ctx.beginPath(); // ctx.moveTo(50, 50); // 左下角点 // ctx.lineTo(150, 50); // 右下角点 @@ -54,7 +91,7 @@ // ctx.lineTo(100, 100); // 左上角点 // ctx.closePath(); // 闭合路径 // ctx.stroke(); // 绘制边框 - + // 先不删 // let xoffset = 0, yoffset = 0, flag = false; // polygonList.forEach((level, index) => { @@ -77,67 +114,98 @@ // }) ctx.draw() } - - // 处理canvas触摸事件 - function handleCanvasTouch(event) { - // 获取触摸点的坐标 - const x = event.touches[0].x; - const y = event.touches[0].y; - console.log(x,y,'12'); - - } - + // 处理canvas触摸事件 + function handleCanvasTouch(event) { + // 获取触摸点的坐标 + const x = event.touches[0].x; + const y = event.touches[0].y; + console.log(x, y, '12'); + + } + + // 触摸开始 const handleTouchStart = (e) => { - console.log('handleTouchStart') - if (e.touches.length === 1) { - // 单指拖动 - startX.value = e.touches[0].clientX - offsetX.value - startY.value = e.touches[0].clientY - offsetY.value - isDragging.value = true - } else if (e.touches.length === 2) { - // 双指缩放 - const x1 = e.touches[0].clientX - const y1 = e.touches[0].clientY - const x2 = e.touches[1].clientX - const y2 = e.touches[1].clientY - lastDistance.value = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)) - } + const x = e.touches[0].x; + const y = e.touches[0].y; + + // 判断点击位置 + blocks.value.forEach((block) => { + if (isPointInQuadrilateral(x, y, block.points)) { + uni.showModal({ + title: '提示', + content: block.message, + showCancel: true, // 显示取消按钮 + success: (res) => { + if (res.confirm) { + console.log('用户点击了“确定”按钮'); + } else if (res.cancel) { + console.log('用户点击了“取消”按钮'); + } + }, + }); + } + }); + if (e.touches.length === 1) { + // 单指拖动 + startX.value = e.touches[0].clientX - offsetX.value + startY.value = e.touches[0].clientY - offsetY.value + isDragging.value = true + } else if (e.touches.length === 2) { + // 双指缩放 + // const x1 = e.touches[0].clientX + // const y1 = e.touches[0].clientY + // const x2 = e.touches[1].clientX + // const y2 = e.touches[1].clientY + // lastDistance.value = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)) + // 双指缩放逻辑... + + const x1 = e.touches[0].clientX, + y1 = e.touches[0].clientY; + const x2 = e.touches[1].clientX, + y2 = e.touches[1].clientY; + const distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); + if (lastDistance.value > 0) { + + scale.value = Math.min(Math.max(scale.value * (distance / lastDistance.value), 0.5), 4); + draw(); // 重新绘制Canvas内容 + } + } } - + // 触摸移动 const handleTouchMove = (e) => { console.log('handleTouchMove') - if (e.touches.length === 1 && isDragging.value) { - // 单指移动 - const currentX = e.touches[0].clientX - startX.value - const currentY = e.touches[0].clientY - startY.value - offsetX.value = currentX - offsetY.value = currentY - } else if (e.touches.length === 2) { - // 双指缩放 - const x1 = e.touches[0].clientX - const y1 = e.touches[0].clientY - const x2 = e.touches[1].clientX - const y2 = e.touches[1].clientY - const distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)) - - if (lastDistance.value > 0) { - const newScale = scale.value * (distance / lastDistance.value) - scale.value = Math.min(Math.max(newScale, 0.5), 4) // 限制缩放范围 - } - lastDistance.value = distance - } + if (e.touches.length === 1 && isDragging.value) { + // 单指移动 + const currentX = e.touches[0].clientX - startX.value + const currentY = e.touches[0].clientY - startY.value + offsetX.value = currentX + offsetY.value = currentY + } else if (e.touches.length === 2) { + // 双指缩放 + const x1 = e.touches[0].clientX + const y1 = e.touches[0].clientY + const x2 = e.touches[1].clientX + const y2 = e.touches[1].clientY + const distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)) + + if (lastDistance.value > 0) { + const newScale = scale.value * (distance / lastDistance.value) + scale.value = Math.min(Math.max(newScale, 0.5), 4) // 限制缩放范围 + } + lastDistance.value = distance + } } - + // 触摸结束 const handleTouchEnd = () => { console.log('handleTouchEnd') - lastDistance.value = -1 - isDragging.value = false + lastDistance.value = -1 + isDragging.value = false } - + // 按钮点击事件处理函数 const handleDraw = () => { draw(); // 调用绘图函数 @@ -152,16 +220,36 @@ onReady(() => { console.log('onReadyonReady'); uni.downloadFile({ - url:imgUrl.value, - success: function (sres) { - console.log(sres,'sres'); + url: imgUrl.value, + success: function(sres) { + console.log(sres, 'sres'); imgUrl.value = sres.tempFilePath || sres.path draw() - },fail:function(fres){ - console.log('fres',fres) - } + }, + fail: function(fres) { + console.log('fres', fres) + } }) }) + // 判断点是否在四边形内 + function isPointInQuadrilateral(px, py, points) { + let inside = false; + const n = points.length; + let p1 = points[0]; + for (let i = 1; i <= n; i++) { + let p2 = points[i % n]; + if (py > Math.min(p1.y, p2.y) && py <= Math.max(p1.y, p2.y) && px <= Math.max(p1.x, p2.x)) { + if (p1.y !== p2.y) { + let xinters = (py - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x; + if (p1.x === p2.x || px <= xinters) { + inside = !inside; + } + } + } + p1 = p2; + } + return inside; + } </script> <style scoped> From dacfe9a0354d455ce0e52a805fa80a7d2390f4bf Mon Sep 17 00:00:00 2001 From: renyt <renyt@troyrc.com> Date: Fri, 9 May 2025 09:14:07 +0800 Subject: [PATCH 2/4] 1 --- pages/index/.DS_Store | Bin 0 -> 6148 bytes .../mp-weixin-devtools/index.js.map | 1 - .../pages/index/index.js.map | 1 - .../dist/dev/.sourcemap/mp-weixin/app.js.map | 1 - .../.sourcemap/mp-weixin/common/assets.js.map | 1 - .../.sourcemap/mp-weixin/common/vendor.js.map | 1 - .../dev/.sourcemap/mp-weixin/index.js.map | 1 - .../mp-weixin/pages/index/index.js.map | 1 - .../mp-weixin/pages/index/index2.js.map | 1 - .../mp-weixin/pages/index/indexFu.js.map | 1 - .../mp-weixin/pages/index/index_step4.js.map | 1 - .../mp-weixin/pages/index/step2.js.map | 1 - .../.sourcemap/mp-weixin/static/canvas.js.map | 1 - unpackage/dist/dev/mp-weixin/app.js | 28 - unpackage/dist/dev/mp-weixin/app.json | 14 - unpackage/dist/dev/mp-weixin/app.wxss | 3 - unpackage/dist/dev/mp-weixin/common/vendor.js | 7743 ----------------- unpackage/dist/dev/mp-weixin/index.js | 97 - .../dist/dev/mp-weixin/pages/index/index.js | 4 - .../dist/dev/mp-weixin/pages/index/index.json | 4 - .../dist/dev/mp-weixin/pages/index/index.wxml | 1 - .../dist/dev/mp-weixin/pages/index/index.wxss | 4 - .../dist/dev/mp-weixin/pages/index/index2.js | 4 - .../dev/mp-weixin/pages/index/index_step4.js | 42 - .../mp-weixin/pages/index/index_step4.json | 4 - .../mp-weixin/pages/index/index_step4.wxml | 1 - .../mp-weixin/pages/index/index_step4.wxss | 4 - .../dist/dev/mp-weixin/pages/index/step2.js | 16 - .../dist/dev/mp-weixin/pages/index/step2.json | 6 - .../dist/dev/mp-weixin/pages/index/step2.wxml | 1 - .../dist/dev/mp-weixin/pages/index/step2.wxss | 0 .../dist/dev/mp-weixin/project.config.json | 29 - .../dev/mp-weixin/project.private.config.json | 8 - .../dist/dev/mp-weixin/static/canvas.jpg | Bin 195625 -> 0 bytes unpackage/dist/dev/mp-weixin/static/logo.png | Bin 4023 -> 0 bytes 35 files changed, 8025 deletions(-) create mode 100644 pages/index/.DS_Store delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin-devtools/index.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin-devtools/pages/index/index.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/index.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index2.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/indexFu.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index_step4.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/step2.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/static/canvas.js.map delete mode 100644 unpackage/dist/dev/mp-weixin/app.js delete mode 100644 unpackage/dist/dev/mp-weixin/app.json delete mode 100644 unpackage/dist/dev/mp-weixin/app.wxss delete mode 100644 unpackage/dist/dev/mp-weixin/common/vendor.js delete mode 100644 unpackage/dist/dev/mp-weixin/index.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index.json delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index.wxml delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index.wxss delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index2.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index_step4.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index_step4.json delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index_step4.wxml delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/index_step4.wxss delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/step2.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/step2.json delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/step2.wxml delete mode 100644 unpackage/dist/dev/mp-weixin/pages/index/step2.wxss delete mode 100644 unpackage/dist/dev/mp-weixin/project.config.json delete mode 100644 unpackage/dist/dev/mp-weixin/project.private.config.json delete mode 100644 unpackage/dist/dev/mp-weixin/static/canvas.jpg delete mode 100644 unpackage/dist/dev/mp-weixin/static/logo.png diff --git a/pages/index/.DS_Store b/pages/index/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**<q8>++&mCkOWA81W14cNZ<zv;LbK1Poaz?KmsK2CSc!( z0ynLxE!0092;Krf2c+FF_Fe*7ECH>lEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0<F0fCPF1$Cyrb|F7^5{eNG?83~ZUUlGt@xh*qZDeu<Z%US-OSsOPv j)R!Z4KLME7ReXlK;d!wEw5GODWMKRea10D2@KpjYNUI8I literal 0 HcmV?d00001 diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/index.js.map deleted file mode 100644 index 5f0e34a..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":";","ignoreList":[]} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/pages/index/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/pages/index/index.js.map deleted file mode 100644 index 52301b2..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin-devtools/pages/index/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["wx","createPage","index","MiniProgramPage"],"sources":["cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["import MiniProgramPage from 'C:/Users/hp/Desktop/app/canvas/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"mappings":";;;;AACAA,EAAA,CAAGC,UAAA,CAAWC,KAAA,CAAeC,eAAA","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 deleted file mode 100644 index 171f7f6..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"app.js","sources":["App.vue"],"sourcesContent":["<script>\n\texport default {\n\t\tonLaunch: function() {\n\t\t\tconsole.log('App Launch')\n\t\t},\n\t\tonShow: function() {\n\t\t\tconsole.log('App Show')\n\t\t},\n\t\tonHide: function() {\n\t\t\tconsole.log('App Hide')\n\t\t}\n\t}\n</script>\n\n<style>\n\t/*每个页面公共css */\n</style>\n"],"names":["uni"],"mappings":";;;;;;;;AACC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,YAAY;AAAA,EACxB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,UAAU;AAAA,EACtB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACvB;AACD;;;;;;;;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map deleted file mode 100644 index 81c5d3f..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"assets.js","sources":["static/logo.png"],"sourcesContent":["export default \"__VITE_ASSET__46719607__\""],"names":[],"mappings":";AAAA,MAAe,aAAA;;"} \ 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 deleted file mode 100644 index 7a339a4..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"vendor.js","sources":["node_modules/@vue/shared/dist/shared.esm-bundler.js","node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js","node_modules/@dcloudio/uni-shared/dist/uni-shared.es.js","node_modules/@dcloudio/uni-mp-vue/dist/vue.runtime.esm.js","node_modules/@dcloudio/uni-mp-weixin/dist/uni.api.esm.js","node_modules/@dcloudio/uni-console/dist/index.esm.js","node_modules/@dcloudio/uni-mp-weixin/dist/uni.mp.esm.js","node_modules/@dcloudio/uni-app/dist/uni-app.es.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 = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n return src.replace(commentStripRE, \"\");\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length)\n return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex((item) => 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 // 如果存在,减去 <uni-page-head> 高度\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 <script setup> binding \"${key}\" from Options API.`);\n return false;\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n data[key] = value;\n return true;\n } else if (hasOwn(instance.props, key)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n return false;\n }\n if (key[0] === \"$\" && key.slice(1) in instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Attempting to mutate public property \"${key}\". Properties starting with $ are reserved and readonly.`\n );\n return false;\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && key in instance.appContext.config.globalProperties) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n value\n });\n } else {\n ctx[key] = value;\n }\n }\n return true;\n },\n has({\n _: { data, setupState, accessCache, ctx, appContext, propsOptions }\n }, key) {\n let normalizedProps;\n return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);\n },\n defineProperty(target, key, descriptor) {\n if (descriptor.get != null) {\n target._.accessCache[key] = 0;\n } else if (hasOwn(descriptor, \"value\")) {\n this.set(target, key, descriptor.value, null);\n }\n return Reflect.defineProperty(target, key, descriptor);\n }\n};\nif (!!(process.env.NODE_ENV !== \"production\") && true) {\n PublicInstanceProxyHandlers.ownKeys = (target) => {\n warn$1(\n `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`\n );\n return Reflect.ownKeys(target);\n };\n}\nfunction createDevRenderContext(instance) {\n const target = {};\n Object.defineProperty(target, `_`, {\n configurable: true,\n enumerable: false,\n get: () => instance\n });\n Object.keys(publicPropertiesMap).forEach((key) => {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get: () => publicPropertiesMap[key](instance),\n // intercepted by the proxy so no need for implementation,\n // but needed to prevent set errors\n set: NOOP\n });\n });\n return target;\n}\nfunction exposePropsOnRenderContext(instance) {\n const {\n ctx,\n propsOptions: [propsOptions]\n } = instance;\n if (propsOptions) {\n Object.keys(propsOptions).forEach((key) => {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => instance.props[key],\n set: NOOP\n });\n });\n }\n}\nfunction exposeSetupStateOnRenderContext(instance) {\n const { ctx, setupState } = instance;\n Object.keys(toRaw(setupState)).forEach((key) => {\n if (!setupState.__isScriptSetup) {\n if (isReservedPrefix(key[0])) {\n warn$1(\n `setup() return property ${JSON.stringify(\n key\n )} should not start with \"$\" or \"_\" which are reserved prefixes for Vue internals.`\n );\n return;\n }\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => setupState[key],\n set: NOOP\n });\n }\n });\n}\n\nconst warnRuntimeUsage = (method) => warn$1(\n `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`\n);\nfunction defineProps() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineProps`);\n }\n return null;\n}\nfunction defineEmits() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineEmits`);\n }\n return null;\n}\nfunction defineExpose(exposed) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineExpose`);\n }\n}\nfunction withDefaults(props, defaults) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`withDefaults`);\n }\n return null;\n}\nfunction useSlots() {\n return getContext().slots;\n}\nfunction useAttrs() {\n return getContext().attrs;\n}\nfunction getContext() {\n const i = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n warn$1(`useContext() called without active instance.`);\n }\n return i.setupContext || (i.setupContext = createSetupContext(i));\n}\nfunction normalizePropsOrEmits(props) {\n return isArray(props) ? props.reduce(\n (normalized, p) => (normalized[p] = null, normalized),\n {}\n ) : props;\n}\nfunction mergeDefaults(raw, defaults) {\n const props = normalizePropsOrEmits(raw);\n for (const key in defaults) {\n if (key.startsWith(\"__skip\"))\n continue;\n let opt = props[key];\n if (opt) {\n if (isArray(opt) || isFunction(opt)) {\n opt = props[key] = { type: opt, default: defaults[key] };\n } else {\n opt.default = defaults[key];\n }\n } else if (opt === null) {\n opt = props[key] = { default: defaults[key] };\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`props default key \"${key}\" has no corresponding declaration.`);\n }\n if (opt && defaults[`__skip_${key}`]) {\n opt.skipFactory = true;\n }\n }\n return props;\n}\nfunction mergeModels(a, b) {\n if (!a || !b)\n return a || b;\n if (isArray(a) && isArray(b))\n return a.concat(b);\n return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));\n}\nfunction createPropsRestProxy(props, excludedKeys) {\n const ret = {};\n for (const key in props) {\n if (!excludedKeys.includes(key)) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n get: () => props[key]\n });\n }\n }\n return ret;\n}\nfunction withAsyncContext(getAwaitable) {\n const ctx = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !ctx) {\n warn$1(\n `withAsyncContext called without active current instance. This is likely a bug.`\n );\n }\n let awaitable = getAwaitable();\n unsetCurrentInstance();\n if (isPromise(awaitable)) {\n awaitable = awaitable.catch((e) => {\n setCurrentInstance(ctx);\n throw e;\n });\n }\n return [awaitable, () => setCurrentInstance(ctx)];\n}\n\nfunction createDuplicateChecker() {\n const cache = /* @__PURE__ */ Object.create(null);\n return (type, key) => {\n if (cache[key]) {\n warn$1(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n } else {\n cache[key] = type;\n }\n };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions$1(instance) {\n const options = resolveMergedOptions(instance);\n const publicThis = instance.proxy;\n const ctx = instance.ctx;\n shouldCacheAccess = false;\n if (options.beforeCreate) {\n callHook(options.beforeCreate, instance, \"bc\");\n }\n const {\n // state\n data: dataOptions,\n computed: computedOptions,\n methods,\n watch: watchOptions,\n provide: provideOptions,\n inject: injectOptions,\n // lifecycle\n created,\n beforeMount,\n mounted,\n beforeUpdate,\n updated,\n activated,\n deactivated,\n beforeDestroy,\n beforeUnmount,\n destroyed,\n unmounted,\n render,\n renderTracked,\n renderTriggered,\n errorCaptured,\n serverPrefetch,\n // public API\n expose,\n inheritAttrs,\n // assets\n components,\n directives,\n filters\n } = options;\n const checkDuplicateProperties = !!(process.env.NODE_ENV !== \"production\") ? createDuplicateChecker() : null;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const [propsOptions] = instance.propsOptions;\n if (propsOptions) {\n for (const key in propsOptions) {\n checkDuplicateProperties(\"Props\" /* PROPS */, key);\n }\n }\n }\n function initInjections() {\n if (injectOptions) {\n resolveInjections(injectOptions, ctx, checkDuplicateProperties);\n }\n }\n if (!__VUE_CREATED_DEFERRED__) {\n initInjections();\n }\n if (methods) {\n for (const key in methods) {\n const methodHandler = methods[key];\n if (isFunction(methodHandler)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n Object.defineProperty(ctx, key, {\n value: methodHandler.bind(publicThis),\n configurable: true,\n enumerable: true,\n writable: true\n });\n } else {\n ctx[key] = methodHandler.bind(publicThis);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Methods\" /* METHODS */, key);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. Did you reference the function correctly?`\n );\n }\n }\n }\n if (dataOptions) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(dataOptions)) {\n warn$1(\n `The data option must be a function. Plain object usage is no longer supported.`\n );\n }\n const data = dataOptions.call(publicThis, publicThis);\n if (!!(process.env.NODE_ENV !== \"production\") && isPromise(data)) {\n warn$1(\n `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`\n );\n }\n if (!isObject(data)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`data() should return an object.`);\n } else {\n instance.data = reactive(data);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (const key in data) {\n checkDuplicateProperties(\"Data\" /* DATA */, key);\n if (!isReservedPrefix(key[0])) {\n Object.defineProperty(ctx, key, {\n configurable: true,\n enumerable: true,\n get: () => data[key],\n set: NOOP\n });\n }\n }\n }\n }\n }\n shouldCacheAccess = true;\n if (computedOptions) {\n for (const key in computedOptions) {\n const opt = computedOptions[key];\n const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n if (!!(process.env.NODE_ENV !== \"production\") && get === NOOP) {\n warn$1(`Computed property \"${key}\" has no getter.`);\n }\n const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn$1(\n `Write operation failed: computed property \"${key}\" is readonly.`\n );\n } : NOOP;\n const c = computed({\n get,\n set\n });\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => c.value,\n set: (v) => c.value = v\n });\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\n }\n }\n }\n if (watchOptions) {\n for (const key in watchOptions) {\n createWatcher(watchOptions[key], ctx, publicThis, key);\n }\n }\n function initProvides() {\n if (provideOptions) {\n const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n Reflect.ownKeys(provides).forEach((key) => {\n provide(key, provides[key]);\n });\n }\n }\n if (!__VUE_CREATED_DEFERRED__) {\n initProvides();\n }\n if (__VUE_CREATED_DEFERRED__) {\n let callCreatedHook2 = function() {\n initInjections();\n initProvides();\n if (created) {\n callHook(created, instance, \"c\");\n }\n instance.update();\n };\n ctx.$callCreatedHook = function(name) {\n const reset = setCurrentInstance(instance);\n pauseTracking();\n try {\n callCreatedHook2();\n } finally {\n resetTracking();\n reset();\n }\n };\n } else {\n if (created) {\n callHook(created, instance, \"c\");\n }\n }\n function registerLifecycleHook(register, hook) {\n if (isArray(hook)) {\n hook.forEach((_hook) => register(_hook.bind(publicThis)));\n } else if (hook) {\n register(hook.bind(publicThis));\n }\n }\n registerLifecycleHook(onBeforeMount, beforeMount);\n registerLifecycleHook(onMounted, mounted);\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n registerLifecycleHook(onUpdated, updated);\n registerLifecycleHook(onActivated, activated);\n registerLifecycleHook(onDeactivated, deactivated);\n registerLifecycleHook(onErrorCaptured, errorCaptured);\n registerLifecycleHook(onRenderTracked, renderTracked);\n registerLifecycleHook(onRenderTriggered, renderTriggered);\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n registerLifecycleHook(onUnmounted, unmounted);\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\n if (isArray(expose)) {\n if (expose.length) {\n const exposed = instance.exposed || (instance.exposed = {});\n expose.forEach((key) => {\n Object.defineProperty(exposed, key, {\n get: () => publicThis[key],\n set: (val) => publicThis[key] = val\n });\n });\n } else if (!instance.exposed) {\n instance.exposed = {};\n }\n }\n if (render && instance.render === NOOP) {\n instance.render = render;\n }\n if (inheritAttrs != null) {\n instance.inheritAttrs = inheritAttrs;\n }\n if (components)\n instance.components = components;\n if (directives)\n instance.directives = directives;\n if (instance.ctx.$onApplyOptions) {\n instance.ctx.$onApplyOptions(options, instance, publicThis);\n }\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {\n if (isArray(injectOptions)) {\n injectOptions = normalizeInject(injectOptions);\n }\n for (const key in injectOptions) {\n const opt = injectOptions[key];\n let injected;\n if (isObject(opt)) {\n if (\"default\" in opt) {\n injected = inject(\n opt.from || key,\n opt.default,\n true\n );\n } else {\n injected = inject(opt.from || key);\n }\n } else {\n injected = inject(opt);\n }\n if (isRef(injected)) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => injected.value,\n set: (v) => injected.value = v\n });\n } else {\n ctx[key] = injected;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Inject\" /* INJECT */, key);\n }\n }\n}\nfunction callHook(hook, instance, type) {\n callWithAsyncErrorHandling(\n isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),\n instance,\n type\n );\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n const getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n if (isString(raw)) {\n const handler = ctx[raw];\n if (isFunction(handler)) {\n watch(getter, handler);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch handler specified by key \"${raw}\"`, handler);\n }\n } else if (isFunction(raw)) {\n watch(getter, raw.bind(publicThis));\n } else if (isObject(raw)) {\n if (isArray(raw)) {\n raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n } else {\n const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n if (isFunction(handler)) {\n watch(getter, handler, raw);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n }\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch option: \"${key}\"`, raw);\n }\n}\nfunction resolveMergedOptions(instance) {\n const base = instance.type;\n const { mixins, extends: extendsOptions } = base;\n const {\n mixins: globalMixins,\n optionsCache: cache,\n config: { optionMergeStrategies }\n } = instance.appContext;\n const cached = cache.get(base);\n let resolved;\n if (cached) {\n resolved = cached;\n } else if (!globalMixins.length && !mixins && !extendsOptions) {\n {\n resolved = base;\n }\n } else {\n resolved = {};\n if (globalMixins.length) {\n globalMixins.forEach(\n (m) => mergeOptions(resolved, m, optionMergeStrategies, true)\n );\n }\n mergeOptions(resolved, base, optionMergeStrategies);\n }\n if (isObject(base)) {\n cache.set(base, resolved);\n }\n return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n const { mixins, extends: extendsOptions } = from;\n if (extendsOptions) {\n mergeOptions(to, extendsOptions, strats, true);\n }\n if (mixins) {\n mixins.forEach(\n (m) => mergeOptions(to, m, strats, true)\n );\n }\n for (const key in from) {\n if (asMixin && key === \"expose\") {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `\"expose\" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`\n );\n } else {\n const strat = internalOptionMergeStrats[key] || strats && strats[key];\n to[key] = strat ? strat(to[key], from[key]) : from[key];\n }\n }\n return to;\n}\nconst internalOptionMergeStrats = {\n data: mergeDataFn,\n props: mergeEmitsOrPropsOptions,\n emits: mergeEmitsOrPropsOptions,\n // objects\n methods: mergeObjectOptions,\n computed: mergeObjectOptions,\n // lifecycle\n beforeCreate: mergeAsArray$1,\n created: mergeAsArray$1,\n beforeMount: mergeAsArray$1,\n mounted: mergeAsArray$1,\n beforeUpdate: mergeAsArray$1,\n updated: mergeAsArray$1,\n beforeDestroy: mergeAsArray$1,\n beforeUnmount: mergeAsArray$1,\n destroyed: mergeAsArray$1,\n unmounted: mergeAsArray$1,\n activated: mergeAsArray$1,\n deactivated: mergeAsArray$1,\n errorCaptured: mergeAsArray$1,\n serverPrefetch: mergeAsArray$1,\n // assets\n components: mergeObjectOptions,\n directives: mergeObjectOptions,\n // watch\n watch: mergeWatchOptions,\n // provide / inject\n provide: mergeDataFn,\n inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n if (!from) {\n return to;\n }\n if (!to) {\n return from;\n }\n return function mergedDataFn() {\n return (extend)(\n isFunction(to) ? to.call(this, this) : to,\n isFunction(from) ? from.call(this, this) : from\n );\n };\n}\nfunction mergeInject(to, from) {\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n if (isArray(raw)) {\n const res = {};\n for (let i = 0; i < raw.length; i++) {\n res[raw[i]] = raw[i];\n }\n return res;\n }\n return raw;\n}\nfunction mergeAsArray$1(to, from) {\n return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;\n}\nfunction mergeEmitsOrPropsOptions(to, from) {\n if (to) {\n if (isArray(to) && isArray(from)) {\n return [.../* @__PURE__ */ new Set([...to, ...from])];\n }\n return extend(\n /* @__PURE__ */ Object.create(null),\n normalizePropsOrEmits(to),\n normalizePropsOrEmits(from != null ? from : {})\n );\n } else {\n return from;\n }\n}\nfunction mergeWatchOptions(to, from) {\n if (!to)\n return from;\n if (!from)\n return to;\n const merged = extend(/* @__PURE__ */ Object.create(null), to);\n for (const key in from) {\n merged[key] = mergeAsArray$1(to[key], from[key]);\n }\n return merged;\n}\n\nfunction initProps(instance, rawProps, isStateful, isSSR = false) {\n const props = {};\n const attrs = {};\n instance.propsDefaults = /* @__PURE__ */ Object.create(null);\n setFullProps(instance, rawProps, props, attrs);\n for (const key in instance.propsOptions[0]) {\n if (!(key in props)) {\n props[key] = void 0;\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateProps(rawProps || {}, props, instance);\n }\n if (isStateful) {\n instance.props = isSSR ? props : shallowReactive(props);\n } else {\n if (!instance.type.props) {\n instance.props = attrs;\n } else {\n instance.props = props;\n }\n }\n instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n const {\n props,\n attrs,\n vnode: { patchFlag }\n } = instance;\n const rawCurrentProps = toRaw(props);\n const [options] = instance.propsOptions;\n let hasAttrsChanged = false;\n if (\n // always force full diff in dev\n // - #1942 if hmr is enabled with sfc component\n // - vite#872 non-sfc component used by sfc component\n !(!!(process.env.NODE_ENV !== \"production\") && isInHmrContext()) && (optimized || patchFlag > 0) && !(patchFlag & 16)\n ) {\n if (patchFlag & 8) {\n const propsToUpdate = instance.vnode.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n let key = propsToUpdate[i];\n if (isEmitListener(instance.emitsOptions, key)) {\n continue;\n }\n const value = rawProps[key];\n if (options) {\n if (hasOwn(attrs, key)) {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n } else {\n const camelizedKey = camelize(key);\n props[camelizedKey] = resolvePropValue(\n options,\n rawCurrentProps,\n camelizedKey,\n value,\n instance,\n false\n );\n }\n } else {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n } else {\n if (setFullProps(instance, rawProps, props, attrs)) {\n hasAttrsChanged = true;\n }\n let kebabKey;\n for (const key in rawCurrentProps) {\n if (!rawProps || // for camelCase\n !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case\n // and converted to camelCase (#955)\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {\n if (options) {\n if (rawPrevProps && // for camelCase\n (rawPrevProps[key] !== void 0 || // for kebab-case\n rawPrevProps[kebabKey] !== void 0)) {\n props[key] = resolvePropValue(\n options,\n rawCurrentProps,\n key,\n void 0,\n instance,\n true\n );\n }\n } else {\n delete props[key];\n }\n }\n }\n if (attrs !== rawCurrentProps) {\n for (const key in attrs) {\n if (!rawProps || !hasOwn(rawProps, key) && true) {\n delete attrs[key];\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (hasAttrsChanged) {\n trigger(instance, \"set\", \"$attrs\");\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateProps(rawProps || {}, props, instance);\n }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n const [options, needCastKeys] = instance.propsOptions;\n let hasAttrsChanged = false;\n let rawCastValues;\n if (rawProps) {\n for (let key in rawProps) {\n if (isReservedProp(key)) {\n continue;\n }\n const value = rawProps[key];\n let camelKey;\n if (options && hasOwn(options, camelKey = camelize(key))) {\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n props[camelKey] = value;\n } else {\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n }\n } else if (!isEmitListener(instance.emitsOptions, key)) {\n if (!(key in attrs) || value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (needCastKeys) {\n const rawCurrentProps = toRaw(props);\n const castValues = rawCastValues || EMPTY_OBJ;\n for (let i = 0; i < needCastKeys.length; i++) {\n const key = needCastKeys[i];\n props[key] = resolvePropValue(\n options,\n rawCurrentProps,\n key,\n castValues[key],\n instance,\n !hasOwn(castValues, key)\n );\n }\n }\n return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n const opt = options[key];\n if (opt != null) {\n const hasDefault = hasOwn(opt, \"default\");\n if (hasDefault && value === void 0) {\n const defaultValue = opt.default;\n if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {\n const { propsDefaults } = instance;\n if (key in propsDefaults) {\n value = propsDefaults[key];\n } else {\n const reset = setCurrentInstance(instance);\n value = propsDefaults[key] = defaultValue.call(\n null,\n props\n );\n reset();\n }\n } else {\n value = defaultValue;\n }\n }\n if (opt[0 /* shouldCast */]) {\n if (isAbsent && !hasDefault) {\n value = false;\n } else if (opt[1 /* shouldCastTrue */] && (value === \"\" || value === hyphenate(key))) {\n value = true;\n }\n }\n }\n return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.propsCache;\n const cached = cache.get(comp);\n if (cached) {\n return cached;\n }\n const raw = comp.props;\n const normalized = {};\n const needCastKeys = [];\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendProps = (raw2) => {\n hasExtends = true;\n const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n extend(normalized, props);\n if (keys)\n needCastKeys.push(...keys);\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendProps);\n }\n if (comp.extends) {\n extendProps(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendProps);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, EMPTY_ARR);\n }\n return EMPTY_ARR;\n }\n if (isArray(raw)) {\n for (let i = 0; i < raw.length; i++) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isString(raw[i])) {\n warn$1(`props must be strings when using array syntax.`, raw[i]);\n }\n const normalizedKey = camelize(raw[i]);\n if (validatePropName(normalizedKey)) {\n normalized[normalizedKey] = EMPTY_OBJ;\n }\n }\n } else if (raw) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(raw)) {\n warn$1(`invalid props options`, raw);\n }\n for (const key in raw) {\n const normalizedKey = camelize(key);\n if (validatePropName(normalizedKey)) {\n const opt = raw[key];\n const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);\n if (prop) {\n const booleanIndex = getTypeIndex(Boolean, prop.type);\n const stringIndex = getTypeIndex(String, prop.type);\n prop[0 /* shouldCast */] = booleanIndex > -1;\n prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex;\n if (booleanIndex > -1 || hasOwn(prop, \"default\")) {\n needCastKeys.push(normalizedKey);\n }\n }\n }\n }\n }\n const res = [normalized, needCastKeys];\n if (isObject(comp)) {\n cache.set(comp, res);\n }\n return res;\n}\nfunction validatePropName(key) {\n if (key[0] !== \"$\" && !isReservedProp(key)) {\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid prop name: \"${key}\" is a reserved property.`);\n }\n return false;\n}\nfunction getType(ctor) {\n if (ctor === null) {\n return \"null\";\n }\n if (typeof ctor === \"function\") {\n return ctor.name || \"\";\n } else if (typeof ctor === \"object\") {\n const name = ctor.constructor && ctor.constructor.name;\n return name || \"\";\n }\n return \"\";\n}\nfunction isSameType(a, b) {\n return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n if (isArray(expectedTypes)) {\n return expectedTypes.findIndex((t) => isSameType(t, type));\n } else if (isFunction(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1;\n }\n return -1;\n}\nfunction validateProps(rawProps, props, instance) {\n const resolvedValues = toRaw(props);\n const options = instance.propsOptions[0];\n for (const key in options) {\n let opt = options[key];\n if (opt == null)\n continue;\n validateProp(\n key,\n resolvedValues[key],\n opt,\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(resolvedValues) : resolvedValues,\n !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key))\n );\n }\n}\nfunction validateProp(name, value, prop, props, isAbsent) {\n const { type, required, validator, skipCheck } = prop;\n if (required && isAbsent) {\n warn$1('Missing required prop: \"' + name + '\"');\n return;\n }\n if (value == null && !required) {\n return;\n }\n if (type != null && type !== true && !skipCheck) {\n let isValid = false;\n const types = isArray(type) ? type : [type];\n const expectedTypes = [];\n for (let i = 0; i < types.length && !isValid; i++) {\n const { valid, expectedType } = assertType(value, types[i]);\n expectedTypes.push(expectedType || \"\");\n isValid = valid;\n }\n if (!isValid) {\n warn$1(getInvalidTypeMessage(name, value, expectedTypes));\n return;\n }\n }\n if (validator && !validator(value, props)) {\n warn$1('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n }\n}\nconst isSimpleType = /* @__PURE__ */ makeMap(\n \"String,Number,Boolean,Function,Symbol,BigInt\"\n);\nfunction assertType(value, type) {\n let valid;\n const expectedType = getType(type);\n if (isSimpleType(expectedType)) {\n const t = typeof value;\n valid = t === expectedType.toLowerCase();\n if (!valid && t === \"object\") {\n valid = value instanceof type;\n }\n } else if (expectedType === \"Object\") {\n valid = isObject(value);\n } else if (expectedType === \"Array\") {\n valid = isArray(value);\n } else if (expectedType === \"null\") {\n valid = value === null;\n } else {\n valid = value instanceof type;\n }\n return {\n valid,\n expectedType\n };\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n if (expectedTypes.length === 0) {\n return `Prop type [] for prop \"${name}\" won't match anything. Did you mean to use type Array instead?`;\n }\n let message = `Invalid prop: type check failed for prop \"${name}\". Expected ${expectedTypes.map(capitalize).join(\" | \")}`;\n const expectedType = expectedTypes[0];\n const receivedType = toRawType(value);\n const expectedValue = styleValue(value, expectedType);\n const receivedValue = styleValue(value, receivedType);\n if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {\n message += ` with value ${expectedValue}`;\n }\n message += `, got ${receivedType} `;\n if (isExplicable(receivedType)) {\n message += `with value ${receivedValue}.`;\n }\n return message;\n}\nfunction styleValue(value, type) {\n if (type === \"String\") {\n return `\"${value}\"`;\n } else if (type === \"Number\") {\n return `${Number(value)}`;\n } else {\n return `${value}`;\n }\n}\nfunction isExplicable(type) {\n const explicitTypes = [\"string\", \"number\", \"boolean\"];\n return explicitTypes.some((elem) => type.toLowerCase() === elem);\n}\nfunction isBoolean(...args) {\n return args.some((elem) => elem.toLowerCase() === \"boolean\");\n}\n\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n perf.mark(`vue-${type}-${instance.uid}`);\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction endMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n const startTag = `vue-${type}-${instance.uid}`;\n const endTag = startTag + `:end`;\n perf.mark(endTag);\n perf.measure(\n `<${formatComponentName(instance, instance.type)}> ${type}`,\n startTag,\n endTag\n );\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction isSupported() {\n if (supported !== void 0) {\n return supported;\n }\n if (typeof window !== \"undefined\" && window.performance) {\n supported = true;\n perf = window.performance;\n } else {\n supported = false;\n }\n return supported;\n}\n\nconst queuePostRenderEffect$1 = queuePostFlushCb;\n\nconst isTeleport = (type) => type.__isTeleport;\n\nconst Fragment = Symbol.for(\"v-fgt\");\nconst Text = Symbol.for(\"v-txt\");\nconst Comment = Symbol.for(\"v-cmt\");\nconst Static = Symbol.for(\"v-stc\");\nlet currentBlock = null;\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value) {\n isBlockTreeEnabled += value;\n}\nfunction isVNode(value) {\n return value ? value.__v_isVNode === true : false;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n return _createVNode(\n ...args\n );\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({\n ref,\n ref_key,\n ref_for\n}) => {\n if (typeof ref === \"number\") {\n ref = \"\" + ref;\n }\n return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n const vnode = {\n __v_isVNode: true,\n __v_skip: true,\n type,\n props,\n key: props && normalizeKey(props),\n ref: props && normalizeRef(props),\n scopeId: currentScopeId,\n slotScopeIds: null,\n children,\n component: null,\n suspense: null,\n ssContent: null,\n ssFallback: null,\n dirs: null,\n transition: null,\n el: null,\n anchor: null,\n target: null,\n targetAnchor: null,\n staticCount: 0,\n shapeFlag,\n patchFlag,\n dynamicProps,\n dynamicChildren: null,\n appContext: null,\n ctx: currentRenderingInstance\n };\n if (needFullChildrenNormalization) {\n normalizeChildren(vnode, children);\n } else if (children) {\n vnode.shapeFlag |= isString(children) ? 8 : 16;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.key !== vnode.key) {\n warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n }\n if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself\n !isBlockNode && // has current parent block\n currentBlock && // presence of a patch flag indicates this node needs patching on updates.\n // component nodes also should always be patched, because even if the\n // component doesn't need to update, it needs to persist the instance on to\n // the next vnode so that it can be properly unmounted later.\n (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the\n // vnode should not be considered dynamic due to handler caching.\n vnode.patchFlag !== 32) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nconst createVNode$1 = !!(process.env.NODE_ENV !== \"production\") ? createVNodeWithArgsTransform : _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\n if (!!(process.env.NODE_ENV !== \"production\") && !type) {\n warn$1(`Invalid vnode type when creating vnode: ${type}.`);\n }\n type = Comment;\n }\n if (isVNode(type)) {\n const cloned = cloneVNode(\n type,\n props,\n true\n /* mergeRef: true */\n );\n if (children) {\n normalizeChildren(cloned, children);\n }\n if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n if (cloned.shapeFlag & 6) {\n currentBlock[currentBlock.indexOf(type)] = cloned;\n } else {\n currentBlock.push(cloned);\n }\n }\n cloned.patchFlag |= -2;\n return cloned;\n }\n if (isClassComponent(type)) {\n type = type.__vccOpts;\n }\n if (props) {\n props = guardReactiveProps(props);\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (isObject(style)) {\n if (isProxy(style) && !isArray(style)) {\n style = extend({}, style);\n }\n props.style = normalizeStyle(style);\n }\n }\n const shapeFlag = isString(type) ? 1 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;\n if (!!(process.env.NODE_ENV !== \"production\") && shapeFlag & 4 && isProxy(type)) {\n type = toRaw(type);\n warn$1(\n `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \\`markRaw\\` or using \\`shallowRef\\` instead of \\`ref\\`.`,\n `\nComponent that was made reactive: `,\n type\n );\n }\n return createBaseVNode(\n type,\n props,\n children,\n patchFlag,\n dynamicProps,\n shapeFlag,\n isBlockNode,\n true\n );\n}\nfunction guardReactiveProps(props) {\n if (!props)\n return null;\n return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n const { props, ref, patchFlag, children } = vnode;\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n const cloned = {\n __v_isVNode: true,\n __v_skip: true,\n type: vnode.type,\n props: mergedProps,\n key: mergedProps && normalizeKey(mergedProps),\n ref: extraProps && extraProps.ref ? (\n // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n // if the vnode itself already has a ref, cloneVNode will need to merge\n // the refs so the single vnode can be set on multiple refs\n mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)\n ) : ref,\n scopeId: vnode.scopeId,\n slotScopeIds: vnode.slotScopeIds,\n children: !!(process.env.NODE_ENV !== \"production\") && patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,\n target: vnode.target,\n targetAnchor: vnode.targetAnchor,\n staticCount: vnode.staticCount,\n shapeFlag: vnode.shapeFlag,\n // if the vnode is cloned with extra props, we can no longer assume its\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n // note: preserve flag for fragments since they use the flag for children\n // fast paths only.\n patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n dynamicProps: vnode.dynamicProps,\n dynamicChildren: vnode.dynamicChildren,\n appContext: vnode.appContext,\n dirs: vnode.dirs,\n transition: vnode.transition,\n // These should technically only be non-null on mounted VNodes. However,\n // they *should* be copied for kept-alive vnodes. So we just always copy\n // them since them being non-null during a mount doesn't affect the logic as\n // they will simply be overwritten.\n component: vnode.component,\n suspense: vnode.suspense,\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n el: vnode.el,\n anchor: vnode.anchor,\n ctx: vnode.ctx,\n ce: vnode.ce\n };\n return cloned;\n}\nfunction deepCloneVNode(vnode) {\n const cloned = cloneVNode(vnode);\n if (isArray(vnode.children)) {\n cloned.children = vnode.children.map(deepCloneVNode);\n }\n return cloned;\n}\nfunction createTextVNode(text = \" \", flag = 0) {\n return createVNode$1(Text, null, text, flag);\n}\nfunction normalizeChildren(vnode, children) {\n let type = 0;\n const { shapeFlag } = vnode;\n if (children == null) {\n children = null;\n } else if (isArray(children)) {\n type = 16;\n } else if (typeof children === \"object\") {\n if (shapeFlag & (1 | 64)) {\n const slot = children.default;\n if (slot) {\n slot._c && (slot._d = false);\n normalizeChildren(vnode, slot());\n slot._c && (slot._d = true);\n }\n return;\n } else {\n type = 32;\n const slotFlag = children._;\n if (!slotFlag && !(InternalObjectKey in children)) {\n children._ctx = currentRenderingInstance;\n } else if (slotFlag === 3 && currentRenderingInstance) {\n if (currentRenderingInstance.slots._ === 1) {\n children._ = 1;\n } else {\n children._ = 2;\n vnode.patchFlag |= 1024;\n }\n }\n }\n } else if (isFunction(children)) {\n children = { default: children, _ctx: currentRenderingInstance };\n type = 32;\n } else {\n children = String(children);\n if (shapeFlag & 64) {\n type = 16;\n children = [createTextVNode(children)];\n } else {\n type = 8;\n }\n }\n vnode.children = children;\n vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n const toMerge = args[i];\n for (const key in toMerge) {\n if (key === \"class\") {\n if (ret.class !== toMerge.class) {\n ret.class = normalizeClass([ret.class, toMerge.class]);\n }\n } else if (key === \"style\") {\n ret.style = normalizeStyle([ret.style, toMerge.style]);\n } else if (isOn(key)) {\n const existing = ret[key];\n const incoming = toMerge[key];\n if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {\n ret[key] = existing ? [].concat(existing, incoming) : incoming;\n }\n } else if (key !== \"\") {\n ret[key] = toMerge[key];\n }\n }\n }\n return ret;\n}\n\nconst emptyAppContext = createAppContext();\nlet uid = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n const type = vnode.type;\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n const instance = {\n uid: uid++,\n vnode,\n type,\n parent,\n appContext,\n root: null,\n // to be immediately set\n next: null,\n subTree: null,\n // will be set synchronously right after creation\n effect: null,\n update: null,\n // will be set synchronously right after creation\n scope: new EffectScope(\n true\n /* detached */\n ),\n render: null,\n proxy: null,\n exposed: null,\n exposeProxy: null,\n withProxy: null,\n provides: parent ? parent.provides : Object.create(appContext.provides),\n accessCache: null,\n renderCache: [],\n // local resolved assets\n components: null,\n directives: null,\n // resolved props and emits options\n propsOptions: normalizePropsOptions(type, appContext),\n emitsOptions: normalizeEmitsOptions(type, appContext),\n // emit\n emit: null,\n // to be set immediately\n emitted: null,\n // props default value\n propsDefaults: EMPTY_OBJ,\n // inheritAttrs\n inheritAttrs: type.inheritAttrs,\n // state\n ctx: EMPTY_OBJ,\n data: EMPTY_OBJ,\n props: EMPTY_OBJ,\n attrs: EMPTY_OBJ,\n slots: EMPTY_OBJ,\n refs: EMPTY_OBJ,\n setupState: EMPTY_OBJ,\n setupContext: null,\n attrsProxy: null,\n slotsProxy: null,\n // suspense related\n suspense,\n suspenseId: suspense ? suspense.pendingId : 0,\n asyncDep: null,\n asyncResolved: false,\n // lifecycle hooks\n // not using enums here because it results in computed properties\n isMounted: false,\n isUnmounted: false,\n isDeactivated: false,\n bc: null,\n c: null,\n bm: null,\n m: null,\n bu: null,\n u: null,\n um: null,\n bum: null,\n da: null,\n a: null,\n rtg: null,\n rtc: null,\n ec: null,\n sp: null,\n // fixed by xxxxxx 用于存储uni-app的元素缓存\n $uniElements: /* @__PURE__ */ new Map(),\n $templateUniElementRefs: [],\n $templateUniElementStyles: {},\n $eS: {},\n $eA: {}\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n instance.ctx = createDevRenderContext(instance);\n } else {\n instance.ctx = { _: instance };\n }\n instance.root = parent ? parent.root : instance;\n instance.emit = emit.bind(null, instance);\n if (vnode.ce) {\n vnode.ce(instance);\n }\n return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nlet internalSetCurrentInstance;\nlet setInSSRSetupState;\n{\n internalSetCurrentInstance = (i) => {\n currentInstance = i;\n };\n setInSSRSetupState = (v) => {\n isInSSRComponentSetup = v;\n };\n}\nconst setCurrentInstance = (instance) => {\n const prev = currentInstance;\n internalSetCurrentInstance(instance);\n instance.scope.on();\n return () => {\n instance.scope.off();\n internalSetCurrentInstance(prev);\n };\n};\nconst unsetCurrentInstance = () => {\n currentInstance && currentInstance.scope.off();\n internalSetCurrentInstance(null);\n};\nconst isBuiltInTag = /* @__PURE__ */ makeMap(\"slot,component\");\nfunction validateComponentName(name, { isNativeTag }) {\n if (isBuiltInTag(name) || isNativeTag(name)) {\n warn$1(\n \"Do not use built-in or reserved HTML elements as component id: \" + name\n );\n }\n}\nfunction isStatefulComponent(instance) {\n return instance.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n isSSR && setInSSRSetupState(isSSR);\n const {\n props\n /*, children*/\n } = instance.vnode;\n const isStateful = isStatefulComponent(instance);\n initProps(instance, props, isStateful, isSSR);\n const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;\n isSSR && setInSSRSetupState(false);\n return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n const Component = instance.type;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (Component.name) {\n validateComponentName(Component.name, instance.appContext.config);\n }\n if (Component.components) {\n const names = Object.keys(Component.components);\n for (let i = 0; i < names.length; i++) {\n validateComponentName(names[i], instance.appContext.config);\n }\n }\n if (Component.directives) {\n const names = Object.keys(Component.directives);\n for (let i = 0; i < names.length; i++) {\n validateDirectiveName(names[i]);\n }\n }\n if (Component.compilerOptions && isRuntimeOnly()) {\n warn$1(\n `\"compilerOptions\" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`\n );\n }\n }\n instance.accessCache = /* @__PURE__ */ Object.create(null);\n instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n if (!!(process.env.NODE_ENV !== \"production\")) {\n exposePropsOnRenderContext(instance);\n }\n const { setup } = Component;\n if (setup) {\n const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;\n const reset = setCurrentInstance(instance);\n pauseTracking();\n const setupResult = callWithErrorHandling(\n setup,\n instance,\n 0,\n [\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(instance.props) : instance.props,\n setupContext\n ]\n );\n resetTracking();\n reset();\n if (isPromise(setupResult)) {\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `setup() returned a Promise, but the version of Vue you are using does not support it yet.`\n );\n }\n } else {\n handleSetupResult(instance, setupResult, isSSR);\n }\n } else {\n finishComponentSetup(instance, isSSR);\n }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n if (isFunction(setupResult)) {\n {\n instance.render = setupResult;\n }\n } else if (isObject(setupResult)) {\n if (!!(process.env.NODE_ENV !== \"production\") && isVNode(setupResult)) {\n warn$1(\n `setup() should not return VNodes directly - return a render function instead.`\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.devtoolsRawSetupState = setupResult;\n }\n instance.setupState = proxyRefs(setupResult);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n exposeSetupStateOnRenderContext(instance);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupResult !== void 0) {\n warn$1(\n `setup() should return an object. Received: ${setupResult === null ? \"null\" : typeof setupResult}`\n );\n }\n finishComponentSetup(instance, isSSR);\n}\nlet compile;\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n const Component = instance.type;\n if (!instance.render) {\n instance.render = Component.render || NOOP;\n }\n if (__VUE_OPTIONS_API__ && true) {\n const reset = setCurrentInstance(instance);\n pauseTracking();\n try {\n applyOptions$1(instance);\n } finally {\n resetTracking();\n reset();\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !Component.render && instance.render === NOOP && !isSSR) {\n if (Component.template) {\n warn$1(\n `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n );\n } else {\n warn$1(`Component is missing template or render function.`);\n }\n }\n}\nfunction getAttrsProxy(instance) {\n return instance.attrsProxy || (instance.attrsProxy = new Proxy(\n instance.attrs,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get(target, key) {\n track(instance, \"get\", \"$attrs\");\n return target[key];\n },\n set() {\n warn$1(`setupContext.attrs is readonly.`);\n return false;\n },\n deleteProperty() {\n warn$1(`setupContext.attrs is readonly.`);\n return false;\n }\n } : {\n get(target, key) {\n track(instance, \"get\", \"$attrs\");\n return target[key];\n }\n }\n ));\n}\nfunction getSlotsProxy(instance) {\n return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, {\n get(target, key) {\n track(instance, \"get\", \"$slots\");\n return target[key];\n }\n }));\n}\nfunction createSetupContext(instance) {\n const expose = (exposed) => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (instance.exposed) {\n warn$1(`expose() should be called only once per setup().`);\n }\n if (exposed != null) {\n let exposedType = typeof exposed;\n if (exposedType === \"object\") {\n if (isArray(exposed)) {\n exposedType = \"array\";\n } else if (isRef(exposed)) {\n exposedType = \"ref\";\n }\n }\n if (exposedType !== \"object\") {\n warn$1(\n `expose() should be passed a plain object, received ${exposedType}.`\n );\n }\n }\n }\n instance.exposed = exposed || {};\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n return Object.freeze({\n get attrs() {\n return getAttrsProxy(instance);\n },\n get slots() {\n return getSlotsProxy(instance);\n },\n get emit() {\n return (event, ...args) => instance.emit(event, ...args);\n },\n expose\n });\n } else {\n return {\n get attrs() {\n return getAttrsProxy(instance);\n },\n slots: instance.slots,\n emit: instance.emit,\n expose\n };\n }\n}\nfunction getExposeProxy(instance) {\n if (instance.exposed) {\n return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n get(target, key) {\n if (key in target) {\n return target[key];\n }\n return instance.proxy[key];\n },\n has(target, key) {\n return key in target || key in publicPropertiesMap;\n }\n }));\n }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, \"\");\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction formatComponentName(instance, Component, isRoot = false) {\n let name = getComponentName(Component);\n if (!name && Component.__file) {\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n if (match) {\n name = match[1];\n }\n }\n if (!name && instance && instance.parent) {\n const inferFromRegistry = (registry) => {\n for (const key in registry) {\n if (registry[key] === Component) {\n return key;\n }\n }\n };\n name = inferFromRegistry(\n instance.components || instance.parent.type.components\n ) || inferFromRegistry(instance.appContext.components);\n }\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n return isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst computed = (getterOrOptions, debugOptions) => {\n const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const i = getCurrentInstance();\n if (i && i.appContext.config.warnRecursiveComputed) {\n c._warnRecursive = true;\n }\n }\n return c;\n};\n\nfunction useModel(props, name, options = EMPTY_OBJ) {\n const i = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n warn$1(`useModel() called without active instance.`);\n return ref();\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !i.propsOptions[0][name]) {\n warn$1(`useModel() called with prop \"${name}\" which is not declared.`);\n return ref();\n }\n const camelizedName = camelize(name);\n const hyphenatedName = hyphenate(name);\n const res = customRef((track, trigger) => {\n let localValue;\n watchSyncEffect(() => {\n const propValue = props[name];\n if (hasChanged(localValue, propValue)) {\n localValue = propValue;\n trigger();\n }\n });\n return {\n get() {\n track();\n return options.get ? options.get(localValue) : localValue;\n },\n set(value) {\n const rawProps = i.vnode.props;\n if (!(rawProps && // check if parent has passed v-model\n (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps)) && hasChanged(value, localValue)) {\n localValue = value;\n trigger();\n }\n i.emit(`update:${name}`, options.set ? options.set(value) : value);\n }\n };\n });\n const modifierKey = name === \"modelValue\" ? \"modelModifiers\" : `${name}Modifiers`;\n res[Symbol.iterator] = () => {\n let i2 = 0;\n return {\n next() {\n if (i2 < 2) {\n return { value: i2++ ? props[modifierKey] || {} : res, done: false };\n } else {\n return { done: true };\n }\n }\n };\n };\n return res;\n}\n\nconst version = \"3.4.21\";\nconst warn = !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP;\nconst resolveFilter = null;\n\nfunction unwrapper(target) {\n return unref(target);\n}\nfunction defineAsyncComponent(source) {\n console.error(\"defineAsyncComponent is unsupported\");\n}\n\nconst ARRAYTYPE = \"[object Array]\";\nconst OBJECTTYPE = \"[object Object]\";\nfunction diff(current, pre) {\n const result = {};\n syncKeys(current, pre);\n _diff(current, pre, \"\", result);\n return result;\n}\nfunction syncKeys(current, pre) {\n current = unwrapper(current);\n if (current === pre)\n return;\n const rootCurrentType = toTypeString(current);\n const rootPreType = toTypeString(pre);\n if (rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE) {\n for (let key in pre) {\n const currentValue = current[key];\n if (currentValue === void 0) {\n current[key] = null;\n } else {\n syncKeys(currentValue, pre[key]);\n }\n }\n } else if (rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE) {\n if (current.length >= pre.length) {\n pre.forEach((item, index) => {\n syncKeys(current[index], item);\n });\n }\n }\n}\nfunction _diff(current, pre, path, result) {\n current = unwrapper(current);\n if (current === pre)\n return;\n const rootCurrentType = toTypeString(current);\n const rootPreType = toTypeString(pre);\n if (rootCurrentType == OBJECTTYPE) {\n if (rootPreType != OBJECTTYPE || Object.keys(current).length < Object.keys(pre).length) {\n setResult(result, path, current);\n } else {\n for (let key in current) {\n const currentValue = unwrapper(current[key]);\n const preValue = pre[key];\n const currentType = toTypeString(currentValue);\n const preType = toTypeString(preValue);\n if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) {\n if (currentValue != preValue) {\n setResult(\n result,\n (path == \"\" ? \"\" : path + \".\") + key,\n currentValue\n );\n }\n } else if (currentType == ARRAYTYPE) {\n if (preType != ARRAYTYPE) {\n setResult(\n result,\n (path == \"\" ? \"\" : path + \".\") + key,\n currentValue\n );\n } else {\n if (currentValue.length < preValue.length) {\n setResult(\n result,\n (path == \"\" ? \"\" : path + \".\") + key,\n currentValue\n );\n } else {\n currentValue.forEach((item, index) => {\n _diff(\n item,\n preValue[index],\n (path == \"\" ? \"\" : path + \".\") + key + \"[\" + index + \"]\",\n result\n );\n });\n }\n }\n } else if (currentType == OBJECTTYPE) {\n if (preType != OBJECTTYPE || Object.keys(currentValue).length < Object.keys(preValue).length) {\n setResult(\n result,\n (path == \"\" ? \"\" : path + \".\") + key,\n currentValue\n );\n } else {\n for (let subKey in currentValue) {\n _diff(\n currentValue[subKey],\n preValue[subKey],\n (path == \"\" ? \"\" : path + \".\") + key + \".\" + subKey,\n result\n );\n }\n }\n }\n }\n }\n } else if (rootCurrentType == ARRAYTYPE) {\n if (rootPreType != ARRAYTYPE) {\n setResult(result, path, current);\n } else {\n if (current.length < pre.length) {\n setResult(result, path, current);\n } else {\n current.forEach((item, index) => {\n _diff(item, pre[index], path + \"[\" + index + \"]\", result);\n });\n }\n }\n } else {\n setResult(result, path, current);\n }\n}\nfunction setResult(result, k, v) {\n result[k] = v;\n}\n\nfunction hasComponentEffect(instance) {\n return queue.includes(instance.update);\n}\nfunction flushCallbacks(instance) {\n const ctx = instance.ctx;\n const callbacks = ctx.__next_tick_callbacks;\n if (callbacks && callbacks.length) {\n if (process.env.UNI_DEBUG) {\n const mpInstance = ctx.$scope;\n console.log(\n \"uni-app:[\" + +/* @__PURE__ */ new Date() + \"][\" + (mpInstance.is || mpInstance.route) + \"][\" + instance.uid + \"]:flushCallbacks[\" + callbacks.length + \"]\"\n );\n }\n const copies = callbacks.slice(0);\n callbacks.length = 0;\n for (let i = 0; i < copies.length; i++) {\n copies[i]();\n }\n }\n}\nfunction nextTick(instance, fn) {\n const ctx = instance.ctx;\n if (!ctx.__next_tick_pending && !hasComponentEffect(instance)) {\n if (process.env.UNI_DEBUG) {\n const mpInstance = ctx.$scope;\n console.log(\n \"uni-app:[\" + +/* @__PURE__ */ new Date() + \"][\" + (mpInstance.is || mpInstance.route) + \"][\" + instance.uid + \"]:nextVueTick\"\n );\n }\n return nextTick$1(fn && fn.bind(instance.proxy));\n }\n if (process.env.UNI_DEBUG) {\n const mpInstance = ctx.$scope;\n console.log(\n \"uni-app:[\" + +/* @__PURE__ */ new Date() + \"][\" + (mpInstance.is || mpInstance.route) + \"][\" + instance.uid + \"]:nextMPTick\"\n );\n }\n let _resolve;\n if (!ctx.__next_tick_callbacks) {\n ctx.__next_tick_callbacks = [];\n }\n ctx.__next_tick_callbacks.push(() => {\n if (fn) {\n callWithErrorHandling(\n fn.bind(instance.proxy),\n instance,\n 14\n );\n } else if (_resolve) {\n _resolve(instance.proxy);\n }\n });\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n}\n\nfunction clone(src, seen) {\n src = unwrapper(src);\n const type = typeof src;\n if (type === \"object\" && src !== null) {\n let copy = seen.get(src);\n if (typeof copy !== \"undefined\") {\n return copy;\n }\n if (isArray(src)) {\n const len = src.length;\n copy = new Array(len);\n seen.set(src, copy);\n for (let i = 0; i < len; i++) {\n copy[i] = clone(src[i], seen);\n }\n } else {\n copy = {};\n seen.set(src, copy);\n for (const name in src) {\n if (hasOwn(src, name)) {\n copy[name] = clone(src[name], seen);\n }\n }\n }\n return copy;\n }\n if (type !== \"symbol\") {\n return src;\n }\n}\nfunction deepCopy(src) {\n return clone(src, typeof WeakMap !== \"undefined\" ? /* @__PURE__ */ new WeakMap() : /* @__PURE__ */ new Map());\n}\n\nfunction getMPInstanceData(instance, keys) {\n const data = instance.data;\n const ret = /* @__PURE__ */ Object.create(null);\n keys.forEach((key) => {\n ret[key] = data[key];\n });\n return ret;\n}\nfunction patch(instance, data, oldData) {\n if (!data) {\n return;\n }\n data = deepCopy(data);\n data.$eS = instance.$eS || {};\n data.$eA = instance.$eA || {};\n const ctx = instance.ctx;\n const mpType = ctx.mpType;\n if (mpType === \"page\" || mpType === \"component\") {\n data.r0 = 1;\n const start = Date.now();\n const mpInstance = ctx.$scope;\n const keys = Object.keys(data);\n const diffData = diff(data, oldData || getMPInstanceData(mpInstance, keys));\n if (Object.keys(diffData).length) {\n if (process.env.UNI_DEBUG) {\n console.log(\n \"uni-app:[\" + +/* @__PURE__ */ new Date() + \"][\" + (mpInstance.is || mpInstance.route) + \"][\" + instance.uid + \"][\\u8017\\u65F6\" + (Date.now() - start) + \"]\\u5DEE\\u91CF\\u66F4\\u65B0\",\n JSON.stringify(diffData)\n );\n }\n ctx.__next_tick_pending = true;\n mpInstance.setData(diffData, () => {\n ctx.__next_tick_pending = false;\n flushCallbacks(instance);\n });\n flushPreFlushCbs();\n } else {\n flushCallbacks(instance);\n }\n }\n}\n\nfunction initAppConfig(appConfig) {\n appConfig.globalProperties.$nextTick = function $nextTick(fn) {\n return nextTick(this.$, fn);\n };\n}\n\nfunction onApplyOptions(options, instance, publicThis) {\n instance.appContext.config.globalProperties.$applyOptions(\n options,\n instance,\n publicThis\n );\n const computedOptions = options.computed;\n if (computedOptions) {\n const keys = Object.keys(computedOptions);\n if (keys.length) {\n const ctx = instance.ctx;\n if (!ctx.$computedKeys) {\n ctx.$computedKeys = [];\n }\n ctx.$computedKeys.push(...keys);\n }\n }\n delete instance.ctx.$onApplyOptions;\n}\n\nfunction setRef$1(instance, isUnmount = false) {\n const {\n setupState,\n $templateRefs,\n $templateUniElementRefs,\n ctx: { $scope, $mpPlatform }\n } = instance;\n if ($mpPlatform === \"mp-alipay\") {\n return;\n }\n if (!$scope || !$templateRefs && !$templateUniElementRefs) {\n return;\n }\n if (isUnmount) {\n $templateRefs && $templateRefs.forEach(\n (templateRef) => setTemplateRef(templateRef, null, setupState)\n );\n $templateUniElementRefs && $templateUniElementRefs.forEach(\n (templateRef) => setTemplateRef(templateRef, null, setupState)\n );\n return;\n }\n const check = $mpPlatform === \"mp-baidu\" || $mpPlatform === \"mp-toutiao\";\n const doSetByRefs = (refs) => {\n if (refs.length === 0) {\n return [];\n }\n const mpComponents = (\n // 字节小程序 selectAllComponents 可能返回 null\n // https://github.com/dcloudio/uni-app/issues/3954\n ($scope.selectAllComponents(\".r\") || []).concat(\n $scope.selectAllComponents(\".r-i-f\") || []\n )\n );\n return refs.filter((templateRef) => {\n const refValue = findComponentPublicInstance(mpComponents, templateRef.i);\n if (check && refValue === null) {\n return true;\n }\n setTemplateRef(templateRef, refValue, setupState);\n return false;\n });\n };\n const doSet = () => {\n if ($templateRefs) {\n const refs = doSetByRefs($templateRefs);\n if (refs.length && instance.proxy && instance.proxy.$scope) {\n instance.proxy.$scope.setData({ r1: 1 }, () => {\n doSetByRefs(refs);\n });\n }\n }\n };\n if ($templateUniElementRefs && $templateUniElementRefs.length) {\n nextTick(instance, () => {\n $templateUniElementRefs.forEach((templateRef) => {\n if (isArray(templateRef.v)) {\n templateRef.v.forEach((v) => {\n setTemplateRef(templateRef, v, setupState);\n });\n } else {\n setTemplateRef(templateRef, templateRef.v, setupState);\n }\n });\n });\n }\n if ($scope._$setRef) {\n $scope._$setRef(doSet);\n } else {\n nextTick(instance, doSet);\n }\n}\nfunction toSkip(value) {\n if (isObject(value)) {\n markRaw(value);\n }\n return value;\n}\nfunction findComponentPublicInstance(mpComponents, id) {\n const mpInstance = mpComponents.find(\n (com) => com && (com.properties || com.props).uI === id\n );\n if (mpInstance) {\n const vm = mpInstance.$vm;\n if (vm) {\n return getExposeProxy(vm.$) || vm;\n }\n return toSkip(mpInstance);\n }\n return null;\n}\nfunction setTemplateRef({ r, f }, refValue, setupState) {\n if (isFunction(r)) {\n r(refValue, {});\n } else {\n const _isString = isString(r);\n const _isRef = isRef(r);\n if (_isString || _isRef) {\n if (f) {\n if (!_isRef) {\n return;\n }\n if (!isArray(r.value)) {\n r.value = [];\n }\n const existing = r.value;\n if (existing.indexOf(refValue) === -1) {\n existing.push(refValue);\n if (!refValue) {\n return;\n }\n if (refValue.$) {\n onBeforeUnmount(() => remove(existing, refValue), refValue.$);\n }\n }\n } else if (_isString) {\n if (hasOwn(setupState, r)) {\n setupState[r] = refValue;\n }\n } else if (isRef(r)) {\n r.value = refValue;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRef(r);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRef(r);\n }\n }\n}\nfunction warnRef(ref) {\n warn(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n}\n\nconst queuePostRenderEffect = queuePostFlushCb;\nfunction mountComponent(initialVNode, options) {\n const instance = initialVNode.component = createComponentInstance(initialVNode, options.parentComponent, null);\n if (__VUE_OPTIONS_API__) {\n instance.ctx.$onApplyOptions = onApplyOptions;\n instance.ctx.$children = [];\n }\n if (options.mpType === \"app\") {\n instance.render = NOOP;\n }\n if (options.onBeforeSetup) {\n options.onBeforeSetup(instance, options);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(initialVNode);\n startMeasure(instance, `mount`);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `init`);\n }\n setupComponent(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `init`);\n }\n if (__VUE_OPTIONS_API__) {\n if (options.parentComponent && instance.proxy) {\n options.parentComponent.ctx.$children.push(getExposeProxy(instance) || instance.proxy);\n }\n }\n setupRenderEffect(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n endMeasure(instance, `mount`);\n }\n return instance.proxy;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n props,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n data,\n setupState,\n ctx,\n uid,\n appContext: {\n app: {\n config: {\n globalProperties: { pruneComponentPropsCache }\n }\n }\n },\n inheritAttrs\n } = instance;\n instance.$uniElementIds = /* @__PURE__ */ new Map();\n instance.$templateRefs = [];\n instance.$templateUniElementRefs = [];\n instance.$templateUniElementStyles = {};\n instance.$ei = 0;\n pruneComponentPropsCache(uid);\n instance.__counter = instance.__counter === 0 ? 1 : 0;\n let result;\n const prev = setCurrentRenderingInstance(instance);\n try {\n if (vnode.shapeFlag & 4) {\n fallthroughAttrs(inheritAttrs, props, propsOptions, attrs);\n const proxyToUse = withProxy || proxy;\n result = render.call(\n proxyToUse,\n proxyToUse,\n renderCache,\n props,\n setupState,\n data,\n ctx\n );\n } else {\n fallthroughAttrs(\n inheritAttrs,\n props,\n propsOptions,\n Component.props ? attrs : getFunctionalFallthrough(attrs)\n );\n const render2 = Component;\n result = render2.length > 1 ? render2(props, { attrs, slots, emit }) : render2(\n props,\n null\n /* we know it doesn't need it */\n );\n }\n } catch (err) {\n handleError(err, instance, 1);\n result = false;\n }\n setRef$1(instance);\n setCurrentRenderingInstance(prev);\n return result;\n}\nfunction fallthroughAttrs(inheritAttrs, props, propsOptions, fallthroughAttrs2) {\n if (props && fallthroughAttrs2 && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs2).filter(\n (key) => key !== \"class\" && key !== \"style\"\n );\n if (!keys.length) {\n return;\n }\n if (propsOptions && keys.some(isModelListener)) {\n keys.forEach((key) => {\n if (!isModelListener(key) || !(key.slice(9) in propsOptions)) {\n props[key] = fallthroughAttrs2[key];\n }\n });\n } else {\n keys.forEach((key) => props[key] = fallthroughAttrs2[key]);\n }\n }\n}\nconst updateComponentPreRender = (instance) => {\n pauseTracking();\n flushPreFlushCbs();\n resetTracking();\n};\nfunction componentUpdateScopedSlotsFn() {\n const scopedSlotsData = this.$scopedSlotsData;\n if (!scopedSlotsData || scopedSlotsData.length === 0) {\n return;\n }\n const start = Date.now();\n const mpInstance = this.ctx.$scope;\n const oldData = mpInstance.data;\n const diffData = /* @__PURE__ */ Object.create(null);\n scopedSlotsData.forEach(({ path, index, data }) => {\n const oldScopedSlotData = getValueByDataPath(oldData, path);\n const diffPath = isString(index) ? `${path}.${index}` : `${path}[${index}]`;\n if (typeof oldScopedSlotData === \"undefined\" || typeof oldScopedSlotData[index] === \"undefined\") {\n diffData[diffPath] = data;\n } else {\n const diffScopedSlotData = diff(\n data,\n oldScopedSlotData[index]\n );\n Object.keys(diffScopedSlotData).forEach((name) => {\n diffData[diffPath + \".\" + name] = diffScopedSlotData[name];\n });\n }\n });\n scopedSlotsData.length = 0;\n if (Object.keys(diffData).length) {\n if (process.env.UNI_DEBUG) {\n console.log(\n \"uni-app:[\" + +/* @__PURE__ */ new Date() + \"][\" + (mpInstance.is || mpInstance.route) + \"][\" + this.uid + \"][\\u8017\\u65F6\" + (Date.now() - start) + \"]\\u4F5C\\u7528\\u57DF\\u63D2\\u69FD\\u5DEE\\u91CF\\u66F4\\u65B0\",\n JSON.stringify(diffData)\n );\n }\n mpInstance.setData(diffData);\n }\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n effect.allowRecurse = update.allowRecurse = allowed;\n}\nfunction setupRenderEffect(instance) {\n const updateScopedSlots = componentUpdateScopedSlotsFn.bind(\n instance\n );\n instance.$updateScopedSlots = () => nextTick$1(() => queueJob(updateScopedSlots));\n const componentUpdateFn = () => {\n if (!instance.isMounted) {\n onBeforeUnmount(() => {\n setRef$1(instance, true);\n }, instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `patch`);\n }\n patch(instance, renderComponentRoot(instance));\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `patch`);\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance);\n }\n } else {\n const { next, bu, u } = instance;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(next || instance.vnode);\n }\n toggleRecurse(instance, false);\n updateComponentPreRender();\n if (bu) {\n invokeArrayFns(bu);\n }\n toggleRecurse(instance, true);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `patch`);\n }\n patch(instance, renderComponentRoot(instance));\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `patch`);\n }\n if (u) {\n queuePostRenderEffect(u);\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(instance);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n }\n };\n const effect = instance.effect = new ReactiveEffect(\n componentUpdateFn,\n NOOP,\n () => queueJob(update),\n instance.scope\n // track it in component's effect scope\n );\n const update = instance.update = () => {\n if (effect.dirty) {\n effect.run();\n }\n };\n update.id = instance.uid;\n toggleRecurse(instance, true);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;\n effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;\n update.ownerInstance = instance;\n }\n if (!__VUE_CREATED_DEFERRED__) {\n update();\n }\n}\nfunction unmountComponent(instance) {\n const { bum, scope, update, um } = instance;\n if (bum) {\n invokeArrayFns(bum);\n }\n if (__VUE_OPTIONS_API__) {\n const parentInstance = instance.parent;\n if (parentInstance) {\n const $children = parentInstance.ctx.$children;\n const target = getExposeProxy(instance) || instance.proxy;\n const index = $children.indexOf(target);\n if (index > -1) {\n $children.splice(index, 1);\n }\n }\n }\n scope.stop();\n if (update) {\n update.active = false;\n }\n if (um) {\n queuePostRenderEffect(um);\n }\n queuePostRenderEffect(() => {\n instance.isUnmounted = true;\n });\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentRemoved(instance);\n }\n}\nconst oldCreateApp = createAppAPI();\nfunction getTarget() {\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n if (typeof my !== \"undefined\") {\n return my;\n }\n}\nfunction createVueApp(rootComponent, rootProps = null) {\n const target = getTarget();\n target.__VUE__ = true;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n }\n const app = oldCreateApp(rootComponent, rootProps);\n const appContext = app._context;\n initAppConfig(appContext.config);\n const createVNode = (initialVNode) => {\n initialVNode.appContext = appContext;\n initialVNode.shapeFlag = 6;\n return initialVNode;\n };\n const createComponent = function createComponent2(initialVNode, options) {\n return mountComponent(createVNode(initialVNode), options);\n };\n const destroyComponent = function destroyComponent2(component) {\n return component && unmountComponent(component.$);\n };\n app.mount = function mount() {\n rootComponent.render = NOOP;\n const instance = mountComponent(\n createVNode({ type: rootComponent }),\n {\n mpType: \"app\",\n mpInstance: null,\n parentComponent: null,\n slots: [],\n props: null\n }\n );\n app._instance = instance.$;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsInitApp(app, version);\n }\n instance.$app = app;\n instance.$createComponent = createComponent;\n instance.$destroyComponent = destroyComponent;\n appContext.$appInstance = instance;\n return instance;\n };\n app.unmount = function unmount() {\n warn(`Cannot unmount an app.`);\n };\n return app;\n}\n\nfunction useCssModule(name = \"$style\") {\n {\n const instance = getCurrentInstance();\n if (!instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`useCssModule must be called inside setup()`);\n return EMPTY_OBJ;\n }\n const modules = instance.type.__cssModules;\n if (!modules) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS modules injected.`);\n return EMPTY_OBJ;\n }\n const mod = modules[name];\n if (!mod) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS module named \"${name}\".`);\n return EMPTY_OBJ;\n }\n return mod;\n }\n}\n\nfunction useCssVars(getter) {\n const instance = getCurrentInstance();\n if (!instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`useCssVars is called without current active component instance.`);\n return;\n }\n initCssVarsRender(instance, getter);\n}\nfunction initCssVarsRender(instance, getter) {\n instance.ctx.__cssVars = () => {\n const vars = getter(instance.proxy);\n const cssVars = {};\n for (const key in vars) {\n cssVars[`--${key}`] = vars[key];\n }\n return cssVars;\n };\n}\n\nfunction withModifiers() {\n}\nfunction createVNode() {\n}\n\nfunction injectLifecycleHook(name, hook, publicThis, instance) {\n if (isFunction(hook)) {\n injectHook(name, hook.bind(publicThis), instance);\n }\n}\nfunction initHooks(options, instance, publicThis) {\n const mpType = options.mpType || publicThis.$mpType;\n if (!mpType || mpType === 'component') {\n // 仅 App,Page 类型支持在 options 中配置 on 生命周期,组件可以使用组合式 API 定义页面生命周期\n return;\n }\n Object.keys(options).forEach((name) => {\n if (isUniLifecycleHook(name, options[name], false)) {\n const hooks = options[name];\n if (isArray(hooks)) {\n hooks.forEach((hook) => injectLifecycleHook(name, hook, publicThis, instance));\n }\n else {\n injectLifecycleHook(name, hooks, publicThis, instance);\n }\n }\n });\n}\n\nfunction applyOptions(options, instance, publicThis) {\n initHooks(options, instance, publicThis);\n}\n\nfunction set(target, key, val) {\n return (target[key] = val);\n}\nfunction $callMethod(method, ...args) {\n const fn = this[method];\n if (fn) {\n return fn(...args);\n }\n console.error(`method ${method} not found`);\n return null;\n}\n\nfunction createErrorHandler(app) {\n const userErrorHandler = app.config.errorHandler;\n return function errorHandler(err, instance, info) {\n if (userErrorHandler) {\n userErrorHandler(err, instance, info);\n }\n const appInstance = app._instance;\n if (!appInstance || !appInstance.proxy) {\n throw err;\n }\n if (appInstance[ON_ERROR]) {\n {\n appInstance.proxy.$callHook(ON_ERROR, err);\n }\n }\n else {\n logError(err, info, instance ? instance.$.vnode : null, false);\n }\n };\n}\nfunction mergeAsArray(to, from) {\n return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction initOptionMergeStrategies(optionMergeStrategies) {\n UniLifecycleHooks.forEach((name) => {\n optionMergeStrategies[name] = mergeAsArray;\n });\n}\n\nlet realAtob;\nconst b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64re = /^(?:[A-Za-z\\d+/]{4})*?(?:[A-Za-z\\d+/]{2}(?:==)?|[A-Za-z\\d+/]{3}=?)?$/;\nif (typeof atob !== 'function') {\n realAtob = function (str) {\n str = String(str).replace(/[\\t\\n\\f\\r ]+/g, '');\n if (!b64re.test(str)) {\n throw new Error(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\");\n }\n // Adding the padding if missing, for semplicity\n str += '=='.slice(2 - (str.length & 3));\n var bitmap;\n var result = '';\n var r1;\n var r2;\n var i = 0;\n for (; i < str.length;) {\n bitmap =\n (b64.indexOf(str.charAt(i++)) << 18) |\n (b64.indexOf(str.charAt(i++)) << 12) |\n ((r1 = b64.indexOf(str.charAt(i++))) << 6) |\n (r2 = b64.indexOf(str.charAt(i++)));\n result +=\n r1 === 64\n ? String.fromCharCode((bitmap >> 16) & 255)\n : r2 === 64\n ? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)\n : String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255, bitmap & 255);\n }\n return result;\n };\n}\nelse {\n // 注意atob只能在全局对象上调用,例如:`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法\n realAtob = atob;\n}\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(realAtob(str)\n .split('')\n .map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(''));\n}\nfunction getCurrentUserInfo() {\n const token = uni.getStorageSync('uni_id_token') || '';\n const tokenArr = token.split('.');\n if (!token || tokenArr.length !== 3) {\n return {\n uid: null,\n role: [],\n permission: [],\n tokenExpired: 0,\n };\n }\n let userInfo;\n try {\n userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));\n }\n catch (error) {\n throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message);\n }\n userInfo.tokenExpired = userInfo.exp * 1000;\n delete userInfo.exp;\n delete userInfo.iat;\n return userInfo;\n}\nfunction uniIdMixin(globalProperties) {\n globalProperties.uniIDHasRole = function (roleId) {\n const { role } = getCurrentUserInfo();\n return role.indexOf(roleId) > -1;\n };\n globalProperties.uniIDHasPermission = function (permissionId) {\n const { permission } = getCurrentUserInfo();\n return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1;\n };\n globalProperties.uniIDTokenValid = function () {\n const { tokenExpired } = getCurrentUserInfo();\n return tokenExpired > Date.now();\n };\n}\n\nfunction initApp(app) {\n const appConfig = app.config;\n // 该逻辑全平台会调用\n // - 需要兼容支持开发者自定义的 errorHandler\n // - nvue、vue 需要使用同一个(once) errorHandler\n // - 需要支持 uni.onError 注册监听\n // * 目前仅部分小程序平台支持,调用uni.onError时,如果app已存在,则添加到instance的hooks中,如果不存在,则临时存储,初始化instance时添加到hooks中\n // * 目前在 errorHandler 中,会调用 app.$callHook(ON_ERROR, err),所以上一步需要将 uni.onError 存储到 app 的 hooks 中\n // - 部分平台(目前主要是小程序)开发阶段 uni-console 会调用 uni.onError 注册监听\n appConfig.errorHandler = invokeCreateErrorHandler(app, createErrorHandler);\n initOptionMergeStrategies(appConfig.optionMergeStrategies);\n const globalProperties = appConfig.globalProperties;\n {\n uniIdMixin(globalProperties);\n }\n if (__VUE_OPTIONS_API__) {\n globalProperties.$set = set;\n globalProperties.$applyOptions = applyOptions;\n globalProperties.$callMethod = $callMethod;\n }\n {\n uni.invokeCreateVueAppHook(app);\n }\n}\n\nconst propsCaches = Object.create(null);\nfunction renderProps(props) {\n const { uid, __counter } = getCurrentInstance();\n const propsId = (propsCaches[uid] || (propsCaches[uid] = [])).push(guardReactiveProps(props)) - 1;\n // 强制每次更新\n return uid + ',' + propsId + ',' + __counter;\n}\nfunction pruneComponentPropsCache(uid) {\n delete propsCaches[uid];\n}\nfunction findComponentPropsData(up) {\n if (!up) {\n return;\n }\n const [uid, propsId] = up.split(',');\n if (!propsCaches[uid]) {\n return;\n }\n return propsCaches[uid][parseInt(propsId)];\n}\n\nvar plugin = {\n install(app) {\n initApp(app);\n app.config.globalProperties.pruneComponentPropsCache =\n pruneComponentPropsCache;\n const oldMount = app.mount;\n app.mount = function mount(rootContainer) {\n const instance = oldMount.call(app, rootContainer);\n const createApp = getCreateApp();\n if (createApp) {\n createApp(instance);\n }\n else {\n // @ts-expect-error 旧编译器\n if (typeof createMiniProgramApp !== 'undefined') {\n // @ts-expect-error\n createMiniProgramApp(instance);\n }\n }\n return instance;\n };\n },\n};\nfunction getCreateApp() {\n const method = process.env.UNI_MP_PLUGIN\n ? 'createPluginApp'\n : process.env.UNI_SUBPACKAGE\n ? 'createSubpackageApp'\n : 'createApp';\n if (typeof global !== 'undefined' &&\n typeof global[method] !== 'undefined') {\n return global[method];\n // @ts-expect-error\n }\n else if (typeof my !== 'undefined') {\n // 支付宝小程序开启globalObjectMode配置后才会有global\n // @ts-expect-error\n return my[method];\n }\n}\n\nfunction stringifyStyle(value) {\n if (isString(value)) {\n return value;\n }\n return stringify(normalizeStyle(value));\n}\n// 不使用 @vue/shared 中的 stringifyStyle (#3456)\nfunction stringify(styles) {\n let ret = '';\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n ret += `${key.startsWith(`--`) ? key : hyphenate(key)}:${styles[key]};`;\n }\n return ret;\n}\n\nfunction vOn(value, key) {\n const instance = getCurrentInstance();\n const ctx = instance.ctx;\n // 微信小程序,QQ小程序,当 setData diff 的时候,若事件不主动同步过去,会导致事件绑定不更新,(question/137217)\n const extraKey = typeof key !== 'undefined' &&\n (ctx.$mpPlatform === 'mp-weixin' ||\n ctx.$mpPlatform === 'mp-qq' ||\n ctx.$mpPlatform === 'mp-xhs') &&\n (isString(key) || typeof key === 'number')\n ? '_' + key\n : '';\n const name = 'e' + instance.$ei++ + extraKey;\n const mpInstance = ctx.$scope;\n if (!value) {\n // remove\n delete mpInstance[name];\n return name;\n }\n const existingInvoker = mpInstance[name];\n if (existingInvoker) {\n // patch\n existingInvoker.value = value;\n }\n else {\n // add\n mpInstance[name] = createInvoker(value, instance);\n }\n return name;\n}\nfunction createInvoker(initialValue, instance) {\n const invoker = (e) => {\n patchMPEvent(e);\n let args = [e];\n if (instance && instance.ctx.$getTriggerEventDetail) {\n if (typeof e.detail === 'number') {\n e.detail = instance.ctx.$getTriggerEventDetail(e.detail);\n }\n }\n if (e.detail && e.detail.__args__) {\n args = e.detail.__args__;\n }\n const eventValue = invoker.value;\n const invoke = () => callWithAsyncErrorHandling(patchStopImmediatePropagation(e, eventValue), instance, 5 /* ErrorCodes.NATIVE_EVENT_HANDLER */, args);\n // 冒泡事件触发时,启用延迟策略,避免同一批次的事件执行时机不正确,对性能可能有略微影响 https://github.com/dcloudio/uni-app/issues/3228\n const eventTarget = e.target;\n const eventSync = eventTarget\n ? eventTarget.dataset\n ? String(eventTarget.dataset.eventsync) === 'true'\n : false\n : false;\n if (bubbles.includes(e.type) && !eventSync) {\n setTimeout(invoke);\n }\n else {\n const res = invoke();\n if (e.type === 'input' && (isArray(res) || isPromise(res))) {\n return;\n }\n return res;\n }\n };\n invoker.value = initialValue;\n return invoker;\n}\n// 冒泡事件列表\nconst bubbles = [\n // touch事件暂不做延迟,否则在 Android 上会影响性能,比如一些拖拽跟手手势等\n // 'touchstart',\n // 'touchmove',\n // 'touchcancel',\n // 'touchend',\n 'tap',\n 'longpress',\n 'longtap',\n 'transitionend',\n 'animationstart',\n 'animationiteration',\n 'animationend',\n 'touchforcechange',\n];\nfunction patchMPEvent(event, instance) {\n if (event.type && event.target) {\n event.preventDefault = NOOP;\n event.stopPropagation = NOOP;\n event.stopImmediatePropagation = NOOP;\n if (!hasOwn(event, 'detail')) {\n event.detail = {};\n }\n if (hasOwn(event, 'markerId')) {\n event.detail = typeof event.detail === 'object' ? event.detail : {};\n event.detail.markerId = event.markerId;\n }\n // mp-baidu,checked=>value\n if (isPlainObject(event.detail) &&\n hasOwn(event.detail, 'checked') &&\n !hasOwn(event.detail, 'value')) {\n event.detail.value = event.detail.checked;\n }\n if (isPlainObject(event.detail)) {\n event.target = extend({}, event.target, event.detail);\n }\n }\n}\nfunction patchStopImmediatePropagation(e, value) {\n if (isArray(value)) {\n const originalStop = e.stopImmediatePropagation;\n e.stopImmediatePropagation = () => {\n originalStop && originalStop.call(e);\n e._stopped = true;\n };\n return value.map((fn) => (e) => !e._stopped && fn(e));\n }\n else {\n return value;\n }\n}\n\n/**\n * Actual implementation\n */\nfunction vFor(source, renderItem) {\n let ret;\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, i);\n }\n }\n else if (typeof source === 'number') {\n if ((process.env.NODE_ENV !== 'production') && !Number.isInteger(source)) {\n warn(`The v-for range expect an integer value but got ${source}.`);\n return [];\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, i);\n }\n }\n else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(source, (item, i) => renderItem(item, i, i));\n }\n else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i);\n }\n }\n }\n else {\n ret = [];\n }\n return ret;\n}\n\nfunction renderSlot(name, props = {}, key) {\n const instance = getCurrentInstance();\n const { parent, isMounted, ctx: { $scope }, } = instance;\n // mp-alipay 为 props\n const vueIds = ($scope.properties || $scope.props).uI;\n if (!vueIds) {\n return;\n }\n if (!parent && !isMounted) {\n // 头条小程序首次 render 时,还没有 parent\n onMounted(() => {\n renderSlot(name, props, key);\n }, instance);\n return;\n }\n const invoker = findScopedSlotInvoker(vueIds, instance);\n // 可能不存在,因为插槽不是必需的\n if (invoker) {\n invoker(name, props, key);\n }\n}\nfunction findScopedSlotInvoker(vueId, instance) {\n let parent = instance.parent;\n while (parent) {\n const invokers = parent.$ssi;\n if (invokers && invokers[vueId]) {\n return invokers[vueId];\n }\n parent = parent.parent;\n }\n}\n\nfunction withScopedSlot(fn, { name, path, vueId, }) {\n const instance = getCurrentInstance();\n fn.path = path;\n const scopedSlots = (instance.$ssi ||\n (instance.$ssi = {}));\n const invoker = scopedSlots[vueId] ||\n (scopedSlots[vueId] = createScopedSlotInvoker(instance));\n if (!invoker.slots[name]) {\n invoker.slots[name] = {\n fn,\n };\n }\n else {\n invoker.slots[name].fn = fn;\n }\n return getValueByDataPath(instance.ctx.$scope.data, path);\n}\nfunction createScopedSlotInvoker(instance) {\n const invoker = (slotName, args, index) => {\n const slot = invoker.slots[slotName];\n if (!slot) {\n // slot 可能不存在 https://github.com/dcloudio/uni-app/issues/3346\n return;\n }\n const hasIndex = typeof index !== 'undefined';\n index = index || 0;\n // 确保当前 slot 的上下文,类似 withCtx\n const prevInstance = setCurrentRenderingInstance(instance);\n const data = slot.fn(args, slotName + (hasIndex ? '-' + index : ''), index);\n const path = slot.fn.path;\n setCurrentRenderingInstance(prevInstance);\n (instance.$scopedSlotsData || (instance.$scopedSlotsData = [])).push({\n path,\n index,\n data,\n });\n instance.$updateScopedSlots();\n };\n invoker.slots = {};\n return invoker;\n}\n\n/**\n * quickapp-webview 不能使用 default 作为插槽名称,故统一转换 default 为 d\n * @param names\n * @returns\n */\nfunction dynamicSlot(names) {\n if (isString(names)) {\n return dynamicSlotName(names);\n }\n return names.map((name) => dynamicSlotName(name));\n}\n\nfunction setRef(ref, id, opts = {}) {\n const { $templateRefs } = getCurrentInstance();\n $templateRefs.push({ i: id, r: ref, k: opts.k, f: opts.f });\n}\n\nfunction withModelModifiers(fn, { number, trim }, isComponent = false) {\n if (isComponent) {\n return (...args) => {\n if (trim) {\n args = args.map((a) => a.trim());\n }\n else if (number) {\n args = args.map(toNumber);\n }\n return fn(...args);\n };\n }\n return (event) => {\n const value = event.detail.value;\n if (trim) {\n event.detail.value = value.trim();\n }\n else if (number) {\n event.detail.value = toNumber(value);\n }\n return fn(event);\n };\n}\n\nfunction hasIdProp(_ctx) {\n return (_ctx.$.propsOptions &&\n _ctx.$.propsOptions[0] &&\n 'id' in _ctx.$.propsOptions[0]);\n}\nfunction hasVirtualHostId(_ctx) {\n return _ctx.$scope.virtualHostId !== '';\n}\nfunction genIdWithVirtualHost(_ctx, idBinding) {\n if (!hasVirtualHostId(_ctx) || hasIdProp(_ctx)) {\n return idBinding;\n }\n return _ctx.virtualHostId;\n}\nfunction genUniElementId(_ctx, idBinding, genId) {\n return genIdWithVirtualHost(_ctx, idBinding) || genId || '';\n}\n\nfunction setupDevtoolsPlugin() {\n // noop\n}\n\nconst o = (value, key) => vOn(value, key);\nconst f = (source, renderItem) => vFor(source, renderItem);\nconst d = (names) => dynamicSlot(names);\nconst r = (name, props, key) => renderSlot(name, props, key);\nconst w = (fn, options) => withScopedSlot(fn, options);\nconst s = (value) => stringifyStyle(value);\nconst c = (str) => camelize(str);\nconst e = (target, ...sources) => extend(target, ...sources);\nconst h = (str) => hyphenate(str);\nconst n = (value) => normalizeClass(value);\nconst t = (val) => toDisplayString(val);\nconst p = (props) => renderProps(props);\nconst sr = (ref, id, opts) => setRef(ref, id, opts);\nconst m = (fn, modifiers, isComponent = false) => withModelModifiers(fn, modifiers, isComponent);\nconst j = (obj) => JSON.stringify(obj);\nconst gei = genUniElementId;\n\nfunction createApp(rootComponent, rootProps = null) {\n rootComponent && (rootComponent.mpType = 'app');\n return createVueApp(rootComponent, rootProps).use(plugin);\n}\nconst createSSRApp = createApp;\n\nexport { EffectScope, Fragment, ReactiveEffect, Text, c, callWithAsyncErrorHandling, callWithErrorHandling, computed, createApp, createPropsRestProxy, createSSRApp, createVNode, createVueApp, customRef, d, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, devtoolsComponentAdded, devtoolsComponentRemoved, devtoolsComponentUpdated, diff, e, effect, effectScope, f, findComponentPropsData, gei, getCurrentInstance, getCurrentScope, getExposeProxy, guardReactiveProps, h, hasInjectionContext, hasQueueJob, inject, injectHook, invalidateJob, isInSSRComponentSetup, isProxy, isReactive, isReadonly, isRef, isShallow, j, logError, m, markRaw, mergeDefaults, mergeModels, mergeProps, n, nextTick$1 as nextTick, o, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, p, patch, provide, proxyRefs, pruneComponentPropsCache, queuePostFlushCb, r, reactive, readonly, ref, resolveComponent, resolveDirective, resolveFilter, s, setCurrentRenderingInstance, setTemplateRef, setupDevtoolsPlugin, shallowReactive, shallowReadonly, shallowRef, sr, stop, t, toHandlers, toRaw, toRef, toRefs, toValue, triggerRef, unref, updateProps, useAttrs, useCssModule, useCssVars, useModel, useSSRContext, useSlots, version, w, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withModifiers, withScopeId };\n","import { isArray, hasOwn, isString, isPlainObject, isObject, capitalize, toRawType, makeMap, isFunction, isPromise, extend, remove } from '@vue/shared';\nimport { LOCALE_EN, normalizeLocale } from '@dcloudio/uni-i18n';\nimport { Emitter, sortObject, ON_ERROR, onCreateVueApp, invokeCreateVueAppHook } from '@dcloudio/uni-shared';\nimport { injectHook } from 'vue';\n\nfunction getLocaleLanguage() {\n let localeLanguage = '';\n {\n const appBaseInfo = wx.getAppBaseInfo();\n const language = appBaseInfo && appBaseInfo.language ? appBaseInfo.language : LOCALE_EN;\n localeLanguage = normalizeLocale(language) || LOCALE_EN;\n }\n return localeLanguage;\n}\n\nfunction validateProtocolFail(name, msg) {\n console.warn(`${name}: ${msg}`);\n}\nfunction validateProtocol(name, data, protocol, onFail) {\n if (!onFail) {\n onFail = validateProtocolFail;\n }\n for (const key in protocol) {\n const errMsg = validateProp(key, data[key], protocol[key], !hasOwn(data, key));\n if (isString(errMsg)) {\n onFail(name, errMsg);\n }\n }\n}\nfunction validateProtocols(name, args, protocol, onFail) {\n if (!protocol) {\n return;\n }\n if (!isArray(protocol)) {\n return validateProtocol(name, args[0] || Object.create(null), protocol, onFail);\n }\n const len = protocol.length;\n const argsLen = args.length;\n for (let i = 0; i < len; i++) {\n const opts = protocol[i];\n const data = Object.create(null);\n if (argsLen > i) {\n data[opts.name] = args[i];\n }\n validateProtocol(name, data, { [opts.name]: opts }, onFail);\n }\n}\nfunction validateProp(name, value, prop, isAbsent) {\n if (!isPlainObject(prop)) {\n prop = { type: prop };\n }\n const { type, required, validator } = prop;\n // required!\n if (required && isAbsent) {\n return 'Missing required args: \"' + name + '\"';\n }\n // missing but optional\n if (value == null && !required) {\n return;\n }\n // type check\n if (type != null) {\n let isValid = false;\n const types = isArray(type) ? type : [type];\n const expectedTypes = [];\n // value is valid as long as one of the specified types match\n for (let i = 0; i < types.length && !isValid; i++) {\n const { valid, expectedType } = assertType(value, types[i]);\n expectedTypes.push(expectedType || '');\n isValid = valid;\n }\n if (!isValid) {\n return getInvalidTypeMessage(name, value, expectedTypes);\n }\n }\n // custom validator\n if (validator) {\n return validator(value);\n }\n}\nconst isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol');\nfunction assertType(value, type) {\n let valid;\n const expectedType = getType(type);\n if (isSimpleType(expectedType)) {\n const t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n }\n else if (expectedType === 'Object') {\n valid = isObject(value);\n }\n else if (expectedType === 'Array') {\n valid = isArray(value);\n }\n else {\n {\n valid = value instanceof type;\n }\n }\n return {\n valid,\n expectedType,\n };\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n let message = `Invalid args: type check failed for args \"${name}\".` +\n ` Expected ${expectedTypes.map(capitalize).join(', ')}`;\n const expectedType = expectedTypes[0];\n const receivedType = toRawType(value);\n const expectedValue = styleValue(value, expectedType);\n const receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += ` with value ${expectedValue}`;\n }\n message += `, got ${receivedType} `;\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += `with value ${receivedValue}.`;\n }\n return message;\n}\nfunction getType(ctor) {\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : '';\n}\nfunction styleValue(value, type) {\n if (type === 'String') {\n return `\"${value}\"`;\n }\n else if (type === 'Number') {\n return `${Number(value)}`;\n }\n else {\n return `${value}`;\n }\n}\nfunction isExplicable(type) {\n const explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some((elem) => type.toLowerCase() === elem);\n}\nfunction isBoolean(...args) {\n return args.some((elem) => elem.toLowerCase() === 'boolean');\n}\n\nfunction tryCatch(fn) {\n return function () {\n try {\n return fn.apply(fn, arguments);\n }\n catch (e) {\n // TODO\n console.error(e);\n }\n };\n}\n\nlet invokeCallbackId = 1;\nconst invokeCallbacks = {};\nfunction addInvokeCallback(id, name, callback, keepAlive = false) {\n invokeCallbacks[id] = {\n name,\n keepAlive,\n callback,\n };\n return id;\n}\n// onNativeEventReceive((event,data)=>{}) 需要两个参数,目前写死最多两个参数\nfunction invokeCallback(id, res, extras) {\n if (typeof id === 'number') {\n const opts = invokeCallbacks[id];\n if (opts) {\n if (!opts.keepAlive) {\n delete invokeCallbacks[id];\n }\n return opts.callback(res, extras);\n }\n }\n return res;\n}\nconst API_SUCCESS = 'success';\nconst API_FAIL = 'fail';\nconst API_COMPLETE = 'complete';\nfunction getApiCallbacks(args) {\n const apiCallbacks = {};\n for (const name in args) {\n const fn = args[name];\n if (isFunction(fn)) {\n apiCallbacks[name] = tryCatch(fn);\n delete args[name];\n }\n }\n return apiCallbacks;\n}\nfunction normalizeErrMsg(errMsg, name) {\n if (!errMsg || errMsg.indexOf(':fail') === -1) {\n return name + ':ok';\n }\n return name + errMsg.substring(errMsg.indexOf(':fail'));\n}\nfunction createAsyncApiCallback(name, args = {}, { beforeAll, beforeSuccess } = {}) {\n if (!isPlainObject(args)) {\n args = {};\n }\n const { success, fail, complete } = getApiCallbacks(args);\n const hasSuccess = isFunction(success);\n const hasFail = isFunction(fail);\n const hasComplete = isFunction(complete);\n const callbackId = invokeCallbackId++;\n addInvokeCallback(callbackId, name, (res) => {\n res = res || {};\n res.errMsg = normalizeErrMsg(res.errMsg, name);\n isFunction(beforeAll) && beforeAll(res);\n if (res.errMsg === name + ':ok') {\n isFunction(beforeSuccess) && beforeSuccess(res, args);\n hasSuccess && success(res);\n }\n else {\n hasFail && fail(res);\n }\n hasComplete && complete(res);\n });\n return callbackId;\n}\n\nconst HOOK_SUCCESS = 'success';\nconst HOOK_FAIL = 'fail';\nconst HOOK_COMPLETE = 'complete';\nconst globalInterceptors = {};\nconst scopedInterceptors = {};\nfunction wrapperHook(hook, params) {\n return function (data) {\n return hook(data, params) || data;\n };\n}\nfunction queue(hooks, data, params) {\n let promise = false;\n for (let i = 0; i < hooks.length; i++) {\n const hook = hooks[i];\n if (promise) {\n promise = Promise.resolve(wrapperHook(hook, params));\n }\n else {\n const res = hook(data, params);\n if (isPromise(res)) {\n promise = Promise.resolve(res);\n }\n if (res === false) {\n return {\n then() { },\n catch() { },\n };\n }\n }\n }\n return (promise || {\n then(callback) {\n return callback(data);\n },\n catch() { },\n });\n}\nfunction wrapperOptions(interceptors, options = {}) {\n [HOOK_SUCCESS, HOOK_FAIL, HOOK_COMPLETE].forEach((name) => {\n const hooks = interceptors[name];\n if (!isArray(hooks)) {\n return;\n }\n const oldCallback = options[name];\n options[name] = function callbackInterceptor(res) {\n queue(hooks, res, options).then((res) => {\n return (isFunction(oldCallback) && oldCallback(res)) || res;\n });\n };\n });\n return options;\n}\nfunction wrapperReturnValue(method, returnValue) {\n const returnValueHooks = [];\n if (isArray(globalInterceptors.returnValue)) {\n returnValueHooks.push(...globalInterceptors.returnValue);\n }\n const interceptor = scopedInterceptors[method];\n if (interceptor && isArray(interceptor.returnValue)) {\n returnValueHooks.push(...interceptor.returnValue);\n }\n returnValueHooks.forEach((hook) => {\n returnValue = hook(returnValue) || returnValue;\n });\n return returnValue;\n}\nfunction getApiInterceptorHooks(method) {\n const interceptor = Object.create(null);\n Object.keys(globalInterceptors).forEach((hook) => {\n if (hook !== 'returnValue') {\n interceptor[hook] = globalInterceptors[hook].slice();\n }\n });\n const scopedInterceptor = scopedInterceptors[method];\n if (scopedInterceptor) {\n Object.keys(scopedInterceptor).forEach((hook) => {\n if (hook !== 'returnValue') {\n interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]);\n }\n });\n }\n return interceptor;\n}\nfunction invokeApi(method, api, options, params) {\n const interceptor = getApiInterceptorHooks(method);\n if (interceptor && Object.keys(interceptor).length) {\n if (isArray(interceptor.invoke)) {\n const res = queue(interceptor.invoke, options);\n return res.then((options) => {\n // 重新访问 getApiInterceptorHooks, 允许 invoke 中再次调用 addInterceptor,removeInterceptor\n return api(wrapperOptions(getApiInterceptorHooks(method), options), ...params);\n });\n }\n else {\n return api(wrapperOptions(interceptor, options), ...params);\n }\n }\n return api(options, ...params);\n}\n\nfunction hasCallback(args) {\n if (isPlainObject(args) &&\n [API_SUCCESS, API_FAIL, API_COMPLETE].find((cb) => isFunction(args[cb]))) {\n return true;\n }\n return false;\n}\nfunction handlePromise(promise) {\n // if (__UNI_FEATURE_PROMISE__) {\n // return promise\n // .then((data) => {\n // return [null, data]\n // })\n // .catch((err) => [err])\n // }\n return promise;\n}\nfunction promisify$1(name, fn) {\n return (args = {}, ...rest) => {\n if (hasCallback(args)) {\n return wrapperReturnValue(name, invokeApi(name, fn, args, rest));\n }\n return wrapperReturnValue(name, handlePromise(new Promise((resolve, reject) => {\n invokeApi(name, fn, extend(args, { success: resolve, fail: reject }), rest);\n })));\n };\n}\n\nfunction formatApiArgs(args, options) {\n args[0];\n {\n return;\n }\n}\nfunction invokeSuccess(id, name, res) {\n const result = {\n errMsg: name + ':ok',\n };\n return invokeCallback(id, extend((res || {}), result));\n}\nfunction invokeFail(id, name, errMsg, errRes = {}) {\n const errMsgPrefix = name + ':fail';\n let apiErrMsg = '';\n if (!errMsg) {\n apiErrMsg = errMsgPrefix;\n }\n else if (errMsg.indexOf(errMsgPrefix) === 0) {\n apiErrMsg = errMsg;\n }\n else {\n apiErrMsg = errMsgPrefix + ' ' + errMsg;\n }\n {\n delete errRes.errCode;\n }\n let res = extend({ errMsg: apiErrMsg }, errRes);\n return invokeCallback(id, res);\n}\nfunction beforeInvokeApi(name, args, protocol, options) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateProtocols(name, args, protocol);\n }\n const errMsg = formatApiArgs(args);\n if (errMsg) {\n return errMsg;\n }\n}\nfunction parseErrMsg(errMsg) {\n if (!errMsg || isString(errMsg)) {\n return errMsg;\n }\n if (errMsg.stack) {\n // 此处同时被鸿蒙arkts和jsvm使用,暂时使用运行时判断鸿蒙jsvm环境,注意此用法仅内部使用\n if ((typeof globalThis === 'undefined' || !globalThis.harmonyChannel)) {\n console.error(errMsg.message + '\\n' + errMsg.stack);\n }\n return errMsg.message;\n }\n return errMsg;\n}\nfunction wrapperTaskApi(name, fn, protocol, options) {\n return (args) => {\n const id = createAsyncApiCallback(name, args, options);\n const errMsg = beforeInvokeApi(name, [args], protocol);\n if (errMsg) {\n return invokeFail(id, name, errMsg);\n }\n return fn(args, {\n resolve: (res) => invokeSuccess(id, name, res),\n reject: (errMsg, errRes) => invokeFail(id, name, parseErrMsg(errMsg), errRes),\n });\n };\n}\nfunction wrapperSyncApi(name, fn, protocol, options) {\n return (...args) => {\n const errMsg = beforeInvokeApi(name, args, protocol);\n if (errMsg) {\n throw new Error(errMsg);\n }\n return fn.apply(null, args);\n };\n}\nfunction wrapperAsyncApi(name, fn, protocol, options) {\n return wrapperTaskApi(name, fn, protocol, options);\n}\nfunction defineSyncApi(name, fn, protocol, options) {\n return wrapperSyncApi(name, fn, (process.env.NODE_ENV !== 'production') ? protocol : undefined);\n}\nfunction defineAsyncApi(name, fn, protocol, options) {\n return promisify$1(name, wrapperAsyncApi(name, fn, (process.env.NODE_ENV !== 'production') ? protocol : undefined, options));\n}\n\nconst API_UPX2PX = 'upx2px';\nconst Upx2pxProtocol = [\n {\n name: 'upx',\n type: [Number, String],\n required: true,\n },\n];\n\nconst EPS = 1e-4;\nconst BASE_DEVICE_WIDTH = 750;\nlet isIOS = false;\nlet deviceWidth = 0;\nlet deviceDPR = 0;\nfunction checkDeviceWidth() {\n const { windowWidth, pixelRatio, platform } = Object.assign({}, wx.getWindowInfo(), {\n platform: wx.getDeviceInfo().platform,\n })\n ;\n deviceWidth = windowWidth;\n deviceDPR = pixelRatio;\n isIOS = platform === 'ios';\n}\nconst upx2px = defineSyncApi(API_UPX2PX, (number, newDeviceWidth) => {\n if (deviceWidth === 0) {\n checkDeviceWidth();\n }\n number = Number(number);\n if (number === 0) {\n return 0;\n }\n let width = newDeviceWidth || deviceWidth;\n let result = (number / BASE_DEVICE_WIDTH) * width;\n if (result < 0) {\n result = -result;\n }\n result = Math.floor(result + EPS);\n if (result === 0) {\n if (deviceDPR === 1 || !isIOS) {\n result = 1;\n }\n else {\n result = 0.5;\n }\n }\n return number < 0 ? -result : result;\n}, Upx2pxProtocol);\n\nfunction __f__(type, filename, ...args) {\n if (filename) {\n args.push(filename);\n }\n console[type].apply(console, args);\n}\n\nconst API_ADD_INTERCEPTOR = 'addInterceptor';\nconst API_REMOVE_INTERCEPTOR = 'removeInterceptor';\nconst AddInterceptorProtocol = [\n {\n name: 'method',\n type: [String, Object],\n required: true,\n },\n];\nconst RemoveInterceptorProtocol = AddInterceptorProtocol;\n\nfunction mergeInterceptorHook(interceptors, interceptor) {\n Object.keys(interceptor).forEach((hook) => {\n if (isFunction(interceptor[hook])) {\n interceptors[hook] = mergeHook(interceptors[hook], interceptor[hook]);\n }\n });\n}\nfunction removeInterceptorHook(interceptors, interceptor) {\n if (!interceptors || !interceptor) {\n return;\n }\n Object.keys(interceptor).forEach((name) => {\n const hooks = interceptors[name];\n const hook = interceptor[name];\n if (isArray(hooks) && isFunction(hook)) {\n remove(hooks, hook);\n }\n });\n}\nfunction mergeHook(parentVal, childVal) {\n const res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res ? dedupeHooks(res) : res;\n}\nfunction dedupeHooks(hooks) {\n const res = [];\n for (let i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res;\n}\nconst addInterceptor = defineSyncApi(API_ADD_INTERCEPTOR, (method, interceptor) => {\n if (isString(method) && isPlainObject(interceptor)) {\n mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), interceptor);\n }\n else if (isPlainObject(method)) {\n mergeInterceptorHook(globalInterceptors, method);\n }\n}, AddInterceptorProtocol);\nconst removeInterceptor = defineSyncApi(API_REMOVE_INTERCEPTOR, (method, interceptor) => {\n if (isString(method)) {\n if (isPlainObject(interceptor)) {\n removeInterceptorHook(scopedInterceptors[method], interceptor);\n }\n else {\n delete scopedInterceptors[method];\n }\n }\n else if (isPlainObject(method)) {\n removeInterceptorHook(globalInterceptors, method);\n }\n}, RemoveInterceptorProtocol);\nconst interceptors = {};\n\nconst API_ON = '$on';\nconst OnProtocol = [\n {\n name: 'event',\n type: String,\n required: true,\n },\n {\n name: 'callback',\n type: Function,\n required: true,\n },\n];\nconst API_ONCE = '$once';\nconst OnceProtocol = OnProtocol;\nconst API_OFF = '$off';\nconst OffProtocol = [\n {\n name: 'event',\n type: [String, Array],\n },\n {\n name: 'callback',\n type: [Function, Number],\n },\n];\nconst API_EMIT = '$emit';\nconst EmitProtocol = [\n {\n name: 'event',\n type: String,\n required: true,\n },\n];\n\nclass EventBus {\n constructor() {\n this.$emitter = new Emitter();\n }\n on(name, callback) {\n return this.$emitter.on(name, callback);\n }\n once(name, callback) {\n return this.$emitter.once(name, callback);\n }\n off(name, callback) {\n if (!name) {\n this.$emitter.e = {};\n return;\n }\n this.$emitter.off(name, callback);\n }\n emit(name, ...args) {\n this.$emitter.emit(name, ...args);\n }\n}\nconst eventBus = new EventBus();\nconst $on = defineSyncApi(API_ON, (name, callback) => {\n eventBus.on(name, callback);\n return () => eventBus.off(name, callback);\n}, OnProtocol);\nconst $once = defineSyncApi(API_ONCE, (name, callback) => {\n eventBus.once(name, callback);\n return () => eventBus.off(name, callback);\n}, OnceProtocol);\nconst $off = defineSyncApi(API_OFF, (name, callback) => {\n // 类型中不再体现 name 支持 string[] 类型, 仅在 uni.$off 保留该逻辑向下兼容\n if (!isArray(name))\n name = name ? [name] : [];\n name.forEach((n) => {\n eventBus.off(n, callback);\n });\n}, OffProtocol);\nconst $emit = defineSyncApi(API_EMIT, (name, ...args) => {\n eventBus.emit(name, ...args);\n}, EmitProtocol);\n\nlet cid;\nlet cidErrMsg;\nlet enabled;\nfunction normalizePushMessage(message) {\n try {\n return JSON.parse(message);\n }\n catch (e) { }\n return message;\n}\n/**\n * @private\n * @param args\n */\nfunction invokePushCallback(args) {\n if (args.type === 'enabled') {\n enabled = true;\n }\n else if (args.type === 'clientId') {\n cid = args.cid;\n cidErrMsg = args.errMsg;\n invokeGetPushCidCallbacks(cid, args.errMsg);\n }\n else if (args.type === 'pushMsg') {\n const message = {\n type: 'receive',\n data: normalizePushMessage(args.message),\n };\n for (let i = 0; i < onPushMessageCallbacks.length; i++) {\n const callback = onPushMessageCallbacks[i];\n callback(message);\n // 该消息已被阻止\n if (message.stopped) {\n break;\n }\n }\n }\n else if (args.type === 'click') {\n onPushMessageCallbacks.forEach((callback) => {\n callback({\n type: 'click',\n data: normalizePushMessage(args.message),\n });\n });\n }\n}\nconst getPushCidCallbacks = [];\nfunction invokeGetPushCidCallbacks(cid, errMsg) {\n getPushCidCallbacks.forEach((callback) => {\n callback(cid, errMsg);\n });\n getPushCidCallbacks.length = 0;\n}\nconst API_GET_PUSH_CLIENT_ID = 'getPushClientId';\nconst getPushClientId = defineAsyncApi(API_GET_PUSH_CLIENT_ID, (_, { resolve, reject }) => {\n Promise.resolve().then(() => {\n if (typeof enabled === 'undefined') {\n enabled = false;\n cid = '';\n cidErrMsg = 'uniPush is not enabled';\n }\n getPushCidCallbacks.push((cid, errMsg) => {\n if (cid) {\n resolve({ cid });\n }\n else {\n reject(errMsg);\n }\n });\n if (typeof cid !== 'undefined') {\n invokeGetPushCidCallbacks(cid, cidErrMsg);\n }\n });\n});\nconst onPushMessageCallbacks = [];\n// 不使用 defineOnApi 实现,是因为 defineOnApi 依赖 UniServiceJSBridge ,该对象目前在小程序上未提供,故简单实现\nconst onPushMessage = (fn) => {\n if (onPushMessageCallbacks.indexOf(fn) === -1) {\n onPushMessageCallbacks.push(fn);\n }\n};\nconst offPushMessage = (fn) => {\n if (!fn) {\n onPushMessageCallbacks.length = 0;\n }\n else {\n const index = onPushMessageCallbacks.indexOf(fn);\n if (index > -1) {\n onPushMessageCallbacks.splice(index, 1);\n }\n }\n};\n\nconst SYNC_API_RE = /^\\$|__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/;\nconst CONTEXT_API_RE = /^create|Manager$/;\n// Context例外情况\nconst CONTEXT_API_RE_EXC = ['createBLEConnection'];\nconst TASK_APIS = ['request', 'downloadFile', 'uploadFile', 'connectSocket'];\n// 同步例外情况\nconst ASYNC_API = ['createBLEConnection'];\nconst CALLBACK_API_RE = /^on|^off/;\nfunction isContextApi(name) {\n return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1;\n}\nfunction isSyncApi(name) {\n return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1;\n}\nfunction isCallbackApi(name) {\n return CALLBACK_API_RE.test(name) && name !== 'onPush';\n}\nfunction isTaskApi(name) {\n return TASK_APIS.indexOf(name) !== -1;\n}\nfunction shouldPromise(name) {\n if (isContextApi(name) || isSyncApi(name) || isCallbackApi(name)) {\n return false;\n }\n return true;\n}\n/* eslint-disable no-extend-native */\nif (!Promise.prototype.finally) {\n Promise.prototype.finally = function (onfinally) {\n const promise = this.constructor;\n return this.then((value) => promise.resolve(onfinally && onfinally()).then(() => value), (reason) => promise.resolve(onfinally && onfinally()).then(() => {\n throw reason;\n }));\n };\n}\nfunction promisify(name, api) {\n if (!shouldPromise(name)) {\n return api;\n }\n if (!isFunction(api)) {\n return api;\n }\n return function promiseApi(options = {}, ...rest) {\n if (isFunction(options.success) ||\n isFunction(options.fail) ||\n isFunction(options.complete)) {\n return wrapperReturnValue(name, invokeApi(name, api, options, rest));\n }\n return wrapperReturnValue(name, handlePromise(new Promise((resolve, reject) => {\n invokeApi(name, api, extend({}, options, {\n success: resolve,\n fail: reject,\n }), rest);\n })));\n };\n}\n\nconst CALLBACKS = ['success', 'fail', 'cancel', 'complete'];\nfunction initWrapper(protocols) {\n function processCallback(methodName, method, returnValue) {\n return function (res) {\n return method(processReturnValue(methodName, res, returnValue));\n };\n }\n function processArgs(methodName, fromArgs, argsOption = {}, returnValue = {}, keepFromArgs = false) {\n if (isPlainObject(fromArgs)) {\n // 一般 api 的参数解析\n const toArgs = (keepFromArgs === true ? fromArgs : {}); // returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值\n if (isFunction(argsOption)) {\n argsOption = argsOption(fromArgs, toArgs) || {};\n }\n for (const key in fromArgs) {\n if (hasOwn(argsOption, key)) {\n let keyOption = argsOption[key];\n if (isFunction(keyOption)) {\n keyOption = keyOption(fromArgs[key], fromArgs, toArgs);\n }\n if (!keyOption) {\n // 不支持的参数\n console.warn(`微信小程序 ${methodName} 暂不支持 ${key}`);\n }\n else if (isString(keyOption)) {\n // 重写参数 key\n toArgs[keyOption] = fromArgs[key];\n }\n else if (isPlainObject(keyOption)) {\n // {name:newName,value:value}可重新指定参数 key:value\n toArgs[keyOption.name ? keyOption.name : key] = keyOption.value;\n }\n }\n else if (CALLBACKS.indexOf(key) !== -1) {\n const callback = fromArgs[key];\n if (isFunction(callback)) {\n toArgs[key] = processCallback(methodName, callback, returnValue);\n }\n }\n else {\n if (!keepFromArgs && !hasOwn(toArgs, key)) {\n toArgs[key] = fromArgs[key];\n }\n }\n }\n return toArgs;\n }\n else if (isFunction(fromArgs)) {\n if (isFunction(argsOption)) {\n argsOption(fromArgs, {});\n }\n fromArgs = processCallback(methodName, fromArgs, returnValue);\n }\n return fromArgs;\n }\n function processReturnValue(methodName, res, returnValue, keepReturnValue = false) {\n if (isFunction(protocols.returnValue)) {\n // 处理通用 returnValue\n res = protocols.returnValue(methodName, res);\n }\n const realKeepReturnValue = keepReturnValue || (false);\n return processArgs(methodName, res, returnValue, {}, realKeepReturnValue);\n }\n return function wrapper(methodName, method) {\n /**\n * 注意:\n * - 此处method为原始全局对象上的uni方法名对应的属性值,比如method值可能为my.login,即undefined\n * - uni.env并非方法,但是也会被传入wrapper\n * - 开发者自定义的方法属性也会进入此方法,此时method为undefined,应返回undefined\n */\n const hasProtocol = hasOwn(protocols, methodName);\n if (!hasProtocol && typeof wx[methodName] !== 'function') {\n return method;\n }\n const needWrapper = hasProtocol ||\n isFunction(protocols.returnValue) ||\n isContextApi(methodName) ||\n isTaskApi(methodName);\n const hasMethod = hasProtocol || isFunction(method);\n if (!hasProtocol && !method) {\n // 暂不支持的 api\n return function () {\n console.error(`微信小程序 暂不支持${methodName}`);\n };\n }\n if (!needWrapper || !hasMethod) {\n return method;\n }\n const protocol = protocols[methodName];\n return function (arg1, arg2) {\n // 目前 api 最多两个参数\n let options = protocol || {};\n if (isFunction(protocol)) {\n options = protocol(arg1);\n }\n arg1 = processArgs(methodName, arg1, options.args, options.returnValue);\n const args = [arg1];\n if (typeof arg2 !== 'undefined') {\n args.push(arg2);\n }\n const returnValue = wx[options.name || methodName].apply(wx, args);\n if (isContextApi(methodName) || isTaskApi(methodName)) {\n if (returnValue && !returnValue.__v_skip) {\n returnValue.__v_skip = true;\n }\n }\n if (isSyncApi(methodName)) {\n // 同步 api\n return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName));\n }\n return returnValue;\n };\n };\n}\n\nconst getLocale = () => {\n // 优先使用 $locale\n const app = isFunction(getApp) && getApp({ allowDefault: true });\n if (app && app.$vm) {\n return app.$vm.$locale;\n }\n return getLocaleLanguage();\n};\nconst setLocale = (locale) => {\n const app = isFunction(getApp) && getApp();\n if (!app) {\n return false;\n }\n const oldLocale = app.$vm.$locale;\n if (oldLocale !== locale) {\n app.$vm.$locale = locale;\n onLocaleChangeCallbacks.forEach((fn) => fn({ locale }));\n return true;\n }\n return false;\n};\nconst onLocaleChangeCallbacks = [];\nconst onLocaleChange = (fn) => {\n if (onLocaleChangeCallbacks.indexOf(fn) === -1) {\n onLocaleChangeCallbacks.push(fn);\n }\n};\nif (typeof global !== 'undefined') {\n global.getLocale = getLocale;\n}\n\nconst UUID_KEY = '__DC_STAT_UUID';\nlet deviceId;\nfunction useDeviceId(global = wx) {\n return function addDeviceId(_, toRes) {\n deviceId = deviceId || global.getStorageSync(UUID_KEY);\n if (!deviceId) {\n deviceId = Date.now() + '' + Math.floor(Math.random() * 1e7);\n wx.setStorage({\n key: UUID_KEY,\n data: deviceId,\n });\n }\n toRes.deviceId = deviceId;\n };\n}\nfunction addSafeAreaInsets(fromRes, toRes) {\n if (fromRes.safeArea) {\n const safeArea = fromRes.safeArea;\n toRes.safeAreaInsets = {\n top: safeArea.top,\n left: safeArea.left,\n right: fromRes.windowWidth - safeArea.right,\n bottom: fromRes.screenHeight - safeArea.bottom,\n };\n }\n}\nfunction getOSInfo(system, platform) {\n let osName = '';\n let osVersion = '';\n if (platform &&\n (\"mp-weixin\" === 'mp-baidu')) {\n osName = platform;\n osVersion = system;\n }\n else {\n osName = system.split(' ')[0] || '';\n osVersion = system.split(' ')[1] || '';\n }\n return {\n osName: osName.toLocaleLowerCase(),\n osVersion,\n };\n}\nfunction populateParameters(fromRes, toRes) {\n const { brand = '', model = '', system = '', language = '', theme, version, platform, fontSizeSetting, SDKVersion, pixelRatio, deviceOrientation, } = fromRes;\n // const isQuickApp = \"mp-weixin\".indexOf('quickapp-webview') !== -1\n // osName osVersion\n const { osName, osVersion } = getOSInfo(system, platform);\n let hostVersion = version;\n // deviceType\n let deviceType = getGetDeviceType(fromRes, model);\n // deviceModel\n let deviceBrand = getDeviceBrand(brand);\n // hostName\n let _hostName = getHostName(fromRes);\n // deviceOrientation\n let _deviceOrientation = deviceOrientation; // 仅 微信 百度 支持\n // devicePixelRatio\n let _devicePixelRatio = pixelRatio;\n // SDKVersion\n let _SDKVersion = SDKVersion;\n // hostLanguage\n const hostLanguage = (language || '').replace(/_/g, '-');\n // wx.getAccountInfoSync\n const parameters = {\n appId: process.env.UNI_APP_ID,\n appName: process.env.UNI_APP_NAME,\n appVersion: process.env.UNI_APP_VERSION_NAME,\n appVersionCode: process.env.UNI_APP_VERSION_CODE,\n appLanguage: getAppLanguage(hostLanguage),\n uniCompileVersion: process.env.UNI_COMPILER_VERSION,\n uniCompilerVersion: process.env.UNI_COMPILER_VERSION,\n uniRuntimeVersion: process.env.UNI_COMPILER_VERSION,\n uniPlatform: process.env.UNI_SUB_PLATFORM || process.env.UNI_PLATFORM,\n deviceBrand,\n deviceModel: model,\n deviceType,\n devicePixelRatio: _devicePixelRatio,\n deviceOrientation: _deviceOrientation,\n osName,\n osVersion,\n hostTheme: theme,\n hostVersion,\n hostLanguage,\n hostName: _hostName,\n hostSDKVersion: _SDKVersion,\n hostFontSizeSetting: fontSizeSetting,\n windowTop: 0,\n windowBottom: 0,\n // TODO\n osLanguage: undefined,\n osTheme: undefined,\n ua: undefined,\n hostPackageName: undefined,\n browserName: undefined,\n browserVersion: undefined,\n isUniAppX: false,\n };\n extend(toRes, parameters);\n}\nfunction getGetDeviceType(fromRes, model) {\n // deviceType\n let deviceType = fromRes.deviceType || 'phone';\n {\n const deviceTypeMaps = {\n ipad: 'pad',\n windows: 'pc',\n mac: 'pc',\n };\n const deviceTypeMapsKeys = Object.keys(deviceTypeMaps);\n const _model = model.toLocaleLowerCase();\n for (let index = 0; index < deviceTypeMapsKeys.length; index++) {\n const _m = deviceTypeMapsKeys[index];\n if (_model.indexOf(_m) !== -1) {\n deviceType = deviceTypeMaps[_m];\n break;\n }\n }\n }\n return deviceType;\n}\nfunction getDeviceBrand(brand) {\n // deviceModel\n let deviceBrand = brand;\n if (deviceBrand) {\n deviceBrand = deviceBrand.toLocaleLowerCase();\n }\n return deviceBrand;\n}\nfunction getAppLanguage(defaultLanguage) {\n return getLocale ? getLocale() : defaultLanguage;\n}\nfunction getHostName(fromRes) {\n const _platform = 'WeChat'\n ;\n let _hostName = fromRes.hostName || _platform; // mp-jd\n {\n if (fromRes.environment) {\n _hostName = fromRes.environment;\n }\n else if (fromRes.host && fromRes.host.env) {\n _hostName = fromRes.host.env;\n }\n }\n return _hostName;\n}\n\nconst getSystemInfo = {\n returnValue: (fromRes, toRes) => {\n addSafeAreaInsets(fromRes, toRes);\n useDeviceId()(fromRes, toRes);\n populateParameters(fromRes, toRes);\n },\n};\n\nconst getSystemInfoSync = getSystemInfo;\n\nconst redirectTo = {};\n\nconst previewImage = {\n args(fromArgs, toArgs) {\n let currentIndex = parseInt(fromArgs.current);\n if (isNaN(currentIndex)) {\n return;\n }\n const urls = fromArgs.urls;\n if (!isArray(urls)) {\n return;\n }\n const len = urls.length;\n if (!len) {\n return;\n }\n if (currentIndex < 0) {\n currentIndex = 0;\n }\n else if (currentIndex >= len) {\n currentIndex = len - 1;\n }\n if (currentIndex > 0) {\n toArgs.current = urls[currentIndex];\n toArgs.urls = urls.filter((item, index) => index < currentIndex ? item !== urls[currentIndex] : true);\n }\n else {\n toArgs.current = urls[0];\n }\n return {\n indicator: false,\n loop: false,\n };\n },\n};\n\nconst showActionSheet = {\n args(fromArgs, toArgs) {\n toArgs.alertText = fromArgs.title;\n },\n};\n\nconst getDeviceInfo = {\n returnValue: (fromRes, toRes) => {\n const { brand, model, system = '', platform = '' } = fromRes;\n let deviceType = getGetDeviceType(fromRes, model);\n let deviceBrand = getDeviceBrand(brand);\n useDeviceId()(fromRes, toRes);\n const { osName, osVersion } = getOSInfo(system, platform);\n toRes = sortObject(extend(toRes, {\n deviceType,\n deviceBrand,\n deviceModel: model,\n osName,\n osVersion,\n }));\n },\n};\n\nconst getAppBaseInfo = {\n returnValue: (fromRes, toRes) => {\n const { version, language, SDKVersion, theme } = fromRes;\n let _hostName = getHostName(fromRes);\n let hostLanguage = (language || '').replace(/_/g, '-');\n const parameters = {\n hostVersion: version,\n hostLanguage,\n hostName: _hostName,\n hostSDKVersion: SDKVersion,\n hostTheme: theme,\n appId: process.env.UNI_APP_ID,\n appName: process.env.UNI_APP_NAME,\n appVersion: process.env.UNI_APP_VERSION_NAME,\n appVersionCode: process.env.UNI_APP_VERSION_CODE,\n appLanguage: getAppLanguage(hostLanguage),\n isUniAppX: false,\n uniPlatform: process.env.UNI_SUB_PLATFORM || process.env.UNI_PLATFORM,\n uniCompileVersion: process.env.UNI_COMPILER_VERSION,\n uniCompilerVersion: process.env.UNI_COMPILER_VERSION,\n uniRuntimeVersion: process.env.UNI_COMPILER_VERSION,\n };\n extend(toRes, parameters);\n },\n};\n\nconst getWindowInfo = {\n returnValue: (fromRes, toRes) => {\n addSafeAreaInsets(fromRes, toRes);\n toRes = sortObject(extend(toRes, {\n windowTop: 0,\n windowBottom: 0,\n }));\n },\n};\n\nconst getAppAuthorizeSetting = {\n returnValue: function (fromRes, toRes) {\n const { locationReducedAccuracy } = fromRes;\n toRes.locationAccuracy = 'unsupported';\n if (locationReducedAccuracy === true) {\n toRes.locationAccuracy = 'reduced';\n }\n else if (locationReducedAccuracy === false) {\n toRes.locationAccuracy = 'full';\n }\n },\n};\n\nconst onError = {\n args(fromArgs) {\n const app = getApp({ allowDefault: true }) || {};\n if (!app.$vm) {\n if (!wx.$onErrorHandlers) {\n wx.$onErrorHandlers = [];\n }\n wx.$onErrorHandlers.push(fromArgs);\n }\n else {\n injectHook(ON_ERROR, fromArgs, app.$vm.$);\n }\n },\n};\nconst offError = {\n args(fromArgs) {\n const app = getApp({ allowDefault: true }) || {};\n if (!app.$vm) {\n if (!wx.$onErrorHandlers) {\n return;\n }\n const index = wx.$onErrorHandlers.findIndex((fn) => fn === fromArgs);\n if (index !== -1) {\n wx.$onErrorHandlers.splice(index, 1);\n }\n }\n else if (fromArgs.__weh) {\n const onErrors = app.$vm.$[ON_ERROR];\n if (onErrors) {\n const index = onErrors.indexOf(fromArgs.__weh);\n if (index > -1) {\n onErrors.splice(index, 1);\n }\n }\n }\n },\n};\n\nconst onSocketOpen = {\n args() {\n if (wx.__uni_console__) {\n if (wx.__uni_console_warned__) {\n return;\n }\n wx.__uni_console_warned__ = true;\n console.warn(`开发模式下小程序日志回显会使用 socket 连接,为了避免冲突,建议使用 SocketTask 的方式去管理 WebSocket 或手动关闭日志回显功能。[详情](https://uniapp.dcloud.net.cn/tutorial/run/mp-log.html)`);\n }\n },\n};\nconst onSocketMessage = onSocketOpen;\n\nconst baseApis = {\n $on,\n $off,\n $once,\n $emit,\n upx2px,\n rpx2px: upx2px,\n interceptors,\n addInterceptor,\n removeInterceptor,\n onCreateVueApp,\n invokeCreateVueAppHook,\n getLocale,\n setLocale,\n onLocaleChange,\n getPushClientId,\n onPushMessage,\n offPushMessage,\n invokePushCallback,\n __f__,\n};\nfunction initUni(api, protocols, platform = wx) {\n const wrapper = initWrapper(protocols);\n const UniProxyHandlers = {\n get(target, key) {\n if (hasOwn(target, key)) {\n return target[key];\n }\n if (hasOwn(api, key)) {\n return promisify(key, api[key]);\n }\n if (hasOwn(baseApis, key)) {\n return promisify(key, baseApis[key]);\n }\n // event-api\n // provider-api?\n return promisify(key, wrapper(key, platform[key]));\n },\n };\n return new Proxy({}, UniProxyHandlers);\n}\n\nfunction initGetProvider(providers) {\n return function getProvider({ service, success, fail, complete, }) {\n let res;\n if (providers[service]) {\n res = {\n errMsg: 'getProvider:ok',\n service,\n provider: providers[service],\n };\n isFunction(success) && success(res);\n }\n else {\n res = {\n errMsg: 'getProvider:fail:服务[' + service + ']不存在',\n };\n isFunction(fail) && fail(res);\n }\n isFunction(complete) && complete(res);\n };\n}\n\nconst objectKeys = [\n 'qy',\n 'env',\n 'error',\n 'version',\n 'lanDebug',\n 'cloud',\n 'serviceMarket',\n 'router',\n 'worklet',\n '__webpack_require_UNI_MP_PLUGIN__',\n];\nconst singlePageDisableKey = ['lanDebug', 'router', 'worklet'];\nconst launchOption = wx.getLaunchOptionsSync\n ? wx.getLaunchOptionsSync()\n : null;\nfunction isWxKey(key) {\n if (launchOption &&\n launchOption.scene === 1154 &&\n singlePageDisableKey.includes(key)) {\n return false;\n }\n return objectKeys.indexOf(key) > -1 || typeof wx[key] === 'function';\n}\nfunction initWx() {\n const newWx = {};\n for (const key in wx) {\n if (isWxKey(key)) {\n // TODO wrapper function\n newWx[key] = wx[key];\n }\n }\n if (typeof globalThis !== 'undefined' &&\n typeof requireMiniProgram === 'undefined') {\n globalThis.wx = newWx;\n }\n return newWx;\n}\n\nconst mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];\n\nconst getProvider = initGetProvider({\n oauth: ['weixin'],\n share: ['weixin'],\n payment: ['wxpay'],\n push: ['weixin'],\n});\nfunction initComponentMocks(component) {\n const res = Object.create(null);\n mocks.forEach((name) => {\n res[name] = component[name];\n });\n return res;\n}\n/**\n * 微信小程序内部会 Object.keys(vm),导致告警\n * Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.\n * @returns\n */\nfunction createSelectorQuery() {\n const query = wx$2.createSelectorQuery();\n const oldIn = query.in;\n query.in = function newIn(component) {\n if (component.$scope) {\n // fix skyline 微信小程序内部无法读取component导致报错\n return oldIn.call(this, component.$scope);\n }\n return oldIn.call(this, initComponentMocks(component));\n };\n return query;\n}\nconst wx$2 = initWx();\nif (!wx$2.canIUse('getAppBaseInfo')) {\n wx$2.getAppBaseInfo = wx$2.getSystemInfoSync;\n}\nif (!wx$2.canIUse('getWindowInfo')) {\n wx$2.getWindowInfo = wx$2.getSystemInfoSync;\n}\nif (!wx$2.canIUse('getDeviceInfo')) {\n wx$2.getDeviceInfo = wx$2.getSystemInfoSync;\n}\nlet baseInfo = wx$2.getAppBaseInfo && wx$2.getAppBaseInfo();\nif (!baseInfo) {\n baseInfo = wx$2.getSystemInfoSync();\n}\nconst host = baseInfo ? baseInfo.host : null;\nconst shareVideoMessage = host && host.env === 'SAAASDK'\n ? wx$2.miniapp.shareVideoMessage\n : wx$2.shareVideoMessage;\n\nvar shims = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createSelectorQuery: createSelectorQuery,\n getProvider: getProvider,\n shareVideoMessage: shareVideoMessage\n});\n\nconst compressImage = {\n args(fromArgs, toArgs) {\n // https://developers.weixin.qq.com/community/develop/doc/000c08940c865011298e0a43256800?highLine=compressHeight\n // @ts-expect-error\n if (fromArgs.compressedHeight && !toArgs.compressHeight) {\n // @ts-expect-error\n toArgs.compressHeight = fromArgs.compressedHeight;\n }\n // @ts-expect-error\n if (fromArgs.compressedWidth && !toArgs.compressWidth) {\n // @ts-expect-error\n toArgs.compressWidth = fromArgs.compressedWidth;\n }\n },\n};\n\nvar protocols = /*#__PURE__*/Object.freeze({\n __proto__: null,\n compressImage: compressImage,\n getAppAuthorizeSetting: getAppAuthorizeSetting,\n getAppBaseInfo: getAppBaseInfo,\n getDeviceInfo: getDeviceInfo,\n getSystemInfo: getSystemInfo,\n getSystemInfoSync: getSystemInfoSync,\n getWindowInfo: getWindowInfo,\n offError: offError,\n onError: onError,\n onSocketMessage: onSocketMessage,\n onSocketOpen: onSocketOpen,\n previewImage: previewImage,\n redirectTo: redirectTo,\n showActionSheet: showActionSheet\n});\n\nconst wx$1 = initWx();\nvar index = initUni(shims, protocols, wx$1);\n\nexport { index as default, wx$1 as wx };\n","/// <reference types=\"@dcloudio/uni-app-x/types/uni/global\" />\nfunction initRuntimeSocket(hosts, port, id) {\n if (hosts == '' || port == '' || id == '')\n return Promise.resolve(null);\n return hosts\n .split(',')\n .reduce((promise, host) => {\n return promise.then((socket) => {\n if (socket != null)\n return Promise.resolve(socket);\n return tryConnectSocket(host, port, id);\n });\n }, Promise.resolve(null));\n}\nconst SOCKET_TIMEOUT = 500;\nfunction tryConnectSocket(host, port, id) {\n return new Promise((resolve, reject) => {\n const socket = uni.connectSocket({\n url: `ws://${host}:${port}/${id}`,\n multiple: true, // 支付宝小程序 是否开启多实例\n fail() {\n resolve(null);\n },\n });\n const timer = setTimeout(() => {\n // @ts-expect-error\n socket.close({\n code: 1006,\n reason: 'connect timeout',\n });\n resolve(null);\n }, SOCKET_TIMEOUT);\n socket.onOpen((e) => {\n clearTimeout(timer);\n resolve(socket);\n });\n socket.onClose((e) => {\n clearTimeout(timer);\n resolve(null);\n });\n socket.onError((e) => {\n clearTimeout(timer);\n resolve(null);\n });\n });\n}\n\nfunction formatMessage(type, args) {\n try {\n return {\n type,\n args: formatArgs(args),\n };\n }\n catch (e) {\n // originalConsole.error(e)\n }\n return {\n type,\n args: [],\n };\n}\nfunction formatArgs(args) {\n return args.map((arg) => formatArg(arg));\n}\nfunction formatArg(arg, depth = 0) {\n if (depth >= 7) {\n return {\n type: 'object',\n value: '[Maximum depth reached]',\n };\n }\n const type = typeof arg;\n switch (type) {\n case 'string':\n return formatString(arg);\n case 'number':\n return formatNumber(arg);\n case 'boolean':\n return formatBoolean(arg);\n case 'object':\n return formatObject(arg, depth);\n case 'undefined':\n return formatUndefined();\n case 'function':\n return formatFunction(arg);\n case 'symbol':\n {\n return formatSymbol(arg);\n }\n case 'bigint':\n return formatBigInt(arg);\n }\n}\nfunction formatFunction(value) {\n return {\n type: 'function',\n value: `function ${value.name}() {}`,\n };\n}\nfunction formatUndefined() {\n return {\n type: 'undefined',\n };\n}\nfunction formatBoolean(value) {\n return {\n type: 'boolean',\n value: String(value),\n };\n}\nfunction formatNumber(value) {\n return {\n type: 'number',\n value: String(value),\n };\n}\nfunction formatBigInt(value) {\n return {\n type: 'bigint',\n value: String(value),\n };\n}\nfunction formatString(value) {\n return {\n type: 'string',\n value,\n };\n}\nfunction formatSymbol(value) {\n return {\n type: 'symbol',\n value: value.description,\n };\n}\nfunction formatObject(value, depth) {\n if (value === null) {\n return {\n type: 'null',\n };\n }\n {\n if (isComponentPublicInstance(value)) {\n return formatComponentPublicInstance(value, depth);\n }\n if (isComponentInternalInstance(value)) {\n return formatComponentInternalInstance(value, depth);\n }\n if (isUniElement(value)) {\n return formatUniElement(value, depth);\n }\n if (isCSSStyleDeclaration(value)) {\n return formatCSSStyleDeclaration(value, depth);\n }\n }\n if (Array.isArray(value)) {\n return {\n type: 'object',\n subType: 'array',\n value: {\n properties: value.map((v, i) => formatArrayElement(v, i, depth + 1)),\n },\n };\n }\n if (value instanceof Set) {\n return {\n type: 'object',\n subType: 'set',\n className: 'Set',\n description: `Set(${value.size})`,\n value: {\n entries: Array.from(value).map((v) => formatSetEntry(v, depth + 1)),\n },\n };\n }\n if (value instanceof Map) {\n return {\n type: 'object',\n subType: 'map',\n className: 'Map',\n description: `Map(${value.size})`,\n value: {\n entries: Array.from(value.entries()).map((v) => formatMapEntry(v, depth + 1)),\n },\n };\n }\n if (value instanceof Promise) {\n return {\n type: 'object',\n subType: 'promise',\n value: {\n properties: [],\n },\n };\n }\n if (value instanceof RegExp) {\n return {\n type: 'object',\n subType: 'regexp',\n value: String(value),\n className: 'Regexp',\n };\n }\n if (value instanceof Date) {\n return {\n type: 'object',\n subType: 'date',\n value: String(value),\n className: 'Date',\n };\n }\n if (value instanceof Error) {\n return {\n type: 'object',\n subType: 'error',\n value: value.message || String(value),\n className: value.name || 'Error',\n };\n }\n let className = undefined;\n {\n const constructor = value.constructor;\n if (constructor) {\n // @ts-expect-error\n if (constructor.get$UTSMetadata$) {\n // @ts-expect-error\n className = constructor.get$UTSMetadata$().name;\n }\n }\n }\n return {\n type: 'object',\n className,\n value: {\n properties: Object.entries(value).map((entry) => formatObjectProperty(entry[0], entry[1], depth + 1)),\n },\n };\n}\nfunction isComponentPublicInstance(value) {\n return value.$ && isComponentInternalInstance(value.$);\n}\nfunction isComponentInternalInstance(value) {\n return value.type && value.uid != null && value.appContext;\n}\nfunction formatComponentPublicInstance(value, depth) {\n return {\n type: 'object',\n className: 'ComponentPublicInstance',\n value: {\n properties: Object.entries(value.$.type).map(([name, value]) => formatObjectProperty(name, value, depth + 1)),\n },\n };\n}\nfunction formatComponentInternalInstance(value, depth) {\n return {\n type: 'object',\n className: 'ComponentInternalInstance',\n value: {\n properties: Object.entries(value.type).map(([name, value]) => formatObjectProperty(name, value, depth + 1)),\n },\n };\n}\nfunction isUniElement(value) {\n return value.style && value.tagName != null && value.nodeName != null;\n}\nfunction formatUniElement(value, depth) {\n return {\n type: 'object',\n // 非 x 没有 UniElement 的概念\n // className: 'UniElement',\n value: {\n properties: Object.entries(value)\n .filter(([name]) => [\n 'id',\n 'tagName',\n 'nodeName',\n 'dataset',\n 'offsetTop',\n 'offsetLeft',\n 'style',\n ].includes(name))\n .map(([name, value]) => formatObjectProperty(name, value, depth + 1)),\n },\n };\n}\nfunction isCSSStyleDeclaration(value) {\n return (typeof value.getPropertyValue === 'function' &&\n typeof value.setProperty === 'function' &&\n value.$styles);\n}\nfunction formatCSSStyleDeclaration(style, depth) {\n return {\n type: 'object',\n value: {\n properties: Object.entries(style.$styles).map(([name, value]) => formatObjectProperty(name, value, depth + 1)),\n },\n };\n}\nfunction formatObjectProperty(name, value, depth) {\n const result = formatArg(value, depth);\n result.name = name;\n return result;\n}\nfunction formatArrayElement(value, index, depth) {\n const result = formatArg(value, depth);\n result.name = `${index}`;\n return result;\n}\nfunction formatSetEntry(value, depth) {\n return {\n value: formatArg(value, depth),\n };\n}\nfunction formatMapEntry(value, depth) {\n return {\n key: formatArg(value[0], depth),\n value: formatArg(value[1], depth),\n };\n}\n\nconst CONSOLE_TYPES = ['log', 'warn', 'error', 'info', 'debug'];\nlet sendConsole = null;\nconst messageQueue = [];\nconst messageExtra = {};\nfunction sendConsoleMessages(messages) {\n if (sendConsole == null) {\n messageQueue.push(...messages);\n return;\n }\n sendConsole(JSON.stringify(Object.assign({\n type: 'console',\n data: messages,\n }, messageExtra)));\n}\nfunction setSendConsole(value, extra = {}) {\n sendConsole = value;\n Object.assign(messageExtra, extra);\n if (value != null && messageQueue.length > 0) {\n const messages = messageQueue.slice();\n messageQueue.length = 0;\n sendConsoleMessages(messages);\n }\n}\nconst originalConsole = /*@__PURE__*/ CONSOLE_TYPES.reduce((methods, type) => {\n methods[type] = console[type].bind(console);\n return methods;\n}, {});\nconst atFileRegex = /^\\s*at\\s+[\\w/./-]+:\\d+$/;\nfunction rewriteConsole() {\n function wrapConsole(type) {\n return function (...args) {\n const originalArgs = [...args];\n if (originalArgs.length) {\n const maybeAtFile = originalArgs[originalArgs.length - 1];\n // 移除最后的 at pages/index/index.uvue:6\n if (typeof maybeAtFile === 'string' && atFileRegex.test(maybeAtFile)) {\n originalArgs.pop();\n }\n }\n if (process.env.UNI_CONSOLE_KEEP_ORIGINAL) {\n originalConsole[type](...originalArgs);\n }\n sendConsoleMessages([formatMessage(type, args)]);\n };\n }\n // 百度小程序不允许赋值,所以需要判断是否可写\n if (isConsoleWritable()) {\n CONSOLE_TYPES.forEach((type) => {\n console[type] = wrapConsole(type);\n });\n return function restoreConsole() {\n CONSOLE_TYPES.forEach((type) => {\n console[type] = originalConsole[type];\n });\n };\n }\n else {\n {\n if (typeof uni !== 'undefined' && uni.__f__) {\n const oldLog = uni.__f__;\n if (oldLog) {\n // 重写 uni.__f__ 方法,这样的话,仅能打印开发者代码里的日志,其他没有被重写为__f__的日志将无法打印(比如uni-app框架、小程序框架等)\n uni.__f__ = function (...args) {\n const [type, filename, ...rest] = args;\n // 原始日志移除 filename\n oldLog(type, '', ...rest);\n sendConsoleMessages([formatMessage(type, [...rest, filename])]);\n };\n return function restoreConsole() {\n uni.__f__ = oldLog;\n };\n }\n }\n }\n }\n return function restoreConsole() { };\n}\nfunction isConsoleWritable() {\n const value = console.log;\n const sym = Symbol();\n try {\n // @ts-expect-error\n console.log = sym;\n }\n catch (ex) {\n return false;\n }\n // @ts-expect-error\n const isWritable = console.log === sym;\n console.log = value;\n return isWritable;\n}\n\nlet sendError = null;\n// App.onError会监听到两类错误,一类是小程序自身抛出的,一类是 vue 的 errorHandler 触发的\n// uni.onError 和 App.onError 会同时监听到错误(主要是App.onError监听之前的错误),所以需要用 Set 来去重\n// uni.onError 会在 App.onError 上边同时增加监听,因为要监听 vue 的errorHandler\n// 目前 vue 的 errorHandler 仅会callHook('onError'),所以需要把uni.onError的也挂在 App.onError 上\nconst errorQueue = new Set();\nconst errorExtra = {};\nfunction sendErrorMessages(errors) {\n if (sendError == null) {\n errors.forEach((error) => {\n errorQueue.add(error);\n });\n return;\n }\n const data = errors\n .map((err) => {\n const isPromiseRejection = err && 'promise' in err && 'reason' in err;\n const prefix = isPromiseRejection ? 'UnhandledPromiseRejection: ' : '';\n if (isPromiseRejection) {\n err = err.reason;\n }\n if (err instanceof Error && err.stack) {\n if (err.message && !err.stack.includes(err.message)) {\n return `${prefix}${err.message}\n${err.stack}`;\n }\n return `${prefix}${err.stack}`;\n }\n if (typeof err === 'object' && err !== null) {\n try {\n return prefix + JSON.stringify(err);\n }\n catch (err) {\n return prefix + String(err);\n }\n }\n return prefix + String(err);\n })\n .filter(Boolean);\n if (data.length > 0) {\n sendError(JSON.stringify(Object.assign({\n type: 'error',\n data,\n }, errorExtra)));\n }\n}\nfunction setSendError(value, extra = {}) {\n sendError = value;\n Object.assign(errorExtra, extra);\n if (value != null && errorQueue.size > 0) {\n const errors = Array.from(errorQueue);\n errorQueue.clear();\n sendErrorMessages(errors);\n }\n}\nfunction initOnError() {\n function onError(error) {\n try {\n // 小红书小程序 socket.send 时,会报错,onError错误信息为:\n // Cannot create property 'errMsg' on string 'taskId'\n // 导致陷入死循环\n if (typeof PromiseRejectionEvent !== 'undefined' &&\n error instanceof PromiseRejectionEvent &&\n error.reason instanceof Error &&\n error.reason.message &&\n error.reason.message.includes(`Cannot create property 'errMsg' on string 'taskId`)) {\n return;\n }\n if (process.env.UNI_CONSOLE_KEEP_ORIGINAL) {\n originalConsole.error(error);\n }\n sendErrorMessages([error]);\n }\n catch (err) {\n originalConsole.error(err);\n }\n }\n if (typeof uni.onError === 'function') {\n uni.onError(onError);\n }\n if (typeof uni.onUnhandledRejection === 'function') {\n uni.onUnhandledRejection(onError);\n }\n return function offError() {\n if (typeof uni.offError === 'function') {\n uni.offError(onError);\n }\n if (typeof uni.offUnhandledRejection === 'function') {\n uni.offUnhandledRejection(onError);\n }\n };\n}\n\nfunction initRuntimeSocketService() {\n const hosts = process.env.UNI_SOCKET_HOSTS;\n const port = process.env.UNI_SOCKET_PORT;\n const id = process.env.UNI_SOCKET_ID;\n if (!hosts || !port || !id)\n return Promise.resolve(false);\n // 百度小程序需要延迟初始化,不然会存在循环引用问题vendor.js\n const lazy = typeof swan !== 'undefined';\n // 重写需要同步,避免丢失早期日志信息\n let restoreError = lazy ? () => { } : initOnError();\n let restoreConsole = lazy ? () => { } : rewriteConsole();\n // 百度小程序需要异步初始化,不然调用 uni.connectSocket 会循环引入vendor.js\n return Promise.resolve().then(() => {\n if (lazy) {\n restoreError = initOnError();\n restoreConsole = rewriteConsole();\n }\n return initRuntimeSocket(hosts, port, id).then((socket) => {\n if (!socket) {\n restoreError();\n restoreConsole();\n originalConsole.error(wrapError('开发模式下日志通道建立 socket 连接失败。'));\n originalConsole.error(wrapError('如果是小程序平台,请勾选不校验合法域名配置。'));\n originalConsole.error(wrapError('如果是运行到真机,请确认手机与电脑处于同一网络。'));\n return false;\n }\n initMiniProgramGlobalFlag();\n socket.onClose(() => {\n if (process.env.UNI_DEBUG) {\n originalConsole.log(`uni-app:[${Date.now()}][socket]`, 'connect close and restore');\n }\n originalConsole.error(wrapError('开发模式下日志通道 socket 连接关闭,请在 HBuilderX 中重新运行。'));\n restoreError();\n restoreConsole();\n });\n setSendConsole((data) => {\n if (process.env.UNI_DEBUG) {\n originalConsole.log(`uni-app:[${Date.now()}][console]`, data);\n }\n socket.send({\n data,\n });\n });\n setSendError((data) => {\n if (process.env.UNI_DEBUG) {\n originalConsole.log(`uni-app:[${Date.now()}][error]`, data);\n }\n socket.send({\n data,\n });\n });\n return true;\n });\n });\n}\nconst ERROR_CHAR = '\\u200C';\nfunction wrapError(error) {\n return `${ERROR_CHAR}${error}${ERROR_CHAR}`;\n}\nfunction initMiniProgramGlobalFlag() {\n if (typeof wx !== 'undefined') {\n // @ts-expect-error\n wx.__uni_console__ = true;\n // @ts-expect-error\n }\n else if (typeof my !== 'undefined') {\n // @ts-expect-error\n my.__uni_console__ = true;\n }\n else if (typeof tt !== 'undefined') {\n tt.__uni_console__ = true;\n }\n else if (typeof swan !== 'undefined') {\n swan.__uni_console__ = true;\n }\n else if (typeof qq !== 'undefined') {\n qq.__uni_console__ = true;\n }\n else if (typeof ks !== 'undefined') {\n ks.__uni_console__ = true;\n }\n else if (typeof jd !== 'undefined') {\n jd.__uni_console__ = true;\n }\n else if (typeof xhs !== 'undefined') {\n xhs.__uni_console__ = true;\n }\n else if (typeof has !== 'undefined') {\n has.__uni_console__ = true;\n }\n else if (typeof qa !== 'undefined') {\n qa.__uni_console__ = true;\n }\n}\ninitRuntimeSocketService();\n\nexport { initRuntimeSocketService };\n","import { VIRTUAL_HOST_ID, SLOT_DEFAULT_NAME, invokeArrayFns, MINI_PROGRAM_PAGE_RUNTIME_HOOKS, ON_LOAD, ON_SHOW, ON_HIDE, ON_UNLOAD, ON_RESIZE, ON_TAB_ITEM_TAP, ON_REACH_BOTTOM, ON_PULL_DOWN_REFRESH, ON_ADD_TO_FAVORITES, isUniLifecycleHook, ON_READY, once, ON_LAUNCH, ON_ERROR, ON_THEME_CHANGE, ON_PAGE_NOT_FOUND, ON_UNHANDLE_REJECTION, VIRTUAL_HOST_STYLE, VIRTUAL_HOST_CLASS, VIRTUAL_HOST_HIDDEN, addLeadingSlash, stringifyQuery, customizeEvent } from '@dcloudio/uni-shared';\nimport { hasOwn, isArray, isFunction, extend, isPlainObject, isObject } from '@vue/shared';\nimport { injectHook, ref, findComponentPropsData, toRaw, updateProps, hasQueueJob, invalidateJob, devtoolsComponentAdded, getExposeProxy, pruneComponentPropsCache } from 'vue';\nimport { LOCALE_EN, normalizeLocale } from '@dcloudio/uni-i18n';\n\nfunction initVueIds(vueIds, mpInstance) {\n if (!vueIds) {\n return;\n }\n const ids = vueIds.split(',');\n const len = ids.length;\n if (len === 1) {\n mpInstance._$vueId = ids[0];\n }\n else if (len === 2) {\n mpInstance._$vueId = ids[0];\n mpInstance._$vuePid = ids[1];\n }\n}\nconst EXTRAS = ['externalClasses'];\nfunction initExtraOptions(miniProgramComponentOptions, vueOptions) {\n EXTRAS.forEach((name) => {\n if (hasOwn(vueOptions, name)) {\n miniProgramComponentOptions[name] = vueOptions[name];\n }\n });\n}\nconst WORKLET_RE = /_(.*)_worklet_factory_/;\nfunction initWorkletMethods(mpMethods, vueMethods) {\n if (vueMethods) {\n Object.keys(vueMethods).forEach((name) => {\n const matches = name.match(WORKLET_RE);\n if (matches) {\n const workletName = matches[1];\n mpMethods[name] = vueMethods[name];\n mpMethods[workletName] = vueMethods[workletName];\n }\n });\n }\n}\nfunction initWxsCallMethods(methods, wxsCallMethods) {\n if (!isArray(wxsCallMethods)) {\n return;\n }\n wxsCallMethods.forEach((callMethod) => {\n methods[callMethod] = function (args) {\n return this.$vm[callMethod](args);\n };\n });\n}\nfunction selectAllComponents(mpInstance, selector, $refs) {\n const components = mpInstance.selectAllComponents(selector);\n components.forEach((component) => {\n const ref = component.properties.uR;\n $refs[ref] = component.$vm || component;\n });\n}\nfunction initRefs(instance, mpInstance) {\n Object.defineProperty(instance, 'refs', {\n get() {\n const $refs = {};\n selectAllComponents(mpInstance, '.r', $refs);\n const forComponents = mpInstance.selectAllComponents('.r-i-f');\n forComponents.forEach((component) => {\n const ref = component.properties.uR;\n if (!ref) {\n return;\n }\n if (!$refs[ref]) {\n $refs[ref] = [];\n }\n $refs[ref].push(component.$vm || component);\n });\n return $refs;\n },\n });\n}\nfunction findVmByVueId(instance, vuePid) {\n // 标准 vue3 中 没有 $children,定制了内核\n const $children = instance.$children;\n // 优先查找直属(反向查找:https://github.com/dcloudio/uni-app/issues/1200)\n for (let i = $children.length - 1; i >= 0; i--) {\n const childVm = $children[i];\n if (childVm.$scope._$vueId === vuePid) {\n return childVm;\n }\n }\n // 反向递归查找\n let parentVm;\n for (let i = $children.length - 1; i >= 0; i--) {\n parentVm = findVmByVueId($children[i], vuePid);\n if (parentVm) {\n return parentVm;\n }\n }\n}\nfunction getLocaleLanguage() {\n let localeLanguage = '';\n {\n const appBaseInfo = wx.getAppBaseInfo();\n const language = appBaseInfo && appBaseInfo.language ? appBaseInfo.language : LOCALE_EN;\n localeLanguage = normalizeLocale(language) || LOCALE_EN;\n }\n return localeLanguage;\n}\n\nconst MP_METHODS = [\n 'createSelectorQuery',\n 'createIntersectionObserver',\n 'selectAllComponents',\n 'selectComponent',\n];\nfunction createEmitFn(oldEmit, ctx) {\n return function emit(event, ...args) {\n const scope = ctx.$scope;\n if (scope && event) {\n const detail = { __args__: args };\n {\n scope.triggerEvent(event, detail);\n }\n }\n return oldEmit.apply(this, [event, ...args]);\n };\n}\nfunction initBaseInstance(instance, options) {\n const ctx = instance.ctx;\n // mp\n ctx.mpType = options.mpType; // @deprecated\n ctx.$mpType = options.mpType;\n ctx.$mpPlatform = \"mp-weixin\";\n ctx.$scope = options.mpInstance;\n {\n // mergeVirtualHostAttributes\n Object.defineProperties(ctx, {\n // only id\n [VIRTUAL_HOST_ID]: {\n get() {\n const id = this.$scope.data[VIRTUAL_HOST_ID];\n // props in page can be undefined\n return id === undefined ? '' : id;\n },\n },\n });\n }\n // TODO @deprecated\n ctx.$mp = {};\n if (__VUE_OPTIONS_API__) {\n ctx._self = {};\n }\n // slots\n instance.slots = {};\n if (isArray(options.slots) && options.slots.length) {\n options.slots.forEach((name) => {\n instance.slots[name] = true;\n });\n if (instance.slots[SLOT_DEFAULT_NAME]) {\n instance.slots.default = true;\n }\n }\n ctx.getOpenerEventChannel = function () {\n // 微信小程序使用自身getOpenerEventChannel\n {\n return options.mpInstance.getOpenerEventChannel();\n }\n };\n ctx.$hasHook = hasHook;\n ctx.$callHook = callHook;\n // $emit\n instance.emit = createEmitFn(instance.emit, ctx);\n}\nfunction initComponentInstance(instance, options) {\n initBaseInstance(instance, options);\n const ctx = instance.ctx;\n MP_METHODS.forEach((method) => {\n ctx[method] = function (...args) {\n const mpInstance = ctx.$scope;\n if (mpInstance && mpInstance[method]) {\n return mpInstance[method].apply(mpInstance, args);\n }\n };\n });\n}\nfunction initMocks(instance, mpInstance, mocks) {\n const ctx = instance.ctx;\n mocks.forEach((mock) => {\n if (hasOwn(mpInstance, mock)) {\n instance[mock] = ctx[mock] = mpInstance[mock];\n }\n });\n}\nfunction hasHook(name) {\n const hooks = this.$[name];\n if (hooks && hooks.length) {\n return true;\n }\n return false;\n}\nfunction callHook(name, args) {\n if (name === 'mounted') {\n callHook.call(this, 'bm'); // beforeMount\n this.$.isMounted = true;\n name = 'm';\n }\n const hooks = this.$[name];\n return hooks && invokeArrayFns(hooks, args);\n}\n\nconst PAGE_INIT_HOOKS = [\n ON_LOAD,\n ON_SHOW,\n ON_HIDE,\n ON_UNLOAD,\n ON_RESIZE,\n ON_TAB_ITEM_TAP,\n ON_REACH_BOTTOM,\n ON_PULL_DOWN_REFRESH,\n ON_ADD_TO_FAVORITES,\n // 'onReady', // lifetimes.ready\n // 'onPageScroll', // 影响性能,开发者手动注册\n // 'onShareTimeline', // 右上角菜单,开发者手动注册\n // 'onShareAppMessage' // 右上角菜单,开发者手动注册\n];\nfunction findHooks(vueOptions, hooks = new Set()) {\n if (vueOptions) {\n Object.keys(vueOptions).forEach((name) => {\n if (isUniLifecycleHook(name, vueOptions[name])) {\n hooks.add(name);\n }\n });\n if (__VUE_OPTIONS_API__) {\n const { extends: extendsOptions, mixins } = vueOptions;\n if (mixins) {\n mixins.forEach((mixin) => findHooks(mixin, hooks));\n }\n if (extendsOptions) {\n findHooks(extendsOptions, hooks);\n }\n }\n }\n return hooks;\n}\nfunction initHook(mpOptions, hook, excludes) {\n if (excludes.indexOf(hook) === -1 && !hasOwn(mpOptions, hook)) {\n mpOptions[hook] = function (args) {\n return this.$vm && this.$vm.$callHook(hook, args);\n };\n }\n}\nconst EXCLUDE_HOOKS = [ON_READY];\nfunction initHooks(mpOptions, hooks, excludes = EXCLUDE_HOOKS) {\n hooks.forEach((hook) => initHook(mpOptions, hook, excludes));\n}\nfunction initUnknownHooks(mpOptions, vueOptions, excludes = EXCLUDE_HOOKS) {\n findHooks(vueOptions).forEach((hook) => initHook(mpOptions, hook, excludes));\n}\nfunction initRuntimeHooks(mpOptions, runtimeHooks) {\n if (!runtimeHooks) {\n return;\n }\n const hooks = Object.keys(MINI_PROGRAM_PAGE_RUNTIME_HOOKS);\n hooks.forEach((hook) => {\n if (runtimeHooks & MINI_PROGRAM_PAGE_RUNTIME_HOOKS[hook]) {\n initHook(mpOptions, hook, []);\n }\n });\n}\nconst findMixinRuntimeHooks = /*#__PURE__*/ once(() => {\n const runtimeHooks = [];\n const app = isFunction(getApp) && getApp({ allowDefault: true });\n if (app && app.$vm && app.$vm.$) {\n const mixins = app.$vm.$.appContext.mixins;\n if (isArray(mixins)) {\n const hooks = Object.keys(MINI_PROGRAM_PAGE_RUNTIME_HOOKS);\n mixins.forEach((mixin) => {\n hooks.forEach((hook) => {\n if (hasOwn(mixin, hook) && !runtimeHooks.includes(hook)) {\n runtimeHooks.push(hook);\n }\n });\n });\n }\n }\n return runtimeHooks;\n});\nfunction initMixinRuntimeHooks(mpOptions) {\n initHooks(mpOptions, findMixinRuntimeHooks());\n}\n\nconst HOOKS = [\n ON_SHOW,\n ON_HIDE,\n ON_ERROR,\n ON_THEME_CHANGE,\n ON_PAGE_NOT_FOUND,\n ON_UNHANDLE_REJECTION,\n];\nfunction parseApp(instance, parseAppOptions) {\n const internalInstance = instance.$;\n if (__VUE_PROD_DEVTOOLS__) {\n // 定制 App 的 $children\n Object.defineProperty(internalInstance.ctx, '$children', {\n get() {\n return getCurrentPages().map((page) => page.$vm);\n },\n });\n }\n const appOptions = {\n globalData: (instance.$options && instance.$options.globalData) || {},\n $vm: instance, // mp-alipay 组件 data 初始化比 onLaunch 早,提前挂载\n onLaunch(options) {\n this.$vm = instance; // 飞书小程序可能会把 AppOptions 序列化,导致 $vm 对象部分属性丢失\n const ctx = internalInstance.ctx;\n if (this.$vm && ctx.$scope && ctx.$callHook) {\n // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前\n // $scope值在微信小程序混合分包情况下存在,额外用$callHook兼容判断处理\n return;\n }\n initBaseInstance(internalInstance, {\n mpType: 'app',\n mpInstance: this,\n slots: [],\n });\n ctx.globalData = this.globalData;\n instance.$callHook(ON_LAUNCH, options);\n },\n };\n const onErrorHandlers = wx.$onErrorHandlers;\n if (onErrorHandlers) {\n onErrorHandlers.forEach((fn) => {\n injectHook(ON_ERROR, fn, internalInstance);\n });\n onErrorHandlers.length = 0;\n }\n initLocale(instance);\n const vueOptions = instance.$.type;\n initHooks(appOptions, HOOKS);\n initUnknownHooks(appOptions, vueOptions);\n if (__VUE_OPTIONS_API__) {\n const methods = vueOptions.methods;\n methods && extend(appOptions, methods);\n }\n return appOptions;\n}\nfunction initCreateApp(parseAppOptions) {\n return function createApp(vm) {\n return App(parseApp(vm));\n };\n}\nfunction initCreateSubpackageApp(parseAppOptions) {\n return function createApp(vm) {\n const appOptions = parseApp(vm);\n const app = isFunction(getApp) &&\n getApp({\n allowDefault: true,\n });\n if (!app)\n return;\n vm.$.ctx.$scope = app;\n const globalData = app.globalData;\n if (globalData) {\n Object.keys(appOptions.globalData).forEach((name) => {\n if (!hasOwn(globalData, name)) {\n globalData[name] = appOptions.globalData[name];\n }\n });\n }\n Object.keys(appOptions).forEach((name) => {\n if (!hasOwn(app, name)) {\n app[name] = appOptions[name];\n }\n });\n initAppLifecycle(appOptions, vm);\n if (process.env.UNI_SUBPACKAGE) {\n (wx.$subpackages || (wx.$subpackages = {}))[process.env.UNI_SUBPACKAGE] = {\n $vm: vm,\n };\n }\n };\n}\nfunction initAppLifecycle(appOptions, vm) {\n if (isFunction(appOptions.onLaunch)) {\n const args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();\n appOptions.onLaunch(args);\n }\n if (isFunction(appOptions.onShow) && wx.onAppShow) {\n wx.onAppShow((args) => {\n vm.$callHook('onShow', args);\n });\n }\n if (isFunction(appOptions.onHide) && wx.onAppHide) {\n wx.onAppHide((args) => {\n vm.$callHook('onHide', args);\n });\n }\n}\nfunction initLocale(appVm) {\n const locale = ref(getLocaleLanguage());\n Object.defineProperty(appVm, '$locale', {\n get() {\n return locale.value;\n },\n set(v) {\n locale.value = v;\n },\n });\n}\n\nconst builtInProps = [\n // 百度小程序,快手小程序自定义组件不支持绑定动态事件,动态dataset,故通过props传递事件信息\n // event-opts\n 'eO',\n // 组件 ref\n 'uR',\n // 组件 ref-in-for\n 'uRIF',\n // 组件 id\n 'uI',\n // 组件类型 m: 小程序组件\n 'uT',\n // 组件 props\n 'uP',\n // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots\n 'uS',\n];\nfunction initDefaultProps(options, isBehavior = false) {\n const properties = {};\n if (!isBehavior) {\n // 均不指定类型,避免微信小程序 property received type-uncompatible value 警告\n builtInProps.forEach((name) => {\n properties[name] = {\n type: null,\n value: '',\n };\n });\n // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots\n function observerSlots(newVal) {\n const $slots = Object.create(null);\n newVal &&\n newVal.forEach((slotName) => {\n $slots[slotName] = true;\n });\n this.setData({\n $slots,\n });\n }\n properties.uS = {\n type: null,\n value: [],\n };\n {\n properties.uS.observer = observerSlots;\n }\n }\n if (options.behaviors) {\n // wx://form-field\n if (options.behaviors.includes('wx' + '://form-field')) {\n if (!options.properties || !options.properties.name) {\n properties.name = {\n type: null,\n value: '',\n };\n }\n if (!options.properties || !options.properties.value) {\n properties.value = {\n type: null,\n value: '',\n };\n }\n }\n }\n return properties;\n}\nfunction initVirtualHostProps(options) {\n const properties = {};\n {\n if ((options && options.virtualHost)) {\n properties[VIRTUAL_HOST_STYLE] = {\n type: null,\n value: '',\n };\n properties[VIRTUAL_HOST_CLASS] = {\n type: null,\n value: '',\n };\n properties[VIRTUAL_HOST_HIDDEN] = {\n type: null,\n value: '',\n };\n properties[VIRTUAL_HOST_ID] = {\n type: null,\n value: '',\n };\n }\n }\n return properties;\n}\n/**\n *\n * @param mpComponentOptions\n * @param isBehavior\n */\nfunction initProps(mpComponentOptions) {\n if (!mpComponentOptions.properties) {\n mpComponentOptions.properties = {};\n }\n extend(mpComponentOptions.properties, initDefaultProps(mpComponentOptions), initVirtualHostProps(mpComponentOptions.options));\n}\nconst PROP_TYPES = [String, Number, Boolean, Object, Array, null];\nfunction parsePropType(type, defaultValue) {\n // [String]=>String\n if (isArray(type) && type.length === 1) {\n return type[0];\n }\n return type;\n}\nfunction normalizePropType(type, defaultValue) {\n const res = parsePropType(type);\n return PROP_TYPES.indexOf(res) !== -1 ? res : null;\n}\n/**\n * 初始化页面 props,方便接收页面参数,类型均为String,默认值均为''\n * @param param\n * @param rawProps\n */\nfunction initPageProps({ properties }, rawProps) {\n if (isArray(rawProps)) {\n rawProps.forEach((key) => {\n properties[key] = {\n type: String,\n value: '',\n };\n });\n }\n else if (isPlainObject(rawProps)) {\n Object.keys(rawProps).forEach((key) => {\n const opts = rawProps[key];\n if (isPlainObject(opts)) {\n // title:{type:String,default:''}\n let value = opts.default;\n if (isFunction(value)) {\n value = value();\n }\n const type = opts.type;\n opts.type = normalizePropType(type);\n properties[key] = {\n type: opts.type,\n value,\n };\n }\n else {\n // content:String\n properties[key] = {\n type: normalizePropType(opts),\n };\n }\n });\n }\n}\nfunction findPropsData(properties, isPage) {\n return ((isPage\n ? findPagePropsData(properties)\n : findComponentPropsData(resolvePropValue(properties.uP))) || {});\n}\nfunction findPagePropsData(properties) {\n const propsData = {};\n if (isPlainObject(properties)) {\n Object.keys(properties).forEach((name) => {\n if (builtInProps.indexOf(name) === -1) {\n propsData[name] = resolvePropValue(properties[name]);\n }\n });\n }\n return propsData;\n}\nfunction initFormField(vm) {\n // 同步 form-field 的 name,value 值\n const vueOptions = vm.$options;\n if (isArray(vueOptions.behaviors) &&\n vueOptions.behaviors.includes('uni://form-field')) {\n vm.$watch('modelValue', () => {\n vm.$scope &&\n vm.$scope.setData({\n name: vm.name,\n value: vm.modelValue,\n });\n }, {\n immediate: true,\n });\n }\n}\nfunction resolvePropValue(prop) {\n return prop;\n}\n\nfunction initData(_) {\n return {};\n}\nfunction initPropsObserver(componentOptions) {\n const observe = function observe() {\n const up = this.properties.uP;\n if (!up) {\n return;\n }\n if (this.$vm) {\n updateComponentProps(resolvePropValue(up), this.$vm.$);\n }\n else if (resolvePropValue(this.properties.uT) === 'm') {\n // 小程序组件\n updateMiniProgramComponentProperties(resolvePropValue(up), this);\n }\n };\n {\n if (!componentOptions.observers) {\n componentOptions.observers = {};\n }\n componentOptions.observers.uP = observe;\n }\n}\nfunction updateMiniProgramComponentProperties(up, mpInstance) {\n const prevProps = mpInstance.properties;\n const nextProps = findComponentPropsData(up) || {};\n if (hasPropsChanged(prevProps, nextProps, false)) {\n mpInstance.setData(nextProps);\n }\n}\nfunction updateComponentProps(up, instance) {\n const prevProps = toRaw(instance.props);\n const nextProps = findComponentPropsData(up) || {};\n if (hasPropsChanged(prevProps, nextProps)) {\n updateProps(instance, nextProps, prevProps, false);\n if (hasQueueJob(instance.update)) {\n invalidateJob(instance.update);\n }\n {\n instance.update();\n }\n }\n}\nfunction hasPropsChanged(prevProps, nextProps, checkLen = true) {\n const nextKeys = Object.keys(nextProps);\n if (checkLen && nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key]) {\n return true;\n }\n }\n return false;\n}\nfunction initBehaviors(vueOptions) {\n const vueBehaviors = vueOptions.behaviors;\n let vueProps = vueOptions.props;\n if (!vueProps) {\n vueOptions.props = vueProps = [];\n }\n const behaviors = [];\n if (isArray(vueBehaviors)) {\n vueBehaviors.forEach((behavior) => {\n // 这里的 global 应该是个变量\n behaviors.push(behavior.replace('uni://', 'wx' + '://'));\n if (behavior === 'uni://form-field') {\n if (isArray(vueProps)) {\n vueProps.push('name');\n vueProps.push('modelValue');\n }\n else {\n vueProps.name = {\n type: String,\n default: '',\n };\n vueProps.modelValue = {\n type: [String, Number, Boolean, Array, Object, Date],\n default: '',\n };\n }\n }\n });\n }\n return behaviors;\n}\nfunction applyOptions(componentOptions, vueOptions) {\n componentOptions.data = initData();\n componentOptions.behaviors = initBehaviors(vueOptions);\n}\n\nfunction parseComponent(vueOptions, { parse, mocks, isPage, isPageInProject, initRelation, handleLink, initLifetimes, }) {\n vueOptions = vueOptions.default || vueOptions;\n const options = {\n multipleSlots: true,\n // styleIsolation: 'apply-shared',\n addGlobalClass: true,\n pureDataPattern: /^uP$/,\n };\n if (isArray(vueOptions.mixins)) {\n vueOptions.mixins.forEach((item) => {\n if (isObject(item.options)) {\n extend(options, item.options);\n }\n });\n }\n if (vueOptions.options) {\n extend(options, vueOptions.options);\n }\n const mpComponentOptions = {\n options,\n lifetimes: initLifetimes({ mocks, isPage, initRelation, vueOptions }),\n pageLifetimes: {\n show() {\n if (__VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(this.$vm.$);\n }\n this.$vm && this.$vm.$callHook('onPageShow');\n },\n hide() {\n this.$vm && this.$vm.$callHook('onPageHide');\n },\n resize(size) {\n this.$vm && this.$vm.$callHook('onPageResize', size);\n },\n },\n methods: {\n __l: handleLink,\n },\n };\n if (__VUE_OPTIONS_API__) {\n applyOptions(mpComponentOptions, vueOptions);\n }\n initProps(mpComponentOptions);\n initPropsObserver(mpComponentOptions);\n initExtraOptions(mpComponentOptions, vueOptions);\n initWxsCallMethods(mpComponentOptions.methods, vueOptions.wxsCallMethods);\n {\n initWorkletMethods(mpComponentOptions.methods, vueOptions.methods);\n }\n if (parse) {\n parse(mpComponentOptions, { handleLink });\n }\n return mpComponentOptions;\n}\nfunction initCreateComponent(parseOptions) {\n return function createComponent(vueComponentOptions) {\n return Component(parseComponent(vueComponentOptions, parseOptions));\n };\n}\nlet $createComponentFn;\nlet $destroyComponentFn;\nfunction getAppVm() {\n if (process.env.UNI_MP_PLUGIN) {\n return wx.$vm;\n }\n if (process.env.UNI_SUBPACKAGE) {\n return wx.$subpackages[process.env.UNI_SUBPACKAGE].$vm;\n }\n return getApp().$vm;\n}\nfunction $createComponent(initialVNode, options) {\n if (!$createComponentFn) {\n $createComponentFn = getAppVm().$createComponent;\n }\n const proxy = $createComponentFn(initialVNode, options);\n return getExposeProxy(proxy.$) || proxy;\n}\nfunction $destroyComponent(instance) {\n if (!$destroyComponentFn) {\n $destroyComponentFn = getAppVm().$destroyComponent;\n }\n return $destroyComponentFn(instance);\n}\n\nfunction parsePage(vueOptions, parseOptions) {\n const { parse, mocks, isPage, initRelation, handleLink, initLifetimes } = parseOptions;\n const miniProgramPageOptions = parseComponent(vueOptions, {\n mocks,\n isPage,\n isPageInProject: true,\n initRelation,\n handleLink,\n initLifetimes,\n });\n initPageProps(miniProgramPageOptions, (vueOptions.default || vueOptions).props);\n const methods = miniProgramPageOptions.methods;\n methods.onLoad = function (query) {\n {\n this.options = query;\n }\n this.$page = {\n fullPath: addLeadingSlash(this.route + stringifyQuery(query)),\n };\n return this.$vm && this.$vm.$callHook(ON_LOAD, query);\n };\n initHooks(methods, PAGE_INIT_HOOKS);\n {\n initUnknownHooks(methods, vueOptions);\n }\n initRuntimeHooks(methods, vueOptions.__runtimeHooks);\n initMixinRuntimeHooks(methods);\n parse && parse(miniProgramPageOptions, { handleLink });\n return miniProgramPageOptions;\n}\nfunction initCreatePage(parseOptions) {\n return function createPage(vuePageOptions) {\n return Component(parsePage(vuePageOptions, parseOptions));\n };\n}\n\nfunction initCreatePluginApp(parseAppOptions) {\n return function createApp(vm) {\n initAppLifecycle(parseApp(vm), vm);\n if (process.env.UNI_MP_PLUGIN) {\n wx.$vm = vm;\n }\n };\n}\n\nconst MPPage = Page;\nconst MPComponent = Component;\nfunction initTriggerEvent(mpInstance) {\n const oldTriggerEvent = mpInstance.triggerEvent;\n const newTriggerEvent = function (event, ...args) {\n return oldTriggerEvent.apply(mpInstance, [\n customizeEvent(event),\n ...args,\n ]);\n };\n // 京东小程序triggerEvent为只读属性\n try {\n mpInstance.triggerEvent = newTriggerEvent;\n }\n catch (error) {\n mpInstance._triggerEvent = newTriggerEvent;\n }\n}\nfunction initMiniProgramHook(name, options, isComponent) {\n const oldHook = options[name];\n if (!oldHook) {\n options[name] = function () {\n initTriggerEvent(this);\n };\n }\n else {\n options[name] = function (...args) {\n initTriggerEvent(this);\n return oldHook.apply(this, args);\n };\n }\n}\nPage = function (options) {\n initMiniProgramHook(ON_LOAD, options);\n return MPPage(options);\n};\nComponent = function (options) {\n initMiniProgramHook('created', options);\n // 小程序组件\n const isVueComponent = options.properties && options.properties.uP;\n if (!isVueComponent) {\n initProps(options);\n initPropsObserver(options);\n }\n return MPComponent(options);\n};\n\n// @ts-expect-error\nfunction initLifetimes({ mocks, isPage, initRelation, vueOptions, }) {\n return {\n attached() {\n let properties = this.properties;\n initVueIds(properties.uI, this);\n const relationOptions = {\n vuePid: this._$vuePid,\n };\n // 处理父子关系\n initRelation(this, relationOptions);\n // 初始化 vue 实例\n const mpInstance = this;\n const isMiniProgramPage = isPage(mpInstance);\n let propsData = properties;\n this.$vm = $createComponent({\n type: vueOptions,\n props: findPropsData(propsData, isMiniProgramPage),\n }, {\n mpType: isMiniProgramPage ? 'page' : 'component',\n mpInstance,\n slots: properties.uS || {}, // vueSlots\n parentComponent: relationOptions.parent && relationOptions.parent.$,\n onBeforeSetup(instance, options) {\n initRefs(instance, mpInstance);\n initMocks(instance, mpInstance, mocks);\n initComponentInstance(instance, options);\n },\n });\n if (process.env.UNI_DEBUG) {\n console.log('uni-app:[' +\n Date.now() +\n '][' +\n (mpInstance.is || mpInstance.route) +\n '][' +\n this.$vm.$.uid +\n ']attached');\n }\n if (!isMiniProgramPage) {\n initFormField(this.$vm);\n }\n },\n ready() {\n if (process.env.UNI_DEBUG) {\n console.log('uni-app:[' + Date.now() + '][' + (this.is || this.route) + ']ready');\n }\n // 当组件 props 默认值为 true,初始化时传入 false 会导致 created,ready 触发, 但 attached 不触发\n // https://developers.weixin.qq.com/community/develop/doc/00066ae2844cc0f8eb883e2a557800\n if (this.$vm) {\n {\n this.$vm.$callHook('mounted');\n this.$vm.$callHook(ON_READY);\n }\n }\n },\n detached() {\n if (this.$vm) {\n pruneComponentPropsCache(this.$vm.$.uid);\n $destroyComponent(this.$vm);\n }\n },\n };\n}\n\nconst mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];\nfunction isPage(mpInstance) {\n return !!mpInstance.route;\n}\nfunction initRelation(mpInstance, detail) {\n mpInstance.triggerEvent('__l', detail);\n}\nfunction handleLink(event) {\n // detail 是微信,value 是百度(dipatch)\n const detail = (event.detail ||\n event.value);\n const vuePid = detail.vuePid;\n let parentVm;\n if (vuePid) {\n parentVm = findVmByVueId(this.$vm, vuePid);\n }\n if (!parentVm) {\n parentVm = this.$vm;\n }\n detail.parent = parentVm;\n}\n\nvar parseOptions = /*#__PURE__*/Object.freeze({\n __proto__: null,\n handleLink: handleLink,\n initLifetimes: initLifetimes,\n initRelation: initRelation,\n isPage: isPage,\n mocks: mocks\n});\n\nconst createApp = initCreateApp();\nconst createPage = initCreatePage(parseOptions);\nconst createComponent = initCreateComponent(parseOptions);\nconst createPluginApp = initCreatePluginApp();\nconst createSubpackageApp = initCreateSubpackageApp();\n{\n wx.createApp = global.createApp = createApp;\n wx.createPage = createPage;\n wx.createComponent = createComponent;\n wx.createPluginApp = global.createPluginApp =\n createPluginApp;\n wx.createSubpackageApp = global.createSubpackageApp =\n createSubpackageApp;\n}\n\nexport { createApp, createComponent, createPage, createPluginApp, createSubpackageApp };\n","import { shallowRef, ref, getCurrentInstance, isInSSRComponentSetup, injectHook } from 'vue';\nimport { hasOwn } from '@vue/shared';\nexport { capitalize, extend, hasOwn, isPlainObject } from '@vue/shared';\nimport { sanitise, UNI_SSR_DATA, UNI_SSR_GLOBAL_DATA, UNI_SSR, ON_SHOW, ON_HIDE, ON_LAUNCH, ON_ERROR, ON_THEME_CHANGE, ON_PAGE_NOT_FOUND, ON_UNHANDLE_REJECTION, ON_EXIT, ON_INIT, ON_LOAD, ON_READY, ON_UNLOAD, ON_RESIZE, ON_BACK_PRESS, ON_PAGE_SCROLL, ON_TAB_ITEM_TAP, ON_REACH_BOTTOM, ON_PULL_DOWN_REFRESH, ON_SAVE_EXIT_STATE, ON_SHARE_TIMELINE, ON_ADD_TO_FAVORITES, ON_SHARE_APP_MESSAGE, ON_NAVIGATION_BAR_BUTTON_TAP, 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 } from '@dcloudio/uni-shared';\n\nfunction getSSRDataType() {\n return getCurrentInstance() ? UNI_SSR_DATA : UNI_SSR_GLOBAL_DATA;\n}\nfunction assertKey(key, shallow = false) {\n if (!key) {\n throw new Error(`${shallow ? 'shallowSsrRef' : 'ssrRef'}: You must provide a key.`);\n }\n}\nconst ssrClientRef = (value, key, shallow = false) => {\n const valRef = shallow ? shallowRef(value) : ref(value);\n // 非 h5 平台\n if (typeof window === 'undefined') {\n return valRef;\n }\n const __uniSSR = window[UNI_SSR];\n if (!__uniSSR) {\n return valRef;\n }\n const type = getSSRDataType();\n assertKey(key, shallow);\n if (hasOwn(__uniSSR[type], key)) {\n valRef.value = __uniSSR[type][key];\n if (type === UNI_SSR_DATA) {\n delete __uniSSR[type][key]; // TODO 非全局数据仅使用一次?否则下次还会再次使用该数据\n }\n }\n return valRef;\n};\nconst globalData = {};\nconst ssrRef = (value, key) => {\n return ssrClientRef(value, key);\n};\nconst shallowSsrRef = (value, key) => {\n return ssrClientRef(value, key, true);\n};\nfunction getSsrGlobalData() {\n return sanitise(globalData);\n}\n\n/**\n * uni 对象是跨实例的,而此处列的 API 均是需要跟当前实例关联的,比如 requireNativePlugin 获取 dom 时,依赖当前 weex 实例\n */\nfunction getCurrentSubNVue() {\n return uni.getSubNVueById(plus.webview.currentWebview().id);\n}\nfunction requireNativePlugin(name) {\n return weex.requireModule(name);\n}\n\nfunction formatAppLog(type, filename, ...args) {\n // @ts-expect-error\n if (uni.__log__) {\n // @ts-expect-error\n uni.__log__(type, filename, ...args);\n }\n else {\n console[type].apply(console, [...args, filename]);\n }\n}\nfunction formatLog(type, filename, ...args) {\n if (filename) {\n args.push(filename);\n }\n console[type].apply(console, args);\n}\n\nfunction resolveEasycom(component, easycom) {\n return typeof component === 'string' ? easycom : component;\n}\n\n/// <reference types=\"@dcloudio/types\" />\nconst createHook = (lifecycle) => (hook, target = getCurrentInstance()) => {\n // post-create lifecycle registrations are noops during SSR\n !isInSSRComponentSetup && injectHook(lifecycle, hook, target);\n};\nconst onShow = /*#__PURE__*/ createHook(ON_SHOW);\nconst onHide = /*#__PURE__*/ createHook(ON_HIDE);\nconst onLaunch = \n/*#__PURE__*/ createHook(ON_LAUNCH);\nconst onError = \n/*#__PURE__*/ createHook(ON_ERROR);\nconst onThemeChange = \n/*#__PURE__*/ createHook(ON_THEME_CHANGE);\nconst onPageNotFound = \n/*#__PURE__*/ createHook(ON_PAGE_NOT_FOUND);\nconst onUnhandledRejection = /*#__PURE__*/ createHook(ON_UNHANDLE_REJECTION);\nconst onExit = /*#__PURE__*/ createHook(ON_EXIT);\nconst onInit = \n/*#__PURE__*/ createHook(ON_INIT);\n// 小程序如果想在 setup 的 props 传递页面参数,需要定义 props,故同时暴露 onLoad 吧\nconst onLoad = \n/*#__PURE__*/ createHook(ON_LOAD);\nconst onReady = /*#__PURE__*/ createHook(ON_READY);\nconst onUnload = /*#__PURE__*/ createHook(ON_UNLOAD);\nconst onResize = \n/*#__PURE__*/ createHook(ON_RESIZE);\nconst onBackPress = \n/*#__PURE__*/ createHook(ON_BACK_PRESS);\nconst onPageScroll = \n/*#__PURE__*/ createHook(ON_PAGE_SCROLL);\nconst onTabItemTap = \n/*#__PURE__*/ createHook(ON_TAB_ITEM_TAP);\nconst onReachBottom = /*#__PURE__*/ createHook(ON_REACH_BOTTOM);\nconst onPullDownRefresh = /*#__PURE__*/ createHook(ON_PULL_DOWN_REFRESH);\nconst onSaveExitState = \n/*#__PURE__*/ createHook(ON_SAVE_EXIT_STATE);\nconst onShareTimeline = \n/*#__PURE__*/ createHook(ON_SHARE_TIMELINE);\nconst onAddToFavorites = \n/*#__PURE__*/ createHook(ON_ADD_TO_FAVORITES);\nconst onShareAppMessage = \n/*#__PURE__*/ createHook(ON_SHARE_APP_MESSAGE);\nconst onNavigationBarButtonTap = /*#__PURE__*/ createHook(ON_NAVIGATION_BAR_BUTTON_TAP);\nconst onNavigationBarSearchInputChanged = /*#__PURE__*/ createHook(ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED);\nconst onNavigationBarSearchInputClicked = /*#__PURE__*/ createHook(ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED);\nconst onNavigationBarSearchInputConfirmed = /*#__PURE__*/ createHook(ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED);\nconst onNavigationBarSearchInputFocusChanged = \n/*#__PURE__*/ createHook(ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED);\n// for uni-app-x web\nconst onPageHide = onHide;\nconst onPageShow = onShow;\n\nfunction renderComponentSlot(slots, name, props = null) {\n if (slots[name]) {\n return slots[name](props);\n }\n return null;\n}\n\nexport { formatAppLog, formatLog, getCurrentSubNVue, getSsrGlobalData, onAddToFavorites, onBackPress, onError, onExit, onHide, onInit, onLaunch, onLoad, onNavigationBarButtonTap, onNavigationBarSearchInputChanged, onNavigationBarSearchInputClicked, onNavigationBarSearchInputConfirmed, onNavigationBarSearchInputFocusChanged, onPageHide, onPageNotFound, onPageScroll, onPageShow, onPullDownRefresh, onReachBottom, onReady, onResize, onSaveExitState, onShareAppMessage, onShareTimeline, onShow, onTabItemTap, onThemeChange, onUnhandledRejection, onUnload, renderComponentSlot, requireNativePlugin, resolveEasycom, shallowSsrRef, ssrRef };\n"],"names":["set","hasOwnProperty","invokeArrayFns","createErrorHandler","self","effect","trigger","computed","isReadonly","isShallow","has","r","queue","p","diff","version","isModelListener","once","s","createApp","plugin","createHook","n","callHook","get","c","h","m","initProps","resolvePropValue","getType","t","validateProp","assertType","getInvalidTypeMessage","isSimpleType","styleValue","isExplicable","isBoolean","Component","index","resolve","f","ref","emit","uid","pruneComponentPropsCache","e","createVNode","createComponent","createComponent2","initHooks","applyOptions","uni","getLocaleLanguage","interceptors","res","options","errMsg","Emitter","cid","protocols","global","getProvider","mocks","host","value","err","onError","offError","wx","isPage","observe","initRelation","handleLink","initLifetimes","size","parseOptions","createPage"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,QAAQ,KAAK,kBAAkB;AACtC,QAAMA,OAAM,IAAI,IAAI,IAAI,MAAM,GAAG,CAAC;AAClC,SAAO,mBAAmB,CAAC,QAAQA,KAAI,IAAI,IAAI,YAAa,CAAA,IAAI,CAAC,QAAQA,KAAI,IAAI,GAAG;AACtF;AAEA,MAAM,YAAwD,OAAO,OAAO,CAAA,CAAE;AAC9E,MAAM,YAAwD,OAAO,OAAO,CAAA,CAAE;AAC9E,MAAM,OAAO,MAAM;AACnB;AACA,MAAM,KAAK,MAAM;AACjB,MAAM,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,MAAM,OAAO,IAAI,WAAW,CAAC,MAAM;AAAA,CACxE,IAAI,WAAW,CAAC,IAAI,OAAO,IAAI,WAAW,CAAC,IAAI;AAChD,MAAM,kBAAkB,CAAC,QAAQ,IAAI,WAAW,WAAW;AAC3D,MAAM,SAAS,OAAO;AACtB,MAAM,SAAS,CAAC,KAAK,OAAO;AACpB,QAAA,IAAI,IAAI,QAAQ,EAAE;AACxB,MAAI,IAAI,IAAI;AACN,QAAA,OAAO,GAAG,CAAC;AAAA,EACjB;AACF;AACA,MAAMC,mBAAiB,OAAO,UAAU;AACxC,MAAM,SAAS,CAAC,KAAK,QAAQA,iBAAe,KAAK,KAAK,GAAG;AACzD,MAAM,UAAU,MAAM;AACtB,MAAM,QAAQ,CAAC,QAAQ,aAAa,GAAG,MAAM;AAC7C,MAAM,QAAQ,CAAC,QAAQ,aAAa,GAAG,MAAM;AAG7C,MAAM,aAAa,CAAC,QAAQ,OAAO,QAAQ;AAC3C,MAAM,WAAW,CAAC,QAAQ,OAAO,QAAQ;AACzC,MAAM,WAAW,CAAC,QAAQ,OAAO,QAAQ;AACzC,MAAM,WAAW,CAAC,QAAQ,QAAQ,QAAQ,OAAO,QAAQ;AACzD,MAAM,YAAY,CAAC,QAAQ;AACzB,UAAQ,SAAS,GAAG,KAAK,WAAW,GAAG,MAAM,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,KAAK;AAC3F;AACA,MAAM,iBAAiB,OAAO,UAAU;AACxC,MAAM,eAAe,CAAC,UAAU,eAAe,KAAK,KAAK;AACzD,MAAM,YAAY,CAAC,UAAU;AAC3B,SAAO,aAAa,KAAK,EAAE,MAAM,GAAG,EAAE;AACxC;AACA,MAAM,gBAAgB,CAAC,QAAQ,aAAa,GAAG,MAAM;AACrD,MAAM,eAAe,CAAC,QAAQ,SAAS,GAAG,KAAK,QAAQ,SAAS,IAAI,CAAC,MAAM,OAAO,KAAK,SAAS,KAAK,EAAE,MAAM;AAC7G,MAAM,iBAAiC;AAAA;AAAA,EAErC;AACF;AACA,MAAM,qBAAqC;AAAA,EACzC;AACF;AACA,MAAM,sBAAsB,CAAC,OAAO;AAC5B,QAAA,QAA+B,uBAAA,OAAO,IAAI;AAChD,SAAO,CAAC,QAAQ;AACR,UAAA,MAAM,MAAM,GAAG;AACrB,WAAO,QAAQ,MAAM,GAAG,IAAI,GAAG,GAAG;AAAA,EAAA;AAEtC;AACA,MAAM,aAAa;AACnB,MAAM,WAAW,oBAAoB,CAAC,QAAQ;AACrC,SAAA,IAAI,QAAQ,YAAY,CAAC,GAAG,MAAM,IAAI,EAAE,YAAY,IAAI,EAAE;AACnE,CAAC;AACD,MAAM,cAAc;AACpB,MAAM,YAAY;AAAA,EAChB,CAAC,QAAQ,IAAI,QAAQ,aAAa,KAAK,EAAE,YAAY;AACvD;AACA,MAAM,aAAa,oBAAoB,CAAC,QAAQ;AACvC,SAAA,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAClD,CAAC;AACD,MAAM,eAAe,oBAAoB,CAAC,QAAQ;AAChD,QAAM,IAAI,MAAM,KAAK,WAAW,GAAG,CAAC,KAAK;AAClC,SAAA;AACT,CAAC;AACD,MAAM,aAAa,CAAC,OAAO,aAAa,CAAC,OAAO,GAAG,OAAO,QAAQ;AAClE,MAAMC,mBAAiB,CAAC,KAAK,QAAQ;AACnC,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC/B,QAAA,CAAC,EAAE,GAAG;AAAA,EACZ;AACF;AACA,MAAM,MAAM,CAAC,KAAK,KAAK,UAAU;AACxB,SAAA,eAAe,KAAK,KAAK;AAAA,IAC9B,cAAc;AAAA,IACd,YAAY;AAAA,IACZ;AAAA,EAAA,CACD;AACH;AACA,MAAM,gBAAgB,CAAC,QAAQ;AACvB,QAAA,IAAI,WAAW,GAAG;AACjB,SAAA,MAAM,CAAC,IAAI,MAAM;AAC1B;ACQA,MAAM,iBAAiB;AACvB,MAAM,iBAAiB;AACvB,MAAM,YAAY;AAClB,MAAM,YAAY;AAClB,MAAM,YAAY;AAIlB,SAAS,QAAQ,KAAK,OAAO;AAClB,SAAA,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,IAAI,QAAQ,IAAI,MAAM,EAAE;AAC1D;AACA,SAAS,WAAW,KAAK,OAAO;AACrB,SAAA,MAAM,KAAK,CAAC,SAAS,IAAI,QAAQ,IAAI,MAAM,CAAC;AACvD;AACA,SAAS,gBAAgB,QAAQ,UAAU;AACvC,MAAI,CAAC,QAAQ;AACT;AAAA,EACJ;AACA,WAAS,OAAO,KAAA,EAAO,QAAQ,MAAM,GAAG;AACpC,MAAA,YAAY,SAAS,MAAM,GAAG;AACvB,WAAA;AAAA,EACX;AACA,WAAS,OAAO;AAChB,MAAI,WAAW,WAAW;AAEf,WAAA;AAAA,EACX;AACA,MAAI,OAAO,QAAQ,IAAI,MAAM,GAAG;AAC5B,QAAI,OAAO,QAAQ,OAAO,IAAI,IAAI;AACvB,aAAA;AAAA,IACX;AACA,QAAI,OAAO,QAAQ,OAAO,IAAI,IAAI;AACvB,aAAA;AAAA,IACX;AACI,QAAA,QAAQ,QAAQ,CAAC,OAAO,OAAO,OAAO,MAAM,CAAC,GAAG;AACzC,aAAA;AAAA,IACX;AACO,WAAA;AAAA,EACX;AACA,MAAI,UAAU,CAAC,WAAW,WAAW,SAAS;AAC9C,MAAI,YAAY,OAAO,KAAK,QAAQ,EAAE,SAAS,GAAG;AACpC,cAAA,OAAO,KAAK,QAAQ;AAAA,EAClC;AACM,QAAA,OAAO,WAAW,QAAQ,OAAO;AACvC,MAAI,MAAM;AACC,WAAA;AAAA,EACX;AACJ;ACqLA,MAAM,oBAAoB;AAoB1B,MAAM,UAAU;AAChB,MAAM,UAAU;AAEhB,MAAM,YAAY;AAClB,MAAM,WAAW;AACjB,MAAM,kBAAkB;AAKxB,MAAM,oBAAoB;AAC1B,MAAM,wBAAwB;AAC9B,MAAM,UAAU;AAEhB,MAAM,UAAU;AAChB,MAAM,WAAW;AACjB,MAAM,YAAY;AAElB,MAAM,UAAU;AAEhB,MAAM,qBAAqB;AAC3B,MAAM,YAAY;AAClB,MAAM,gBAAgB;AACtB,MAAM,iBAAiB;AACvB,MAAM,kBAAkB;AACxB,MAAM,kBAAkB;AACxB,MAAM,uBAAuB;AAC7B,MAAM,oBAAoB;AAC1B,MAAM,gBAAgB;AACtB,MAAM,sBAAsB;AAC5B,MAAM,uBAAuB;AAE7B,MAAM,+BAA+B;AAErC,MAAM,yCAAyC;AAC/C,MAAM,yCAAyC;AAC/C,MAAM,2CAA2C;AACjD,MAAM,+CAA+C;AAOrD,MAAM,qBAAqB;AAC3B,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAC5B,MAAM,kBAAkB;AAexB,SAAS,gBAAgB,KAAK;AACnB,SAAA,IAAI,QAAQ,GAAG,MAAM;AAChC;AACA,SAAS,gBAAgB,KAAK;AAC1B,SAAO,gBAAgB,GAAG,IAAI,MAAM,MAAM;AAC9C;AAIA,MAAM,iBAAiB,CAAC,KAAK,QAAQ;AAC7B,MAAA;AACJ,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC3B,UAAA,IAAI,CAAC,EAAE,GAAG;AAAA,EACpB;AACO,SAAA;AACX;AAMA,SAAS,KAAK,IAAI,MAAM,MAAM;AACtB,MAAA;AACJ,SAAQ,IAAI,SAAS;AACjB,QAAI,IAAI;AACE,YAAA,GAAG,MAAM,KAAK,IAAI;AACnB,WAAA;AAAA,IACT;AACO,WAAA;AAAA,EAAA;AAEf;AAoCA,SAAS,mBAAmB,KAAK,MAAM;AAC/B,MAAA,CAAC,SAAS,IAAI,GAAG;AACjB;AAAA,EACJ;AACO,SAAA,KAAK,QAAQ,cAAc,KAAK;AACjC,QAAA,QAAQ,KAAK,MAAM,GAAG;AACxB,MAAA,MAAM,MAAM,CAAC;AACjB,MAAI,CAAC,KAAK;AACN,UAAM,CAAA;AAAA,EACV;AACI,MAAA,MAAM,WAAW,GAAG;AACpB,WAAO,IAAI,GAAG;AAAA,EAClB;AACO,SAAA,mBAAmB,IAAI,GAAG,GAAG,MAAM,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC;AAChE;AACA,SAAS,WAAW,KAAK;AACrB,MAAI,UAAU,CAAA;AACV,MAAA,cAAc,GAAG,GAAG;AACpB,WAAO,KAAK,GAAG,EACV,OACA,QAAQ,CAAC,QAAQ;AAClB,YAAM,OAAO;AACL,cAAA,IAAI,IAAI,IAAI,IAAI;AAAA,IAAA,CAC3B;AAAA,EACL;AACA,SAAO,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM;AACzC;AAgFA,MAAM,cAAc;AACpB,SAAS,eAAe,KAAK;AACzB,SAAO,SAAS,IAAI,QAAQ,aAAa,GAAG,CAAC;AACjD;AA4OA,MAAM,SAAS;AACf,SAAS,eAAe,KAAK,YAAY,QAAQ;AACvC,QAAA,MAAM,MACN,OAAO,KAAK,GAAG,EACZ,IAAI,CAAC,QAAQ;AACV,QAAA,MAAM,IAAI,GAAG;AACjB,QAAI,OAAO,QAAQ,UAAa,QAAQ,MAAM;AACpC,YAAA;AAAA,IAAA,WAED,cAAc,GAAG,GAAG;AACnB,YAAA,KAAK,UAAU,GAAG;AAAA,IAC5B;AACA,WAAO,UAAU,GAAG,IAAI,MAAM,UAAU,GAAG;AAAA,EAC9C,CAAA,EACI,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1B,KAAK,GAAG,IACX;AACC,SAAA,MAAM,IAAI,GAAG,KAAK;AAC7B;AAspBA,MAAM,aAAa;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAMA,SAAS,WAAW,MAAM;AACf,SAAA,WAAW,QAAQ,IAAI,IAAI;AACtC;AACA,MAAM,oBAAoB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACA,MAAM,kCAAuD,uBAAA;AAClD,SAAA;AAAA,IACH,cAAc;AAAA,IACd,mBAAmB,KAAK;AAAA,IACxB,iBAAiB,KAAK;AAAA,EAAA;AAE9B;AACA,SAAS,mBAAmB,MAAM,OAAO,YAAY,MAAM;AAEvD,MAAI,aAAa,CAAC,WAAW,KAAK,GAAG;AAC1B,WAAA;AAAA,EACX;AACA,MAAI,kBAAkB,QAAQ,IAAI,IAAI,IAAI;AAE/B,WAAA;AAAA,EAEF,WAAA,KAAK,QAAQ,IAAI,MAAM,GAAG;AAExB,WAAA;AAAA,EACX;AACO,SAAA;AACX;AAEA,IAAI;AACJ,MAAM,oBAAoB,CAAA;AAI1B,SAAS,eAAe,MAAM;AAE1B,MAAI,QAAQ;AACR,WAAO,KAAK,MAAM;AAAA,EACtB;AACA,oBAAkB,KAAK,IAAI;AAC/B;AACA,SAAS,uBAAuB,KAAK;AACxB,WAAA;AACT,oBAAkB,QAAQ,CAAC,SAAS,KAAK,GAAG,CAAC;AACjD;AACA,MAAM,2BAA2B,KAAK,CAAC,KAAKC,wBAAuB;AAE/D,SAAOA,oBAAmB,GAAG;AACjC,CAAC;AAED,MAAM,IAAI,WAAY;AAGtB;AACA,EAAE,YAAY;AAAA,EACV,KAAK;AAAA,EACL,IAAI,SAAU,MAAM,UAAU,KAAK;AAC/B,QAAI,IAAI,KAAK,MAAM,KAAK,IAAI,CAAA;AAC3B,KAAA,EAAE,IAAI,MAAM,EAAE,IAAI,IAAI,CAAA,IAAK,KAAK;AAAA,MAC7B,IAAI;AAAA,MACJ;AAAA,MACA,KAAK,KAAK;AAAA,IAAA,CACb;AACD,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,MAAM,SAAU,MAAM,UAAU,KAAK;AACjC,QAAIC,QAAO;AACX,aAAS,WAAW;AAChBA,YAAK,IAAI,MAAM,QAAQ;AACd,eAAA,MAAM,KAAK,SAAS;AAAA,IACjC;AACA,aAAS,IAAI;AACb,WAAO,KAAK,GAAG,MAAM,UAAU,GAAG;AAAA,EACtC;AAAA,EACA,MAAM,SAAU,MAAM;AAClB,QAAI,OAAO,CAAA,EAAG,MAAM,KAAK,WAAW,CAAC;AACjC,QAAA,WAAW,KAAK,MAAM,KAAK,IAAI,CAAA,IAAK,IAAI,KAAK,CAAC,GAAG,MAAM;AAC3D,QAAI,IAAI;AACR,QAAI,MAAM,OAAO;AACZ,SAAA,GAAG,IAAI,KAAK,KAAK;AACX,aAAA,CAAC,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,KAAK,IAAI;AAAA,IAC1C;AACO,WAAA;AAAA,EACX;AAAA,EACA,KAAK,SAAU,MAAM,OAAO;AACxB,QAAI,IAAI,KAAK,MAAM,KAAK,IAAI,CAAA;AACxB,QAAA,OAAO,EAAE,IAAI;AACjB,QAAI,aAAa,CAAA;AACjB,QAAI,QAAQ,OAAO;AACf,eAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACvC,YAAI,KAAK,CAAC,EAAE,OAAO,SACf,KAAK,CAAC,EAAE,GAAG,MAAM,SACjB,KAAK,CAAC,EAAE,QAAQ,OAAO;AAClB,eAAA,OAAO,GAAG,CAAC;AAChB;AAAA,QACJ;AAAA,MACJ;AACa,mBAAA;AAAA,IACjB;AAIA,eAAW,SAAU,EAAE,IAAI,IAAI,aAAc,OAAO,EAAE,IAAI;AACnD,WAAA;AAAA,EACX;AACJ;AACA,IAAI,MAAM;ACxnDV;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAO,QAAQ,MAAM;AAC5B,UAAQ,KAAK,cAAc,GAAG,IAAI,GAAG,IAAI;AAC3C;AAEA,IAAI;AACJ,MAAM,YAAY;AAAA,EAChB,YAAY,WAAW,OAAO;AAC5B,SAAK,WAAW;AAIhB,SAAK,UAAU;AAIf,SAAK,UAAU;AAIf,SAAK,WAAW;AAChB,SAAK,SAAS;AACV,QAAA,CAAC,YAAY,mBAAmB;AAClC,WAAK,SAAS,kBAAkB,WAAW,kBAAkB,SAAS,CAAK,IAAA;AAAA,QACzE;AAAA,MACE,IAAA;AAAA,IACN;AAAA,EACF;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,IAAI;AACN,QAAI,KAAK,SAAS;AAChB,YAAM,qBAAqB;AACvB,UAAA;AACkB,4BAAA;AACpB,eAAO,GAAG;AAAA,MAAA,UACV;AACoB,4BAAA;AAAA,MACtB;AAAA,IAAA,OACoD;AACpD,aAAO,sCAAsC;AAAA,IAC/C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK;AACiB,wBAAA;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM;AACJ,wBAAoB,KAAK;AAAA,EAC3B;AAAA,EACA,KAAK,YAAY;AACf,QAAI,KAAK,SAAS;AAChB,UAAI,GAAG;AACF,WAAA,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK;AAC1C,aAAA,QAAQ,CAAC,EAAE,KAAK;AAAA,MACvB;AACK,WAAA,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC3C,aAAA,SAAS,CAAC;MACjB;AACA,UAAI,KAAK,QAAQ;AACV,aAAA,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC9C,eAAK,OAAO,CAAC,EAAE,KAAK,IAAI;AAAA,QAC1B;AAAA,MACF;AACA,UAAI,CAAC,KAAK,YAAY,KAAK,UAAU,CAAC,YAAY;AAChD,cAAM,OAAO,KAAK,OAAO,OAAO,IAAI;AAChC,YAAA,QAAQ,SAAS,MAAM;AACzB,eAAK,OAAO,OAAO,KAAK,KAAK,IAAI;AACjC,eAAK,QAAQ,KAAK;AAAA,QACpB;AAAA,MACF;AACA,WAAK,SAAS;AACd,WAAK,UAAU;AAAA,IACjB;AAAA,EACF;AACF;AAIA,SAAS,kBAAkBC,SAAQ,QAAQ,mBAAmB;AACxD,MAAA,SAAS,MAAM,QAAQ;AACnB,UAAA,QAAQ,KAAKA,OAAM;AAAA,EAC3B;AACF;AACA,SAAS,kBAAkB;AAClB,SAAA;AACT;AAWA,IAAI;AACJ,MAAM,eAAe;AAAA,EACnB,YAAY,IAAIC,UAAS,WAAW,OAAO;AACzC,SAAK,KAAK;AACV,SAAK,UAAUA;AACf,SAAK,YAAY;AACjB,SAAK,SAAS;AACd,SAAK,OAAO;AAIZ,SAAK,cAAc;AAInB,SAAK,WAAW;AAIhB,SAAK,YAAY;AAIjB,SAAK,kBAAkB;AAIvB,SAAK,cAAc;AACnB,sBAAkB,MAAM,KAAK;AAAA,EAC/B;AAAA,EACA,IAAI,QAAQ;AACV,QAAI,KAAK,gBAAgB,KAAK,KAAK,gBAAgB,GAAG;AACpD,WAAK,cAAc;AACL;AACd,eAAS,IAAI,GAAG,IAAI,KAAK,aAAa,KAAK;AACnC,cAAA,MAAM,KAAK,KAAK,CAAC;AACvB,YAAI,IAAI,UAAU;AAChB,0BAAgB,IAAI,QAAQ;AACxB,cAAA,KAAK,eAAe,GAAG;AACzB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACI,UAAA,KAAK,gBAAgB,GAAG;AAC1B,aAAK,cAAc;AAAA,MACrB;AACc;IAChB;AACA,WAAO,KAAK,eAAe;AAAA,EAC7B;AAAA,EACA,IAAI,MAAM,GAAG;AACN,SAAA,cAAc,IAAI,IAAI;AAAA,EAC7B;AAAA,EACA,MAAM;AACJ,SAAK,cAAc;AACf,QAAA,CAAC,KAAK,QAAQ;AAChB,aAAO,KAAK;IACd;AACA,QAAI,kBAAkB;AACtB,QAAI,aAAa;AACb,QAAA;AACY,oBAAA;AACC,qBAAA;AACV,WAAA;AACL,uBAAiB,IAAI;AACrB,aAAO,KAAK;IAAG,UACf;AACA,wBAAkB,IAAI;AACjB,WAAA;AACU,qBAAA;AACD,oBAAA;AAAA,IAChB;AAAA,EACF;AAAA,EACA,OAAO;AACD,QAAA;AACJ,QAAI,KAAK,QAAQ;AACf,uBAAiB,IAAI;AACrB,wBAAkB,IAAI;AACtB,OAAC,KAAK,KAAK,WAAW,OAAO,SAAS,GAAG,KAAK,IAAI;AAClD,WAAK,SAAS;AAAA,IAChB;AAAA,EACF;AACF;AACA,SAAS,gBAAgBC,WAAU;AACjC,SAAOA,UAAS;AAClB;AACA,SAAS,iBAAiB,SAAS;AACzB,UAAA;AACR,UAAQ,cAAc;AACxB;AACA,SAAS,kBAAkB,SAAS;AAClC,MAAI,QAAQ,KAAK,SAAS,QAAQ,aAAa;AAC7C,aAAS,IAAI,QAAQ,aAAa,IAAI,QAAQ,KAAK,QAAQ,KAAK;AAC9D,uBAAiB,QAAQ,KAAK,CAAC,GAAG,OAAO;AAAA,IAC3C;AACQ,YAAA,KAAK,SAAS,QAAQ;AAAA,EAChC;AACF;AACA,SAAS,iBAAiB,KAAK,SAAS;AAChC,QAAA,UAAU,IAAI,IAAI,OAAO;AAC/B,MAAI,YAAY,UAAU,QAAQ,aAAa,SAAS;AACtD,QAAI,OAAO,OAAO;AACd,QAAA,IAAI,SAAS,GAAG;AAClB,UAAI,QAAQ;AAAA,IACd;AAAA,EACF;AACF;AAyBA,IAAI,cAAc;AAClB,IAAI,qBAAqB;AACzB,MAAM,aAAa,CAAA;AACnB,SAAS,gBAAgB;AACvB,aAAW,KAAK,WAAW;AACb,gBAAA;AAChB;AACA,SAAS,gBAAgB;AACjB,QAAA,OAAO,WAAW;AACV,gBAAA,SAAS,SAAS,OAAO;AACzC;AACA,SAAS,kBAAkB;AACzB;AACF;AACA,SAAS,kBAAkB;AACzB;AACO,SAAA,CAAC,sBAAsB,sBAAsB,QAAQ;AAC1D,0BAAsB;EACxB;AACF;AACA,SAAS,YAAY,SAAS,KAAK,wBAAwB;AACrD,MAAA;AACJ,MAAI,IAAI,IAAI,OAAO,MAAM,QAAQ,UAAU;AACrC,QAAA,IAAI,SAAS,QAAQ,QAAQ;AACjC,UAAM,SAAS,QAAQ,KAAK,QAAQ,WAAW;AAC/C,QAAI,WAAW,KAAK;AAClB,UAAI,QAAQ;AACV,yBAAiB,QAAQ,OAAO;AAAA,MAClC;AACQ,cAAA,KAAK,QAAQ,aAAa,IAAI;AAAA,IAAA,OACjC;AACG,cAAA;AAAA,IACV;AAC+C;AAC7C,OAAC,KAAK,QAAQ,YAAY,OAAO,SAAS,GAAG,KAAK,SAAS,OAAO,EAAE,QAAQ,QAAQ,GAAG,sBAAsB,CAAC;AAAA,IAChH;AAAA,EACF;AACF;AACA,MAAM,wBAAwB,CAAA;AAC9B,SAAS,eAAe,KAAK,YAAY,wBAAwB;AAC3D,MAAA;AACY;AACL,aAAA,WAAW,IAAI,QAAQ;AAC5B,QAAA;AACJ,QAAI,QAAQ,cAAc,eAAe,YAAY,OAAO,WAAW,WAAW,IAAI,IAAI,OAAO,MAAM,QAAQ,WAAW;AACxH,cAAQ,oBAAoB,QAAQ,kBAAkB,QAAQ,gBAAgB;AAC9E,cAAQ,cAAc;AAAA,IACxB;AACI,QAAA,QAAQ,oBAAoB,YAAY,OAAO,WAAW,WAAW,IAAI,IAAI,OAAO,MAAM,QAAQ,WAAW;AAChE;AAC7C,SAAC,KAAK,QAAQ,cAAc,OAAO,SAAS,GAAG,KAAK,SAAS,OAAO,EAAE,QAAQ,QAAQ,GAAG,sBAAsB,CAAC;AAAA,MAClH;AACA,cAAQ,QAAQ;AAChB,WAAK,CAAC,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,gBAAgB,GAAG;AAC7E,gBAAQ,kBAAkB;AAC1B,YAAI,QAAQ,WAAW;AACC,gCAAA,KAAK,QAAQ,SAAS;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACgB;AAClB;AAEA,MAAM,YAAY,CAAC,SAASA,cAAa;AACjC,QAAA,0BAA0B;AAChC,MAAI,UAAU;AACd,MAAI,WAAWA;AACR,SAAA;AACT;AAEA,MAAM,gCAAgC;AACtC,MAAM,cAAc,OAAmD,SAAc;AACrF,MAAM,sBAAsB,OAAmD,iBAAsB;AACrG,SAAS,MAAM,QAAQ,MAAM,KAAK;AAChC,MAAI,eAAe,cAAc;AAC3B,QAAA,UAAU,UAAU,IAAI,MAAM;AAClC,QAAI,CAAC,SAAS;AACZ,gBAAU,IAAI,QAAQ,UAA0B,oBAAI,IAAK,CAAA;AAAA,IAC3D;AACI,QAAA,MAAM,QAAQ,IAAI,GAAG;AACzB,QAAI,CAAC,KAAK;AACA,cAAA,IAAI,KAAK,MAAM,UAAU,MAAM,QAAQ,OAAO,GAAG,CAAC,CAAC;AAAA,IAC7D;AACA;AAAA,MACE;AAAA,MACA;AAAA,MAC4C;AAAA,QAC1C;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACE;AAAA,EAER;AACF;AACA,SAAS,QAAQ,QAAQ,MAAM,KAAK,UAAU,UAAU,WAAW;AAC3D,QAAA,UAAU,UAAU,IAAI,MAAM;AACpC,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AACA,MAAI,OAAO,CAAA;AACX,MAAI,SAAS,SAAS;AACpB,WAAO,CAAC,GAAG,QAAQ,OAAQ,CAAA;AAAA,EAClB,WAAA,QAAQ,YAAY,QAAQ,MAAM,GAAG;AACxC,UAAA,YAAY,OAAO,QAAQ;AACzB,YAAA,QAAQ,CAAC,KAAK,SAAS;AAC7B,UAAI,SAAS,YAAY,CAAC,SAAS,IAAI,KAAK,QAAQ,WAAW;AAC7D,aAAK,KAAK,GAAG;AAAA,MACf;AAAA,IAAA,CACD;AAAA,EAAA,OACI;AACL,QAAI,QAAQ,QAAQ;AAClB,WAAK,KAAK,QAAQ,IAAI,GAAG,CAAC;AAAA,IAC5B;AACA,YAAQ,MAAM;AAAA,MACZ,KAAK;AACC,YAAA,CAAC,QAAQ,MAAM,GAAG;AACpB,eAAK,KAAK,QAAQ,IAAI,WAAW,CAAC;AAC9B,cAAA,MAAM,MAAM,GAAG;AACjB,iBAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC;AAAA,UAC5C;AAAA,QAAA,WACS,aAAa,GAAG,GAAG;AAC5B,eAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC;AAAA,QACjC;AACA;AAAA,MACF,KAAK;AACC,YAAA,CAAC,QAAQ,MAAM,GAAG;AACpB,eAAK,KAAK,QAAQ,IAAI,WAAW,CAAC;AAC9B,cAAA,MAAM,MAAM,GAAG;AACjB,iBAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC;AAAA,UAC5C;AAAA,QACF;AACA;AAAA,MACF,KAAK;AACC,YAAA,MAAM,MAAM,GAAG;AACjB,eAAK,KAAK,QAAQ,IAAI,WAAW,CAAC;AAAA,QACpC;AACA;AAAA,IACJ;AAAA,EACF;AACgB;AAChB,aAAW,OAAO,MAAM;AACtB,QAAI,KAAK;AACP;AAAA,QACE;AAAA,QACA;AAAA,QAC4C;AAAA,UAC1C;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACE;AAAA,IAER;AAAA,EACF;AACgB;AAClB;AAMA,MAAM,6CAA6C,6BAA6B;AAChF,MAAM,iBAAiB,IAAI;AAAA,EACT,uBAAO,oBAAoB,MAAM,EAAE,OAAO,CAAC,QAAQ,QAAQ,eAAe,QAAQ,QAAQ,EAAE,IAAI,CAAC,QAAQ,OAAO,GAAG,CAAC,EAAE,OAAO,QAAQ;AACvJ;AACA,MAAM,wBAAoE,4CAAA;AAC1E,SAAS,8BAA8B;AACrC,QAAM,mBAAmB,CAAA;AACzB,GAAC,YAAY,WAAW,aAAa,EAAE,QAAQ,CAAC,QAAQ;AACrC,qBAAA,GAAG,IAAI,YAAY,MAAM;AAClC,YAAA,MAAM,MAAM,IAAI;AACtB,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK;AACrC,cAAA,KAAK,OAAO,IAAI,EAAE;AAAA,MAC1B;AACA,YAAM,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI;AACxB,UAAA,QAAQ,MAAM,QAAQ,OAAO;AAC/B,eAAO,IAAI,GAAG,EAAE,GAAG,KAAK,IAAI,KAAK,CAAC;AAAA,MAAA,OAC7B;AACE,eAAA;AAAA,MACT;AAAA,IAAA;AAAA,EACF,CACD;AACA,GAAA,QAAQ,OAAO,SAAS,WAAW,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC5C,qBAAA,GAAG,IAAI,YAAY,MAAM;AAC1B;AACE;AACV,YAAA,MAAM,MAAM,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,IAAI;AAC7B;AACF;AACP,aAAA;AAAA,IAAA;AAAA,EACT,CACD;AACM,SAAA;AACT;AACA,SAAS,eAAe,KAAK;AACrB,QAAA,MAAM,MAAM,IAAI;AAChB,QAAA,KAAK,OAAO,GAAG;AACd,SAAA,IAAI,eAAe,GAAG;AAC/B;AACA,MAAM,oBAAoB;AAAA,EACxB,YAAY,cAAc,OAAO,aAAa,OAAO;AACnD,SAAK,cAAc;AACnB,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,IAAI,QAAQ,KAAK,UAAU;AACzB,UAAM,cAAc,KAAK,aAAa,aAAa,KAAK;AACxD,QAAI,QAAQ,kBAAkB;AAC5B,aAAO,CAAC;AAAA,IAAA,WACC,QAAQ,kBAAkB;AAC5B,aAAA;AAAA,IAAA,WACE,QAAQ,iBAAiB;AAC3B,aAAA;AAAA,IAAA,WACE,QAAQ,WAAW;AACxB,UAAA,cAAc,cAAc,aAAa,qBAAqB,cAAc,aAAa,qBAAqB,aAAa,IAAI,MAAM;AAAA;AAAA,MAEzI,OAAO,eAAe,MAAM,MAAM,OAAO,eAAe,QAAQ,GAAG;AAC1D,eAAA;AAAA,MACT;AACA;AAAA,IACF;AACM,UAAA,gBAAgB,QAAQ,MAAM;AACpC,QAAI,CAAC,aAAa;AAChB,UAAI,iBAAiB,OAAO,uBAAuB,GAAG,GAAG;AACvD,eAAO,QAAQ,IAAI,uBAAuB,KAAK,QAAQ;AAAA,MACzD;AACA,UAAI,QAAQ,kBAAkB;AACrB,eAAA;AAAA,MACT;AAAA,IACF;AACA,UAAM,MAAM,QAAQ,IAAI,QAAQ,KAAK,QAAQ;AACzC,QAAA,SAAS,GAAG,IAAI,eAAe,IAAI,GAAG,IAAI,mBAAmB,GAAG,GAAG;AAC9D,aAAA;AAAA,IACT;AACA,QAAI,CAAC,aAAa;AACV,YAAA,QAAQ,OAAO,GAAG;AAAA,IAC1B;AACA,QAAI,YAAY;AACP,aAAA;AAAA,IACT;AACI,QAAA,MAAM,GAAG,GAAG;AACd,aAAO,iBAAiB,aAAa,GAAG,IAAI,MAAM,IAAI;AAAA,IACxD;AACI,QAAA,SAAS,GAAG,GAAG;AACjB,aAAO,cAAc,SAAS,GAAG,IAAI,SAAS,GAAG;AAAA,IACnD;AACO,WAAA;AAAA,EACT;AACF;AACA,MAAM,+BAA+B,oBAAoB;AAAA,EACvD,YAAY,aAAa,OAAO;AAC9B,UAAM,OAAO,UAAU;AAAA,EACzB;AAAA,EACA,IAAI,QAAQ,KAAK,OAAO,UAAU;AAC5B,QAAA,WAAW,OAAO,GAAG;AACrB,QAAA,CAAC,KAAK,YAAY;AACd,YAAA,qBAAqB,WAAW,QAAQ;AAC9C,UAAI,CAAC,UAAU,KAAK,KAAK,CAAC,WAAW,KAAK,GAAG;AAC3C,mBAAW,MAAM,QAAQ;AACzB,gBAAQ,MAAM,KAAK;AAAA,MACrB;AACI,UAAA,CAAC,QAAQ,MAAM,KAAK,MAAM,QAAQ,KAAK,CAAC,MAAM,KAAK,GAAG;AACxD,YAAI,oBAAoB;AACf,iBAAA;AAAA,QAAA,OACF;AACL,mBAAS,QAAQ;AACV,iBAAA;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,UAAM,SAAS,QAAQ,MAAM,KAAK,aAAa,GAAG,IAAI,OAAO,GAAG,IAAI,OAAO,SAAS,OAAO,QAAQ,GAAG;AACtG,UAAM,SAAS,QAAQ,IAAI,QAAQ,KAAK,OAAO,QAAQ;AACnD,QAAA,WAAW,MAAM,QAAQ,GAAG;AAC9B,UAAI,CAAC,QAAQ;AACH,gBAAA,QAAQ,OAAO,KAAK,KAAK;AAAA,MACxB,WAAA,WAAW,OAAO,QAAQ,GAAG;AACtC,gBAAQ,QAAQ,OAAO,KAAK,OAAO,QAAQ;AAAA,MAC7C;AAAA,IACF;AACO,WAAA;AAAA,EACT;AAAA,EACA,eAAe,QAAQ,KAAK;AACpB,UAAA,SAAS,OAAO,QAAQ,GAAG;AAC3B,UAAA,WAAW,OAAO,GAAG;AAC3B,UAAM,SAAS,QAAQ,eAAe,QAAQ,GAAG;AACjD,QAAI,UAAU,QAAQ;AACpB,cAAQ,QAAQ,UAAU,KAAK,QAAQ,QAAQ;AAAA,IACjD;AACO,WAAA;AAAA,EACT;AAAA,EACA,IAAI,QAAQ,KAAK;AACf,UAAM,SAAS,QAAQ,IAAI,QAAQ,GAAG;AAClC,QAAA,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,IAAI,GAAG,GAAG;AACxC,YAAA,QAAQ,OAAO,GAAG;AAAA,IAC1B;AACO,WAAA;AAAA,EACT;AAAA,EACA,QAAQ,QAAQ;AACd;AAAA,MACE;AAAA,MACA;AAAA,MACA,QAAQ,MAAM,IAAI,WAAW;AAAA,IAAA;AAExB,WAAA,QAAQ,QAAQ,MAAM;AAAA,EAC/B;AACF;AACA,MAAM,gCAAgC,oBAAoB;AAAA,EACxD,YAAY,aAAa,OAAO;AAC9B,UAAM,MAAM,UAAU;AAAA,EACxB;AAAA,EACA,IAAI,QAAQ,KAAK;AACgC;AAC7C;AAAA,QACE,yBAAyB,OAAO,GAAG,CAAC;AAAA,QACpC;AAAA,MAAA;AAAA,IAEJ;AACO,WAAA;AAAA,EACT;AAAA,EACA,eAAe,QAAQ,KAAK;AACqB;AAC7C;AAAA,QACE,4BAA4B,OAAO,GAAG,CAAC;AAAA,QACvC;AAAA,MAAA;AAAA,IAEJ;AACO,WAAA;AAAA,EACT;AACF;AACA,MAAM,sCAAsC;AAC5C,MAAM,uCAAuC;AAC7C,MAAM,0BAA8C,oBAAA;AAAA,EAClD;AACF;AACA,MAAM,0BAA8C,oBAAA,wBAAwB,IAAI;AAEhF,MAAM,YAAY,CAAC,UAAU;AAC7B,MAAM,WAAW,CAAC,MAAM,QAAQ,eAAe,CAAC;AAChD,SAAS,IAAI,QAAQ,KAAKC,cAAa,OAAOC,aAAY,OAAO;AAC/D,WAAS,OAAO,SAAS;AACnB,QAAA,YAAY,MAAM,MAAM;AACxB,QAAA,SAAS,MAAM,GAAG;AACxB,MAAI,CAACD,aAAY;AACX,QAAA,WAAW,KAAK,MAAM,GAAG;AACrB,YAAA,WAAW,OAAO,GAAG;AAAA,IAC7B;AACM,UAAA,WAAW,OAAO,MAAM;AAAA,EAChC;AACA,QAAM,EAAE,KAAK,KAAK,IAAI,SAAS,SAAS;AACxC,QAAM,OAAOC,aAAY,YAAYD,cAAa,aAAa;AAC/D,MAAI,KAAK,KAAK,WAAW,GAAG,GAAG;AAC7B,WAAO,KAAK,OAAO,IAAI,GAAG,CAAC;AAAA,EAClB,WAAA,KAAK,KAAK,WAAW,MAAM,GAAG;AACvC,WAAO,KAAK,OAAO,IAAI,MAAM,CAAC;AAAA,EAAA,WACrB,WAAW,WAAW;AAC/B,WAAO,IAAI,GAAG;AAAA,EAChB;AACF;AACA,SAASE,MAAI,KAAKF,cAAa,OAAO;AAC9B,QAAA,SAAS,KAAK,SAAS;AACvB,QAAA,YAAY,MAAM,MAAM;AACxB,QAAA,SAAS,MAAM,GAAG;AACxB,MAAI,CAACA,aAAY;AACX,QAAA,WAAW,KAAK,MAAM,GAAG;AACrB,YAAA,WAAW,OAAO,GAAG;AAAA,IAC7B;AACM,UAAA,WAAW,OAAO,MAAM;AAAA,EAChC;AACA,SAAO,QAAQ,SAAS,OAAO,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG,KAAK,OAAO,IAAI,MAAM;AAChF;AACA,SAAS,KAAK,QAAQA,cAAa,OAAO;AACxC,WAAS,OAAO,SAAS;AACzB,GAACA,eAAc,MAAM,MAAM,MAAM,GAAG,WAAW,WAAW;AAC1D,SAAO,QAAQ,IAAI,QAAQ,QAAQ,MAAM;AAC3C;AACA,SAAS,IAAI,OAAO;AAClB,UAAQ,MAAM,KAAK;AACb,QAAA,SAAS,MAAM,IAAI;AACnB,QAAA,QAAQ,SAAS,MAAM;AAC7B,QAAM,SAAS,MAAM,IAAI,KAAK,QAAQ,KAAK;AAC3C,MAAI,CAAC,QAAQ;AACX,WAAO,IAAI,KAAK;AACR,YAAA,QAAQ,OAAO,OAAO,KAAK;AAAA,EACrC;AACO,SAAA;AACT;AACA,SAAS,MAAM,KAAK,OAAO;AACzB,UAAQ,MAAM,KAAK;AACb,QAAA,SAAS,MAAM,IAAI;AACzB,QAAM,EAAE,KAAK,MAAM,KAAK,SAAS,SAAS,MAAM;AAChD,MAAI,SAAS,KAAK,KAAK,QAAQ,GAAG;AAClC,MAAI,CAAC,QAAQ;AACX,UAAM,MAAM,GAAG;AACN,aAAA,KAAK,KAAK,QAAQ,GAAG;AAAA,EAAA,OACsB;AAClC,sBAAA,QAAQ,MAAM,GAAG;AAAA,EACrC;AACA,QAAM,WAAW,KAAK,KAAK,QAAQ,GAAG;AAC/B,SAAA,IAAI,KAAK,KAAK;AACrB,MAAI,CAAC,QAAQ;AACH,YAAA,QAAQ,OAAO,KAAK,KAAK;AAAA,EACxB,WAAA,WAAW,OAAO,QAAQ,GAAG;AACtC,YAAQ,QAAQ,OAAO,KAAK,OAAO,QAAQ;AAAA,EAC7C;AACO,SAAA;AACT;AACA,SAAS,YAAY,KAAK;AAClB,QAAA,SAAS,MAAM,IAAI;AACzB,QAAM,EAAE,KAAK,MAAM,KAAK,SAAS,SAAS,MAAM;AAChD,MAAI,SAAS,KAAK,KAAK,QAAQ,GAAG;AAClC,MAAI,CAAC,QAAQ;AACX,UAAM,MAAM,GAAG;AACN,aAAA,KAAK,KAAK,QAAQ,GAAG;AAAA,EAAA,OACsB;AAClC,sBAAA,QAAQ,MAAM,GAAG;AAAA,EACrC;AACA,QAAM,WAAW,OAAO,KAAK,KAAK,QAAQ,GAAG,IAAI;AAC3C,QAAA,SAAS,OAAO,OAAO,GAAG;AAChC,MAAI,QAAQ;AACV,YAAQ,QAAQ,UAAU,KAAK,QAAQ,QAAQ;AAAA,EACjD;AACO,SAAA;AACT;AACA,SAAS,QAAQ;AACT,QAAA,SAAS,MAAM,IAAI;AACnB,QAAA,WAAW,OAAO,SAAS;AACjC,QAAM,YAAwD,MAAM,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM;AACxG,QAAA,SAAS,OAAO;AACtB,MAAI,UAAU;AACZ,YAAQ,QAAQ,SAAS,QAAQ,QAAQ,SAAS;AAAA,EACpD;AACO,SAAA;AACT;AACA,SAAS,cAAcA,aAAYC,YAAW;AACrC,SAAA,SAAS,QAAQ,UAAU,SAAS;AACzC,UAAM,WAAW;AACX,UAAA,SAAS,SAAS,SAAS;AAC3B,UAAA,YAAY,MAAM,MAAM;AAC9B,UAAM,OAAOA,aAAY,YAAYD,cAAa,aAAa;AAC/D,KAACA,eAAc,MAAM,WAAW,WAAW,WAAW;AACtD,WAAO,OAAO,QAAQ,CAAC,OAAO,QAAQ;AAC7B,aAAA,SAAS,KAAK,SAAS,KAAK,KAAK,GAAG,KAAK,GAAG,GAAG,QAAQ;AAAA,IAAA,CAC/D;AAAA,EAAA;AAEL;AACA,SAAS,qBAAqB,QAAQA,aAAYC,YAAW;AAC3D,SAAO,YAAY,MAAM;AACjB,UAAA,SAAS,KAAK,SAAS;AACvB,UAAA,YAAY,MAAM,MAAM;AACxB,UAAA,cAAc,MAAM,SAAS;AACnC,UAAM,SAAS,WAAW,aAAa,WAAW,OAAO,YAAY;AAC/D,UAAA,YAAY,WAAW,UAAU;AACvC,UAAM,gBAAgB,OAAO,MAAM,EAAE,GAAG,IAAI;AAC5C,UAAM,OAAOA,aAAY,YAAYD,cAAa,aAAa;AAC/D,KAACA,eAAc;AAAA,MACb;AAAA,MACA;AAAA,MACA,YAAY,sBAAsB;AAAA,IAAA;AAE7B,WAAA;AAAA;AAAA,MAEL,OAAO;AACL,cAAM,EAAE,OAAO,KAAK,IAAI,cAAc,KAAK;AAC3C,eAAO,OAAO,EAAE,OAAO,SAAS;AAAA,UAC9B,OAAO,SAAS,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK;AAAA,UAC7D;AAAA,QAAA;AAAA,MAEJ;AAAA;AAAA,MAEA,CAAC,OAAO,QAAQ,IAAI;AACX,eAAA;AAAA,MACT;AAAA,IAAA;AAAA,EACF;AAEJ;AACA,SAAS,qBAAqB,MAAM;AAClC,SAAO,YAAY,MAAM;AACwB;AACvC,YAAA,MAAM,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,CAAC,OAAO;AAC/C;AAAA,QACE,GAAG,WAAW,IAAI,CAAC,cAAc,GAAG;AAAA,QACpC,MAAM,IAAI;AAAA,MAAA;AAAA,IAEd;AACA,WAAO,SAAS,WAAW,QAAQ,SAAS,UAAU,SAAS;AAAA,EAAA;AAEnE;AACA,SAAS,yBAAyB;AAChC,QAAM,2BAA2B;AAAA,IAC/B,IAAI,KAAK;AACA,aAAA,IAAI,MAAM,GAAG;AAAA,IACtB;AAAA,IACA,IAAI,OAAO;AACT,aAAO,KAAK,IAAI;AAAA,IAClB;AAAA,IAAA,KACAE;AAAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA,SAAS,cAAc,OAAO,KAAK;AAAA,EAAA;AAErC,QAAM,2BAA2B;AAAA,IAC/B,IAAI,KAAK;AACP,aAAO,IAAI,MAAM,KAAK,OAAO,IAAI;AAAA,IACnC;AAAA,IACA,IAAI,OAAO;AACT,aAAO,KAAK,IAAI;AAAA,IAClB;AAAA,IAAA,KACAA;AAAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA,SAAS,cAAc,OAAO,IAAI;AAAA,EAAA;AAEpC,QAAM,4BAA4B;AAAA,IAChC,IAAI,KAAK;AACA,aAAA,IAAI,MAAM,KAAK,IAAI;AAAA,IAC5B;AAAA,IACA,IAAI,OAAO;AACF,aAAA,KAAK,MAAM,IAAI;AAAA,IACxB;AAAA,IACA,IAAI,KAAK;AACP,aAAOA,MAAI,KAAK,MAAM,KAAK,IAAI;AAAA,IACjC;AAAA,IACA,KAAK,qBAAqB,KAAK;AAAA,IAC/B,KAAK,qBAAqB,KAAK;AAAA,IAC/B,QAAQ,qBAAqB,QAAQ;AAAA,IACrC,OAAO,qBAAqB,OAAO;AAAA,IACnC,SAAS,cAAc,MAAM,KAAK;AAAA,EAAA;AAEpC,QAAM,mCAAmC;AAAA,IACvC,IAAI,KAAK;AACP,aAAO,IAAI,MAAM,KAAK,MAAM,IAAI;AAAA,IAClC;AAAA,IACA,IAAI,OAAO;AACF,aAAA,KAAK,MAAM,IAAI;AAAA,IACxB;AAAA,IACA,IAAI,KAAK;AACP,aAAOA,MAAI,KAAK,MAAM,KAAK,IAAI;AAAA,IACjC;AAAA,IACA,KAAK,qBAAqB,KAAK;AAAA,IAC/B,KAAK,qBAAqB,KAAK;AAAA,IAC/B,QAAQ,qBAAqB,QAAQ;AAAA,IACrC,OAAO,qBAAqB,OAAO;AAAA,IACnC,SAAS,cAAc,MAAM,IAAI;AAAA,EAAA;AAEnC,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EAAA;AAEO,kBAAA,QAAQ,CAAC,WAAW;AAClC,6BAAyB,MAAM,IAAI,qBAAqB,QAAQ,OAAO,KAAK;AAC5E,8BAA0B,MAAM,IAAI,qBAAqB,QAAQ,MAAM,KAAK;AAC5E,6BAAyB,MAAM,IAAI,qBAAqB,QAAQ,OAAO,IAAI;AAC3E,qCAAiC,MAAM,IAAI;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF,CACD;AACM,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,MAAM;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAA2C,uCAAA;AAC3C,SAAS,4BAA4BF,aAAY,SAAS;AACxD,QAAM,mBAAmB,UAAUA,cAAa,kCAAkC,0BAA0BA,cAAa,2BAA2B;AAC7I,SAAA,CAAC,QAAQ,KAAK,aAAa;AAChC,QAAI,QAAQ,kBAAkB;AAC5B,aAAO,CAACA;AAAAA,IAAA,WACC,QAAQ,kBAAkB;AAC5BA,aAAAA;AAAAA,IAAA,WACE,QAAQ,WAAW;AACrB,aAAA;AAAA,IACT;AACA,WAAO,QAAQ;AAAA,MACb,OAAO,kBAAkB,GAAG,KAAK,OAAO,SAAS,mBAAmB;AAAA,MACpE;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ;AACA,MAAM,4BAA4B;AAAA,EAChC,KAAiD,4CAAA,OAAO,KAAK;AAC/D;AACA,MAAM,4BAA4B;AAAA,EAChC,KAAiD,4CAAA,OAAO,IAAI;AAC9D;AACA,MAAM,6BAA6B;AAAA,EACjC,KAAiD,4CAAA,MAAM,KAAK;AAC9D;AACA,MAAM,oCAAoC;AAAA,EACxC,KAAiD,4CAAA,MAAM,IAAI;AAC7D;AACA,SAAS,kBAAkB,QAAQ,MAAM,KAAK;AACtC,QAAA,SAAS,MAAM,GAAG;AACxB,MAAI,WAAW,OAAO,KAAK,KAAK,QAAQ,MAAM,GAAG;AACzC,UAAA,OAAO,UAAU,MAAM;AAC7B;AAAA,MACE,YAAY,IAAI,kEAAkE,SAAS,QAAQ,aAAa,EAAE;AAAA,IAAA;AAAA,EAEtH;AACF;AAEA,MAAM,kCAAkC;AACxC,MAAM,yCAAyC;AAC/C,MAAM,kCAAkC;AACxC,MAAM,yCAAyC;AAC/C,SAAS,cAAc,SAAS;AAC9B,UAAQ,SAAS;AAAA,IACf,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,IACT;AACS,aAAA;AAAA,EACX;AACF;AACA,SAAS,cAAc,OAAO;AAC5B,SAAO,MAAM,UAAU,KAAK,CAAC,OAAO,aAAa,KAAK,IAAI,IAAkB,cAAc,UAAU,KAAK,CAAC;AAC5G;AACA,SAAS,SAAS,QAAQ;AACpB,MAAA,WAAW,MAAM,GAAG;AACf,WAAA;AAAA,EACT;AACO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,gBAAgB,QAAQ;AACxB,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,SAAS,QAAQ;AACjB,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,gBAAgB,QAAQ;AACxB,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,qBAAqB,QAAQ,aAAa,cAAc,oBAAoB,UAAU;AACzF,MAAA,CAAC,SAAS,MAAM,GAAG;AAC0B;AAC7C,aAAO,kCAAkC,OAAO,MAAM,CAAC,EAAE;AAAA,IAC3D;AACO,WAAA;AAAA,EACT;AACA,MAAI,OAAO,SAAS,KAAK,EAAE,eAAe,OAAO,gBAAgB,IAAI;AAC5D,WAAA;AAAA,EACT;AACM,QAAA,gBAAgB,SAAS,IAAI,MAAM;AACzC,MAAI,eAAe;AACV,WAAA;AAAA,EACT;AACM,QAAA,aAAa,cAAc,MAAM;AACvC,MAAI,eAAe,GAAiB;AAC3B,WAAA;AAAA,EACT;AACA,QAAM,QAAQ,IAAI;AAAA,IAChB;AAAA,IACA,eAAe,IAAqB,qBAAqB;AAAA,EAAA;AAElD,WAAA,IAAI,QAAQ,KAAK;AACnB,SAAA;AACT;AACA,SAAS,WAAW,OAAO;AACrB,MAAA,WAAW,KAAK,GAAG;AACd,WAAA,WAAW,MAAM,SAAS,CAAC;AAAA,EACpC;AACA,SAAO,CAAC,EAAE,SAAS,MAAM,gBAAgB;AAC3C;AACA,SAAS,WAAW,OAAO;AACzB,SAAO,CAAC,EAAE,SAAS,MAAM,gBAAgB;AAC3C;AACA,SAAS,UAAU,OAAO;AACxB,SAAO,CAAC,EAAE,SAAS,MAAM,eAAe;AAC1C;AAIA,SAAS,MAAM,UAAU;AACjB,QAAA,MAAM,YAAY,SAAS,SAAS;AACnC,SAAA,MAAM,MAAM,GAAG,IAAI;AAC5B;AACA,SAAS,QAAQ,OAAO;AAClB,MAAA,OAAO,aAAa,KAAK,GAAG;AAC1B,QAAA,OAAO,YAAY,IAAI;AAAA,EAC7B;AACO,SAAA;AACT;AACA,MAAM,aAAa,CAAC,UAAU,SAAS,KAAK,IAAI,SAAS,KAAK,IAAI;AAClE,MAAM,aAAa,CAAC,UAAU,SAAS,KAAK,IAAI,SAAS,KAAK,IAAI;AAElE,MAAM,4BAA4B;AAClC,MAAM,gBAAgB;AAAA,EACpB,YAAY,QAAQ,SAASA,aAAY,OAAO;AAC9C,SAAK,SAAS;AACd,SAAK,UAAU;AACf,SAAK,MAAM;AACX,SAAK,YAAY;AACjB,SAAK,gBAAgB,IAAI;AACzB,SAAK,SAAS,IAAI;AAAA,MAChB,MAAM,OAAO,KAAK,MAAM;AAAA,MACxB,MAAM;AAAA,QACJ;AAAA,QACA,KAAK,OAAO,gBAAgB,IAAI,IAAI;AAAA,MACtC;AAAA,IAAA;AAEF,SAAK,OAAO,WAAW;AACvB,SAAK,OAAO,SAAS,KAAK,aAAa,CAAC;AACxC,SAAK,gBAAgB,IAAIA;AAAAA,EAC3B;AAAA,EACA,IAAI,QAAQ;AACJ,UAAA,OAAO,MAAM,IAAI;AACvB,SAAK,CAAC,KAAK,cAAc,KAAK,OAAO,UAAU,WAAW,KAAK,QAAQ,KAAK,SAAS,KAAK,OAAO,IAAA,CAAK,GAAG;AACvG,sBAAgB,MAAM,CAAC;AAAA,IACzB;AACA,kBAAc,IAAI;AACd,QAAA,KAAK,OAAO,eAAe,GAAG;AAChC,UAAiD,KAAK,gBAAgB;AACpE,eAAO,2BAA2B;AAAA;AAAA,WAE/B,KAAK,MAAM;AAAA,MAChB;AACA,sBAAgB,MAAM,CAAC;AAAA,IACzB;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,MAAM,UAAU;AAClB,SAAK,QAAQ,QAAQ;AAAA,EACvB;AAAA;AAAA,EAEA,IAAI,SAAS;AACX,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,IAAI,OAAO,GAAG;AACZ,SAAK,OAAO,QAAQ;AAAA,EACtB;AAAA;AAEF;AACA,SAAS,WAAW,iBAAiB,cAAc,QAAQ,OAAO;AAC5D,MAAA;AACA,MAAA;AACE,QAAA,aAAa,WAAW,eAAe;AAC7C,MAAI,YAAY;AACL,aAAA;AACT,aAAqD,MAAM;AACzD,aAAO,oDAAoD;AAAA,IAAA;AAAA,EACzD,OACC;AACL,aAAS,gBAAgB;AACzB,aAAS,gBAAgB;AAAA,EAC3B;AACM,QAAA,OAAO,IAAI,gBAAgB,QAAQ,QAAQ,cAAc,CAAC,QAAQ,KAAK;AAC5B,MAAA,gBAAgB,CAAC,OAAO;AAClE,SAAA,OAAO,UAAU,aAAa;AAC9B,SAAA,OAAO,YAAY,aAAa;AAAA,EACvC;AACO,SAAA;AACT;AAEA,SAAS,cAAc,MAAM;AACvB,MAAA;AACJ,MAAI,eAAe,cAAc;AAC/B,WAAO,MAAM,IAAI;AACjB;AAAA,MACE;AAAA,OACC,KAAK,KAAK,QAAQ,OAAO,KAAK,KAAK,MAAM;AAAA,QACxC,MAAM,KAAK,MAAM;AAAA,QACjB,gBAAgB,kBAAkB,OAAO;AAAA,MAC3C;AAAA,MAC4C;AAAA,QAC1C,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,KAAK;AAAA,MAAA;AAAA,IACH;AAAA,EAER;AACF;AACA,SAAS,gBAAgB,MAAM,aAAa,GAAG,QAAQ;AACrD,SAAO,MAAM,IAAI;AACjB,QAAM,MAAM,KAAK;AACjB,MAAI,KAAK;AACP;AAAA,MACE;AAAA,MACA;AAAA,MAC4C;AAAA,QAC1C,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,KAAK;AAAA,QACL,UAAU;AAAA,MAAA;AAAA,IACR;AAAA,EAER;AACF;AACA,SAAS,MAAMG,IAAG;AAChB,SAAO,CAAC,EAAEA,MAAKA,GAAE,cAAc;AACjC;AACA,SAAS,IAAI,OAAO;AACX,SAAA,UAAU,OAAO,KAAK;AAC/B;AAIA,SAAS,UAAU,UAAU,SAAS;AAChC,MAAA,MAAM,QAAQ,GAAG;AACZ,WAAA;AAAA,EACT;AACO,SAAA,IAAI,QAAQ,UAAU,OAAO;AACtC;AACA,MAAM,QAAQ;AAAA,EACZ,YAAY,OAAO,eAAe;AAChC,SAAK,gBAAgB;AACrB,SAAK,MAAM;AACX,SAAK,YAAY;AACjB,SAAK,YAAY,gBAAgB,QAAQ,MAAM,KAAK;AACpD,SAAK,SAAS,gBAAgB,QAAQ,WAAW,KAAK;AAAA,EACxD;AAAA,EACA,IAAI,QAAQ;AACV,kBAAc,IAAI;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,MAAM,QAAQ;AAChB,UAAM,iBAAiB,KAAK,iBAAiB,UAAU,MAAM,KAAK,WAAW,MAAM;AAC1E,aAAA,iBAAiB,SAAS,MAAM,MAAM;AAC/C,QAAI,WAAW,QAAQ,KAAK,SAAS,GAAG;AACtC,WAAK,YAAY;AACjB,WAAK,SAAS,iBAAiB,SAAS,WAAW,MAAM;AACzC,sBAAA,MAAM,GAAG,MAAM;AAAA,IACjC;AAAA,EACF;AACF;AAIA,SAAS,MAAM,MAAM;AACnB,SAAO,MAAM,IAAI,IAAI,KAAK,QAAQ;AACpC;AAIA,MAAM,wBAAwB;AAAA,EAC5B,KAAK,CAAC,QAAQ,KAAK,aAAa,MAAM,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC;AAAA,EACxE,KAAK,CAAC,QAAQ,KAAK,OAAO,aAAa;AAC/B,UAAA,WAAW,OAAO,GAAG;AAC3B,QAAI,MAAM,QAAQ,KAAK,CAAC,MAAM,KAAK,GAAG;AACpC,eAAS,QAAQ;AACV,aAAA;AAAA,IAAA,OACF;AACL,aAAO,QAAQ,IAAI,QAAQ,KAAK,OAAO,QAAQ;AAAA,IACjD;AAAA,EACF;AACF;AACA,SAAS,UAAU,gBAAgB;AACjC,SAAO,WAAW,cAAc,IAAI,iBAAiB,IAAI,MAAM,gBAAgB,qBAAqB;AACtG;AA4EA,MAAM,QAAQ,CAAA;AACd,SAAS,mBAAmB,OAAO;AACjC,QAAM,KAAK,KAAK;AAClB;AACA,SAAS,oBAAoB;AAC3B,QAAM,IAAI;AACZ;AACA,SAAS,OAAO,QAAQ,MAAM;AACd;AACR,QAAA,WAAW,MAAM,SAAS,MAAM,MAAM,SAAS,CAAC,EAAE,YAAY;AACpE,QAAM,iBAAiB,YAAY,SAAS,WAAW,OAAO;AAC9D,QAAM,QAAQ;AACd,MAAI,gBAAgB;AAClB;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,MAAM,KAAK,IAAI,CAAC,MAAM;AACpB,cAAI,IAAI;AACR,kBAAQ,MAAM,KAAK,EAAE,aAAa,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,OAAO,KAAK,KAAK,UAAU,CAAC;AAAA,QAAA,CAC9F,EAAE,KAAK,EAAE;AAAA,QACV,YAAY,SAAS;AAAA,QACrB,MAAM;AAAA,UACJ,CAAC,EAAE,YAAY,OAAO,oBAAoB,UAAU,MAAM,IAAI,CAAC;AAAA,QAAA,EAC/D,KAAK,IAAI;AAAA,QACX;AAAA,MACF;AAAA,IAAA;AAAA,EACF,OACK;AACL,UAAM,WAAW,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI;AAC/C,QAAI,MAAM;AAAA,IACV,MAAM;AACJ,eAAS,KAAK;AAAA,GACjB,GAAG,YAAY,KAAK,CAAC;AAAA,IACpB;AACQ,YAAA,KAAK,GAAG,QAAQ;AAAA,EAC1B;AACc;AAChB;AACA,SAAS,oBAAoB;AAC3B,MAAI,eAAe,MAAM,MAAM,SAAS,CAAC;AACzC,MAAI,CAAC,cAAc;AACjB,WAAO;EACT;AACA,QAAM,kBAAkB,CAAA;AACxB,SAAO,cAAc;AACb,UAAA,OAAO,gBAAgB,CAAC;AAC1B,QAAA,QAAQ,KAAK,UAAU,cAAc;AAClC,WAAA;AAAA,IAAA,OACA;AACL,sBAAgB,KAAK;AAAA,QACnB,OAAO;AAAA,QACP,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AACA,UAAM,iBAAiB,aAAa,aAAa,aAAa,UAAU;AACxE,mBAAe,kBAAkB,eAAe;AAAA,EAClD;AACO,SAAA;AACT;AACA,SAAS,YAAY,OAAO;AAC1B,QAAM,OAAO,CAAA;AACP,QAAA,QAAQ,CAAC,OAAO,MAAM;AAC1B,SAAK,KAAK,GAAG,MAAM,IAAI,CAAA,IAAK,CAAC;AAAA,CAChC,GAAG,GAAG,iBAAiB,KAAK,CAAC;AAAA,EAAA,CAC3B;AACM,SAAA;AACT;AACA,SAAS,iBAAiB,EAAE,OAAO,gBAAgB;AACjD,QAAM,UAAU,eAAe,IAAI,QAAQ,YAAY,sBAAsB;AAC7E,QAAM,SAAS,MAAM,YAAY,MAAM,UAAU,UAAU,OAAO;AAClE,QAAM,OAAO,QAAQ;AAAA,IACnB,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EACD,CAAA;AACD,QAAM,QAAQ,MAAM;AACpB,SAAO,MAAM,QAAQ,CAAC,MAAM,GAAG,YAAY,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,OAAO,KAAK;AACjF;AACA,SAAS,YAAY,OAAO;AAC1B,QAAM,MAAM,CAAA;AACN,QAAA,OAAO,OAAO,KAAK,KAAK;AAC9B,OAAK,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,QAAQ;AAChC,QAAI,KAAK,GAAG,WAAW,KAAK,MAAM,GAAG,CAAC,CAAC;AAAA,EAAA,CACxC;AACG,MAAA,KAAK,SAAS,GAAG;AACnB,QAAI,KAAK,MAAM;AAAA,EACjB;AACO,SAAA;AACT;AACA,SAAS,WAAW,KAAK,OAAO,KAAK;AAC/B,MAAA,SAAS,KAAK,GAAG;AACX,YAAA,KAAK,UAAU,KAAK;AAC5B,WAAO,MAAM,QAAQ,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE;AAAA,EAAA,WAC9B,OAAO,UAAU,YAAY,OAAO,UAAU,aAAa,SAAS,MAAM;AACnF,WAAO,MAAM,QAAQ,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE;AAAA,EAAA,WAC9B,MAAM,KAAK,GAAG;AACvB,YAAQ,WAAW,KAAK,MAAM,MAAM,KAAK,GAAG,IAAI;AAChD,WAAO,MAAM,QAAQ,CAAC,GAAG,GAAG,SAAS,OAAO,GAAG;AAAA,EAAA,WACtC,WAAW,KAAK,GAAG;AACrB,WAAA,CAAC,GAAG,GAAG,MAAM,MAAM,OAAO,IAAI,MAAM,IAAI,MAAM,EAAE,EAAE;AAAA,EAAA,OACpD;AACL,YAAQ,MAAM,KAAK;AACnB,WAAO,MAAM,QAAQ,CAAC,GAAG,GAAG,KAAK,KAAK;AAAA,EACxC;AACF;AAEA,MAAM,mBAAmB;AAAA,EACvB,CAAC,IAAI,GAAG;AAAA,EACR,CAAC,IAAI,GAAG;AAAA,EACR,CAAC,GAAG,GAAG;AAAA,EACP,CAAC,IAAI,GAAG;AAAA,EACR,CAAC,GAAG,GAAG;AAAA,EACP,CAAC,IAAI,GAAG;AAAA,EACR,CAAC,GAAG,GAAG;AAAA,EACP,CAAC,KAAK,GAAG;AAAA,EACT,CAAC,IAAI,GAAG;AAAA,EACR,CAAC,GAAG,GAAG;AAAA,EACP,CAAC,IAAI,GAAG;AAAA,EACR,CAAC,IAAI,GAAG;AAAA,EACR,CAAC,KAAK,GAAG;AAAA,EACT,CAAC,KAAK,GAAG;AAAA,EACT,CAAC,CAAC,GAAG;AAAA,EACL,CAAC,CAAC,GAAG;AAAA,EACL,CAAC,CAAC,GAAG;AAAA,EACL,CAAC,CAAC,GAAG;AAAA,EACL,CAAC,CAAC,GAAG;AAAA,EACL,CAAC,CAAC,GAAG;AAAA,EACL,CAAC,CAAC,GAAG;AAAA,EACL,CAAC,CAAC,GAAG;AAAA,EACL,CAAC,CAAC,GAAG;AAAA,EACL,CAAC,CAAC,GAAG;AAAA,EACL,CAAC,EAAE,GAAG;AAAA,EACN,CAAC,EAAE,GAAG;AAAA,EACN,CAAC,EAAE,GAAG;AAAA,EACN,CAAC,EAAE,GAAG;AAAA,EACN,CAAC,EAAE,GAAG;AACR;AACA,SAAS,sBAAsB,IAAI,UAAU,MAAM,MAAM;AACnD,MAAA;AACF,WAAO,OAAO,GAAG,GAAG,IAAI,IAAI,GAAG;AAAA,WACxB,KAAK;AACA,gBAAA,KAAK,UAAU,IAAI;AAAA,EACjC;AACF;AACA,SAAS,2BAA2B,IAAI,UAAU,MAAM,MAAM;AACxD,MAAA,WAAW,EAAE,GAAG;AAClB,UAAM,MAAM,sBAAsB,IAAI,UAAU,MAAM,IAAI;AACtD,QAAA,OAAO,UAAU,GAAG,GAAG;AACrB,UAAA,MAAM,CAAC,QAAQ;AACL,oBAAA,KAAK,UAAU,IAAI;AAAA,MAAA,CAChC;AAAA,IACH;AACO,WAAA;AAAA,EACT;AACA,QAAM,SAAS,CAAA;AACf,WAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAC3B,WAAA,KAAK,2BAA2B,GAAG,CAAC,GAAG,UAAU,MAAM,IAAI,CAAC;AAAA,EACrE;AACO,SAAA;AACT;AACA,SAAS,YAAY,KAAK,UAAU,MAAM,aAAa,MAAM;AACrD,QAAA,eAAe,WAAW,SAAS,QAAQ;AACjD,MAAI,UAAU;AACZ,QAAI,MAAM,SAAS;AACnB,UAAM,kBAAkB,SAAS;AACjC,UAAM,YAAwD,iBAAiB,IAAI,KAAK;AACxF,WAAO,KAAK;AACV,YAAM,qBAAqB,IAAI;AAC/B,UAAI,oBAAoB;AACtB,iBAAS,IAAI,GAAG,IAAI,mBAAmB,QAAQ,KAAK;AAClD,cAAI,mBAAmB,CAAC,EAAE,KAAK,iBAAiB,SAAS,MAAM,OAAO;AACpE;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,YAAM,IAAI;AAAA,IACZ;AACM,UAAA,kBAAkB,SAAS,WAAW,OAAO;AACnD,QAAI,iBAAiB;AACnB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA,CAAC,KAAK,iBAAiB,SAAS;AAAA,MAAA;AAElC;AAAA,IACF;AAAA,EACF;AACS,WAAA,KAAK,MAAM,cAAc,UAAU;AAC9C;AACA,SAAS,SAAS,KAAK,MAAM,cAAc,aAAa,MAAM;AACb;AACvC,UAAA,OAAO,iBAAiB,IAAI,KAAK;AACvC,QAAI,cAAc;AAChB,yBAAmB,YAAY;AAAA,IACjC;AACA,WAAO,kBAAkB,OAAO,wBAAwB,IAAI,KAAK,EAAE,EAAE;AACrE,QAAI,cAAc;AACE;IACpB;AACA,QAAI,YAAY;AACd,cAAQ,MAAM,GAAG;AAAA,IAAA,OACZ;AACL,cAAQ,MAAM,GAAG;AAAA,IACnB;AAAA,EAGF;AACF;AAEA,IAAI,aAAa;AACjB,IAAI,iBAAiB;AACrB,MAAMC,UAAQ,CAAA;AACd,IAAI,aAAa;AACjB,MAAM,sBAAsB,CAAA;AAC5B,IAAI,qBAAqB;AACzB,IAAI,iBAAiB;AACrB,MAAM,0CAA0C;AAChD,IAAI,sBAAsB;AAC1B,MAAM,kBAAkB;AACxB,SAAS,WAAW,IAAI;AACtB,QAAMC,KAAI,uBAAuB;AAC1B,SAAA,KAAKA,GAAE,KAAK,OAAO,GAAG,KAAK,IAAI,IAAI,EAAE,IAAIA;AAClD;AACA,SAAS,mBAAmB,IAAI;AAC9B,MAAI,QAAQ,aAAa;AACzB,MAAI,MAAMD,QAAM;AAChB,SAAO,QAAQ,KAAK;AACZ,UAAA,SAAS,QAAQ,QAAQ;AACzB,UAAA,YAAYA,QAAM,MAAM;AACxB,UAAA,cAAc,MAAM,SAAS;AACnC,QAAI,cAAc,MAAM,gBAAgB,MAAM,UAAU,KAAK;AAC3D,cAAQ,SAAS;AAAA,IAAA,OACZ;AACC,YAAA;AAAA,IACR;AAAA,EACF;AACO,SAAA;AACT;AACA,SAAS,SAAS,KAAK;AACrB,MAAI,CAACA,QAAM,UAAU,CAACA,QAAM;AAAA,IAC1B;AAAA,IACA,cAAc,IAAI,eAAe,aAAa,IAAI;AAAA,EAAA,GACjD;AACG,QAAA,IAAI,MAAM,MAAM;AAClBA,cAAM,KAAK,GAAG;AAAA,IAAA,OACT;AACLA,cAAM,OAAO,mBAAmB,IAAI,EAAE,GAAG,GAAG,GAAG;AAAA,IACjD;AACW;EACb;AACF;AACA,SAAS,aAAa;AAChB,MAAA,CAAC,cAAc,CAAC,gBAAgB;AACjB,qBAAA;AACK,0BAAA,gBAAgB,KAAK,SAAS;AAAA,EACtD;AACF;AACA,SAAS,YAAY,KAAK;AACjB,SAAAA,QAAM,QAAQ,GAAG,IAAI;AAC9B;AACA,SAAS,cAAc,KAAK;AACpB,QAAA,IAAIA,QAAM,QAAQ,GAAG;AAC3B,MAAI,IAAI,YAAY;AACZA,YAAA,OAAO,GAAG,CAAC;AAAA,EACnB;AACF;AACA,SAAS,iBAAiB,IAAI;AACxB,MAAA,CAAC,QAAQ,EAAE,GAAG;AACZ,QAAA,CAAC,sBAAsB,CAAC,mBAAmB;AAAA,MAC7C;AAAA,MACA,GAAG,eAAe,iBAAiB,IAAI;AAAA,IAAA,GACtC;AACD,0BAAoB,KAAK,EAAE;AAAA,IAC7B;AAAA,EAAA,OACK;AACe,wBAAA,KAAK,GAAG,EAAE;AAAA,EAChC;AACW;AACb;AACA,SAAS,iBAAiB,UAAU,MAAM,IAAI,aAAa,aAAa,IAAI,GAAG;AAC9B;AACtC,WAAA,4BAA4B;EACrC;AACO,SAAA,IAAIA,QAAM,QAAQ,KAAK;AACtB,UAAA,KAAKA,QAAM,CAAC;AACd,QAAA,MAAM,GAAG,KAAK;AACiC,UAAA,sBAAsB,MAAM,EAAE,GAAG;AAChF;AAAA,MACF;AACMA,cAAA,OAAO,GAAG,CAAC;AACjB;AACG;IACL;AAAA,EACF;AACF;AACA,SAAS,kBAAkB,MAAM;AAC/B,MAAI,oBAAoB,QAAQ;AAC9B,UAAM,UAAU,CAAC,GAAG,IAAI,IAAI,mBAAmB,CAAC,EAAE;AAAA,MAChD,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,MAAM,CAAC;AAAA,IAAA;AAE9B,wBAAoB,SAAS;AAC7B,QAAI,oBAAoB;AACH,yBAAA,KAAK,GAAG,OAAO;AAClC;AAAA,IACF;AACqB,yBAAA;AAC0B;AACtC,aAAA,4BAA4B;IACrC;AACA,SAAK,iBAAiB,GAAG,iBAAiB,mBAAmB,QAAQ,kBAAkB;AACrF,UAAiD,sBAAsB,MAAM,mBAAmB,cAAc,CAAC,GAAG;AAChH;AAAA,MACF;AACA,yBAAmB,cAAc;IACnC;AACqB,yBAAA;AACJ,qBAAA;AAAA,EACnB;AACF;AACA,MAAM,QAAQ,CAAC,QAAQ,IAAI,MAAM,OAAO,WAAW,IAAI;AACvD,MAAM,aAAa,CAAC,GAAG,MAAM;AAC3B,QAAME,QAAO,MAAM,CAAC,IAAI,MAAM,CAAC;AAC/B,MAAIA,UAAS,GAAG;AACV,QAAA,EAAE,OAAO,CAAC,EAAE;AACP,aAAA;AACL,QAAA,EAAE,OAAO,CAAC,EAAE;AACP,aAAA;AAAA,EACX;AACOA,SAAAA;AACT;AACA,SAAS,UAAU,MAAM;AACN,mBAAA;AACJ,eAAA;AACkC;AACtC,WAAA,4BAA4B;EACrC;AACAF,UAAM,KAAK,UAAU;AACrB,QAAM,QAAoD,CAAC,QAAQ,sBAAsB,MAAM,GAAG;AAC9F,MAAA;AACF,SAAK,aAAa,GAAG,aAAaA,QAAM,QAAQ,cAAc;AACtD,YAAA,MAAMA,QAAM,UAAU;AACxB,UAAA,OAAO,IAAI,WAAW,OAAO;AACkB,YAAA,MAAM,GAAG,GAAG;AAC3D;AAAA,QACF;AACsB,8BAAA,KAAK,MAAM,EAAE;AAAA,MACrC;AAAA,IACF;AAAA,EAAA,UACA;AACa,iBAAA;AACbA,YAAM,SAAS;AACf,sBAAkB,IAAI;AACT,iBAAA;AACS,0BAAA;AAClB,QAAAA,QAAM,UAAU,oBAAoB,QAAQ;AAC9C,gBAAU,IAAI;AAAA,IAChB;AAAA,EACF;AACF;AACA,SAAS,sBAAsB,MAAM,IAAI;AACvC,MAAI,CAAC,KAAK,IAAI,EAAE,GAAG;AACZ,SAAA,IAAI,IAAI,CAAC;AAAA,EAAA,OACT;AACC,UAAA,QAAQ,KAAK,IAAI,EAAE;AACzB,QAAI,QAAQ,iBAAiB;AAC3B,YAAM,WAAW,GAAG;AACpB,YAAM,gBAAgB,YAAY,iBAAiB,SAAS,IAAI;AAChE;AAAA,QACE,qCAAqC,gBAAgB,kBAAkB,aAAa,MAAM,EAAE;AAAA,QAC5F;AAAA,QACA;AAAA,MAAA;AAEK,aAAA;AAAA,IAAA,OACF;AACA,WAAA,IAAI,IAAI,QAAQ,CAAC;AAAA,IACxB;AAAA,EACF;AACF;AAEA,IAAI;AACJ,IAAI,SAAS,CAAA;AACb,IAAI,uBAAuB;AAC3B,SAAS,OAAO,UAAU,MAAM;AAC9B,MAAI,UAAU;AACH,aAAA,KAAK,OAAO,GAAG,IAAI;AAAA,EAAA,WACnB,CAAC,sBAAsB;AAChC,WAAO,KAAK,EAAE,OAAO,KAAM,CAAA;AAAA,EAC7B;AACF;AACA,SAAS,gBAAgB,MAAM,QAAQ;AACrC,MAAI,IAAI;AACG,aAAA;AACX,MAAI,UAAU;AACZ,aAAS,UAAU;AACZ,WAAA,QAAQ,CAAC,EAAE,OAAO,KAAA,MAAW,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC;AACjE,aAAS,CAAA;AAAA,EAAC;AAAA;AAAA;AAAA;AAAA,IAKV,OAAO,WAAW;AAAA,IAClB,OAAO;AAAA,IACP,GAAG,MAAM,KAAK,OAAO,cAAc,OAAO,SAAS,GAAG,cAAc,OAAO,SAAS,GAAG,SAAS,OAAO;AAAA,IACvG;AACA,UAAM,SAAS,OAAO,+BAA+B,OAAO,gCAAgC,CAAA;AACrF,WAAA,KAAK,CAAC,YAAY;AACvB,sBAAgB,SAAS,MAAM;AAAA,IAAA,CAChC;AACD,eAAW,MAAM;AACf,UAAI,CAAC,UAAU;AACb,eAAO,+BAA+B;AACf,+BAAA;AACvB,iBAAS,CAAA;AAAA,MACX;AAAA,OACC,GAAG;AAAA,EAAA,OACD;AACkB,2BAAA;AACvB,aAAS,CAAA;AAAA,EACX;AACF;AACA,SAAS,gBAAgB,KAAKG,UAAS;AAC9B,SAAA,YAA2B,KAAKA,UAAS;AAAA,IAC9C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AACH;AACA,MAAM,yBAAyC;AAAA,EAC7C;AAAA;AACF;AACA,MAAM,2BAA2C;AAAA,EAA4B;AAAA;AAA2C;AACxH,MAAM,4BAA4C;AAAA,EAChD;AAAA;AACF;AACA,MAAM,2BAA2B,CAAC,cAAc;AAC1C,MAAA,YAAY,OAAO,SAAS,kBAAkB;AAAA,EAClD,CAAC,SAAS,cAAc,SAAS,GAAG;AAClC,8BAA0B,SAAS;AAAA,EACrC;AACF;AACA;AAAA;AAEA,SAAS,4BAA4B,MAAM;AACzC,SAAO,CAAC,cAAc;AACpB;AAAA,MACE;AAAA,MACA,UAAU,WAAW;AAAA,MACrB,UAAU;AAAA;AAAA;AAAA,MAGV,UAAU,QAAQ,IAAI,SAAS,UAAU,SAAS,UAAU,OAAO,MAAM;AAAA,MACzE;AAAA,IAAA;AAAA,EACF;AAEJ;AACA,MAAM,oBAAoC;AAAA,EACxC;AAAA;AACF;AACA,MAAM,kBAAkC;AAAA,EACtC;AAAA;AACF;AACA,SAAS,8BAA8B,MAAM;AACpC,SAAA,CAAC,WAAW,MAAM,SAAS;AACzB,WAAA,MAAM,UAAU,WAAW,KAAK,UAAU,KAAK,WAAW,MAAM,IAAI;AAAA,EAAA;AAE/E;AACA,SAAS,sBAAsB,WAAW,OAAO,QAAQ;AACvD;AAAA,IACE;AAAA,IACA,UAAU,WAAW;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,SAAS,KAAK,UAAU,UAAU,SAAS;AACzC,MAAI,SAAS;AACX;AACI,QAAA,QAAQ,SAAS,MAAM,SAAS;AACS;AACvC,UAAA;AAAA,MACJ;AAAA,MACA,cAAc,CAAC,YAAY;AAAA,IACzB,IAAA;AACJ,QAAI,cAAc;AACZ,UAAA,EAAE,SAAS,iBAAiB,MAAM;AACpC,YAAI,CAAC,gBAAgB,EAAE,aAAa,KAAK,KAAK,eAAe;AAC3D;AAAA,YACE,4BAA4B,KAAK,+DAA+D,aAAa,KAAK,CAAC;AAAA,UAAA;AAAA,QAEvH;AAAA,MAAA,OACK;AACC,cAAA,YAAY,aAAa,KAAK;AAChC,YAAA,WAAW,SAAS,GAAG;AACnB,gBAAA,UAAU,UAAU,GAAG,OAAO;AACpC,cAAI,CAAC,SAAS;AACZ;AAAA,cACE,+DAA+D,KAAK;AAAA,YAAA;AAAA,UAExE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,OAAO;AACLC,QAAAA,mBAAkB,MAAM,WAAW,SAAS;AAClD,QAAM,WAAWA,oBAAmB,MAAM,MAAM,CAAC;AAC7C,MAAA,YAAY,YAAY,OAAO;AACjC,UAAM,eAAe,GAAG,aAAa,eAAe,UAAU,QAAQ;AACtE,UAAM,EAAE,QAAQ,KAAA,IAAS,MAAM,YAAY,KAAK;AAChD,QAAI,MAAM;AACD,aAAA,QAAQ,IAAI,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA,IACtD;AACA,QAAI,QAAQ;AACH,aAAA,QAAQ,IAAI,aAAa;AAAA,IAClC;AAAA,EACF;AACwE;AAChD,0BAAA,UAAU,OAAO,IAAI;AAAA,EAC7C;AAC+C;AACvC,UAAA,iBAAiB,MAAM;AAC7B,QAAI,mBAAmB,SAAS,MAAM,aAAa,cAAc,CAAC,GAAG;AACnE;AAAA,QACE,UAAU,cAAc,6BAA6B;AAAA,UACnD;AAAA,UACA,SAAS;AAAA,QAAA,CACV,uCAAuC,KAAK,iKAAiK;AAAA,UAC5M;AAAA,QAAA,CACD,iBAAiB,KAAK;AAAA,MAAA;AAAA,IAE3B;AAAA,EACF;AACI,MAAA;AACJ,MAAI,UAAU,MAAM,cAAc,aAAa,KAAK,CAAC;AAAA,EACrD,MAAM,cAAc,aAAa,SAAS,KAAK,CAAC,CAAC;AAC7C,MAAA,CAAC,WAAWA,kBAAiB;AAC/B,cAAU,MAAM,cAAc,aAAa,UAAU,KAAK,CAAC,CAAC;AAAA,EAC9D;AACA,MAAI,SAAS;AACX;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACM,QAAA,cAAc,MAAM,cAAc,MAAM;AAC9C,MAAI,aAAa;AACX,QAAA,CAAC,SAAS,SAAS;AACrB,eAAS,UAAU;IACV,WAAA,SAAS,QAAQ,WAAW,GAAG;AACxC;AAAA,IACF;AACS,aAAA,QAAQ,WAAW,IAAI;AAChC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF;AACA,SAAS,sBAAsB,MAAM,YAAY,UAAU,OAAO;AAChE,QAAM,QAAQ,WAAW;AACnB,QAAA,SAAS,MAAM,IAAI,IAAI;AAC7B,MAAI,WAAW,QAAQ;AACd,WAAA;AAAA,EACT;AACA,QAAM,MAAM,KAAK;AACjB,MAAI,aAAa,CAAA;AACjB,MAAI,aAAa;AACU,MAAA,CAAC,WAAW,IAAI,GAAG;AACtC,UAAA,cAAc,CAAC,SAAS;AAC5B,YAAM,uBAAuB,sBAAsB,MAAM,YAAY,IAAI;AACzE,UAAI,sBAAsB;AACX,qBAAA;AACb,eAAO,YAAY,oBAAoB;AAAA,MACzC;AAAA,IAAA;AAEF,QAAI,CAAC,WAAW,WAAW,OAAO,QAAQ;AAC7B,iBAAA,OAAO,QAAQ,WAAW;AAAA,IACvC;AACA,QAAI,KAAK,SAAS;AAChB,kBAAY,KAAK,OAAO;AAAA,IAC1B;AACA,QAAI,KAAK,QAAQ;AACV,WAAA,OAAO,QAAQ,WAAW;AAAA,IACjC;AAAA,EACF;AACI,MAAA,CAAC,OAAO,CAAC,YAAY;AACnB,QAAA,SAAS,IAAI,GAAG;AACZ,YAAA,IAAI,MAAM,IAAI;AAAA,IACtB;AACO,WAAA;AAAA,EACT;AACI,MAAA,QAAQ,GAAG,GAAG;AAChB,QAAI,QAAQ,CAAC,QAAQ,WAAW,GAAG,IAAI,IAAI;AAAA,EAAA,OACtC;AACL,WAAO,YAAY,GAAG;AAAA,EACxB;AACI,MAAA,SAAS,IAAI,GAAG;AACZ,UAAA,IAAI,MAAM,UAAU;AAAA,EAC5B;AACO,SAAA;AACT;AACA,SAAS,eAAe,SAAS,KAAK;AACpC,MAAI,CAAC,WAAW,CAAC,KAAK,GAAG,GAAG;AACnB,WAAA;AAAA,EACT;AACA,QAAM,IAAI,MAAM,CAAC,EAAE,QAAQ,SAAS,EAAE;AAC/B,SAAA,OAAO,SAAS,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,SAAS,UAAU,GAAG,CAAC,KAAK,OAAO,SAAS,GAAG;AACvH;AAEA,IAAI,2BAA2B;AAE/B,SAAS,4BAA4B,UAAU;AAC7C,QAAM,OAAO;AACc,6BAAA;AACV,cAAY,SAAS,KAAK,aAAa;AACjD,SAAA;AACT;AAiHA,MAAM,wBAAwB,CAAA;AAC9B,SAAS,MAAM,QAAQ,IAAI,SAAS;AACe,MAAA,CAAC,WAAW,EAAE,GAAG;AAChE;AAAA,MACE;AAAA,IAAA;AAAA,EAEJ;AACO,SAAA,QAAQ,QAAQ,IAAI,OAAO;AACpC;AACA,SAAS,QAAQ,QAAQ,IAAI;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAAC;AAAA,EACA;AAAA,EACA;AACF,IAAI,WAAW;AACb,MAAI,MAAMA,OAAM;AACd,UAAM,MAAM;AACZ,SAAK,IAAI,SAAS;AAChB,UAAI,GAAG,IAAI;AACH;IAAA;AAAA,EAEZ;AACA,MAAiD,SAAS,UAAU,OAAO,SAAS,UAAU;AAC5F;AAAA,MACE;AAAA,IAAA;AAAA,EAEJ;AACA,MAAiD,CAAC,IAAI;AACpD,QAAI,cAAc,QAAQ;AACxB;AAAA,QACE;AAAA,MAAA;AAAA,IAEJ;AACA,QAAI,SAAS,QAAQ;AACnB;AAAA,QACE;AAAA,MAAA;AAAA,IAEJ;AACA,QAAIA,UAAS,QAAQ;AACnB;AAAA,QACE;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACM,QAAA,oBAAoB,CAACC,OAAM;AAC/B;AAAA,MACE;AAAA,MACAA;AAAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEF,QAAM,WAAW;AACjB,QAAM,iBAAiB,CAAC,YAAY,SAAS,OAAO;AAAA;AAAA,IAElD,SAAS,SAAS,SAAS,QAAQ,IAAI,MAAM;AAAA;AAE3C,MAAA;AACJ,MAAI,eAAe;AACnB,MAAI,gBAAgB;AAChB,MAAA,MAAM,MAAM,GAAG;AACjB,aAAS,MAAM,OAAO;AACtB,mBAAe,UAAU,MAAM;AAAA,EAAA,WACtB,WAAW,MAAM,GAAG;AACpB,aAAA,MAAM,eAAe,MAAM;AACrB,mBAAA;AAAA,EAAA,WACN,QAAQ,MAAM,GAAG;AACV,oBAAA;AACD,mBAAA,OAAO,KAAK,CAACA,OAAM,WAAWA,EAAC,KAAK,UAAUA,EAAC,CAAC;AAC/D,aAAS,MAAM,OAAO,IAAI,CAACA,OAAM;AAC3B,UAAA,MAAMA,EAAC,GAAG;AACZ,eAAOA,GAAE;AAAA,MAAA,WACA,WAAWA,EAAC,GAAG;AACxB,eAAO,eAAeA,EAAC;AAAA,MAAA,WACd,WAAWA,EAAC,GAAG;AACjB,eAAA,sBAAsBA,IAAG,UAAU,CAAC;AAAA,MAAA,OACtC;AACwC,0BAAkBA,EAAC;AAAA,MAClE;AAAA,IAAA,CACD;AAAA,EAAA,WACQ,WAAW,MAAM,GAAG;AAC7B,QAAI,IAAI;AACN,eAAS,MAAM,sBAAsB,QAAQ,UAAU,CAAC;AAAA,IAAA,OACnD;AACL,eAAS,MAAM;AACb,YAAI,SAAS;AACH;QACV;AACO,eAAA;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA,CAAC,SAAS;AAAA,QAAA;AAAA,MACZ;AAAA,IAEJ;AAAA,EAAA,OACK;AACI,aAAA;AACoC,sBAAkB,MAAM;AAAA,EACvE;AACA,MAAI,MAAM,MAAM;AACd,UAAM,aAAa;AACV,aAAA,MAAM,SAAS,WAAA,CAAY;AAAA,EACtC;AACI,MAAA;AACA,MAAA,YAAY,CAAC,OAAO;AACZb,cAAAA,QAAO,SAAS,MAAM;AACR,4BAAA,IAAI,UAAU,CAAC;AACrC,gBAAUA,QAAO,SAAS;AAAA,IAAA;AAAA,EAC5B;AAEE,MAAA,WAAW,gBAAgB,IAAI,MAAM,OAAO,MAAM,EAAE,KAAK,qBAAqB,IAAI;AACtF,QAAM,MAAM,MAAM;AAChB,QAAI,CAACA,QAAO,UAAU,CAACA,QAAO,OAAO;AACnC;AAAA,IACF;AACA,QAAI,IAAI;AACA,YAAA,WAAWA,QAAO;AACxB,UAAI,QAAQ,iBAAiB,gBAAgB,SAAS,KAAK,CAAC,GAAG,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,WAAW,UAAU,QAAQ,MAAM,OAAO;AAC3I,YAAI,SAAS;AACH;QACV;AAC2B,mCAAA,IAAI,UAAU,GAAG;AAAA,UAC1C;AAAA;AAAA,UAEA,aAAa,wBAAwB,SAAS,iBAAiB,SAAS,CAAC,MAAM,wBAAwB,CAAA,IAAK;AAAA,UAC5G;AAAA,QAAA,CACD;AACU,mBAAA;AAAA,MACb;AAAA,IAAA,OACK;AACLA,cAAO,IAAI;AAAA,IACb;AAAA,EAAA;AAEE,MAAA,eAAe,CAAC,CAAC;AACjB,MAAA;AACJ,MAAI,UAAU,QAAQ;AACR,gBAAA;AAAA,EAAA,WACH,UAAU,QAAQ;AAC3B,gBAAY,MAAM,wBAAwB,KAAK,YAAY,SAAS,QAAQ;AAAA,EAAA,OACvE;AACL,QAAI,MAAM;AACN,QAAA;AACF,UAAI,KAAK,SAAS;AACR,gBAAA,MAAM,SAAS,GAAG;AAAA,EAChC;AACA,QAAMA,UAAS,IAAI,eAAe,QAAQ,MAAM,SAAS;AACzD,QAAM,QAAQ;AACd,QAAM,UAAU,MAAM;AACpBA,YAAO,KAAK;AACZ,QAAI,OAAO;AACF,aAAA,MAAM,SAASA,OAAM;AAAA,IAC9B;AAAA,EAAA;AAE6C;AAC7CA,YAAO,UAAU;AACjBA,YAAO,YAAY;AAAA,EACrB;AACA,MAAI,IAAI;AACN,QAAI,WAAW;AACT;IAAA,OACC;AACL,iBAAWA,QAAO;IACpB;AAAA,EAAA,WACS,UAAU,QAAQ;AAC3B;AAAA,MACEA,QAAO,IAAI,KAAKA,OAAM;AAAA,MACtB,YAAY,SAAS;AAAA,IAAA;AAAA,EACvB,OACK;AACLA,YAAO,IAAI;AAAA,EACb;AACO,SAAA;AACT;AACA,SAAS,cAAc,QAAQ,OAAO,SAAS;AAC7C,QAAM,aAAa,KAAK;AACxB,QAAM,SAAS,SAAS,MAAM,IAAI,OAAO,SAAS,GAAG,IAAI,iBAAiB,YAAY,MAAM,IAAI,MAAM,WAAW,MAAM,IAAI,OAAO,KAAK,YAAY,UAAU;AACzJ,MAAA;AACA,MAAA,WAAW,KAAK,GAAG;AAChB,SAAA;AAAA,EAAA,OACA;AACL,SAAK,MAAM;AACD,cAAA;AAAA,EACZ;AACM,QAAA,QAAQ,mBAAmB,IAAI;AACrC,QAAM,MAAM,QAAQ,QAAQ,GAAG,KAAK,UAAU,GAAG,OAAO;AAClD;AACC,SAAA;AACT;AACA,SAAS,iBAAiB,KAAK,MAAM;AAC7B,QAAA,WAAW,KAAK,MAAM,GAAG;AAC/B,SAAO,MAAM;AACX,QAAI,MAAM;AACV,aAAS,IAAI,GAAG,IAAI,SAAS,UAAU,KAAK,KAAK;AACzC,YAAA,IAAI,SAAS,CAAC,CAAC;AAAA,IACvB;AACO,WAAA;AAAA,EAAA;AAEX;AACA,SAAS,SAAS,OAAO,OAAO,eAAe,GAAG,MAAM;AACtD,MAAI,CAAC,SAAS,KAAK,KAAK,MAAM,UAAU,GAAG;AAClC,WAAA;AAAA,EACT;AACI,MAAA,SAAS,QAAQ,GAAG;AACtB,QAAI,gBAAgB,OAAO;AAClB,aAAA;AAAA,IACT;AACA;AAAA,EACF;AACO,SAAA,4BAA4B;AAC/B,MAAA,KAAK,IAAI,KAAK,GAAG;AACZ,WAAA;AAAA,EACT;AACA,OAAK,IAAI,KAAK;AACV,MAAA,MAAM,KAAK,GAAG;AAChB,aAAS,MAAM,OAAO,OAAO,cAAc,IAAI;AAAA,EAAA,WACtC,QAAQ,KAAK,GAAG;AACzB,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,eAAS,MAAM,CAAC,GAAG,OAAO,cAAc,IAAI;AAAA,IAC9C;AAAA,aACS,MAAM,KAAK,KAAK,MAAM,KAAK,GAAG;AACjC,UAAA,QAAQ,CAAC,MAAM;AACV,eAAA,GAAG,OAAO,cAAc,IAAI;AAAA,IAAA,CACtC;AAAA,EAAA,WACQ,cAAc,KAAK,GAAG;AAC/B,eAAW,OAAO,OAAO;AACvB,eAAS,MAAM,GAAG,GAAG,OAAO,cAAc,IAAI;AAAA,IAChD;AAAA,EACF;AACO,SAAA;AACT;AAEA,SAAS,sBAAsB,MAAM;AAC/B,MAAA,mBAAmB,IAAI,GAAG;AAC5B,WAAO,+DAA+D,IAAI;AAAA,EAC5E;AACF;AAiCA,SAAS,mBAAmB;AACnB,SAAA;AAAA,IACL,KAAK;AAAA,IACL,QAAQ;AAAA,MACN,aAAa;AAAA,MACb,aAAa;AAAA,MACb,kBAAkB,CAAC;AAAA,MACnB,uBAAuB,CAAC;AAAA,MACxB,cAAc;AAAA,MACd,aAAa;AAAA,MACb,iBAAiB,CAAC;AAAA,IACpB;AAAA,IACA,QAAQ,CAAC;AAAA,IACT,YAAY,CAAC;AAAA,IACb,YAAY,CAAC;AAAA,IACb,UAAiC,uBAAA,OAAO,IAAI;AAAA,IAC5C,kCAAkC,QAAQ;AAAA,IAC1C,gCAAgC,QAAQ;AAAA,IACxC,gCAAgC,QAAQ;AAAA,EAAA;AAE5C;AACA,IAAI,QAAQ;AACZ,SAAS,aAAa,QAAQ,SAAS;AACrC,SAAO,SAASc,WAAU,eAAe,YAAY,MAAM;AACrD,QAAA,CAAC,WAAW,aAAa,GAAG;AACd,sBAAA,OAAO,IAAI,aAAa;AAAA,IAC1C;AACA,QAAI,aAAa,QAAQ,CAAC,SAAS,SAAS,GAAG;AACA,aAAO,qDAAqD;AAC7F,kBAAA;AAAA,IACd;AACA,UAAM,UAAU;AACV,UAAA,uCAAuC;AACvC,UAAA,MAAM,QAAQ,MAAM;AAAA,MACxB,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,WAAW;AAAA,MACX;AAAA,MACA,IAAI,SAAS;AACX,eAAO,QAAQ;AAAA,MACjB;AAAA,MACA,IAAI,OAAO,GAAG;AACmC;AAC7C;AAAA,YACE;AAAA,UAAA;AAAA,QAEJ;AAAA,MACF;AAAA,MACA,IAAIC,YAAW,SAAS;AAClB,YAAA,iBAAiB,IAAIA,OAAM,GAAG;AACa,iBAAO,gDAAgD;AAAA,QAC3FA,WAAAA,WAAU,WAAWA,QAAO,OAAO,GAAG;AAC/C,2BAAiB,IAAIA,OAAM;AAC3BA,kBAAO,QAAQ,KAAK,GAAG,OAAO;AAAA,QAAA,WACrB,WAAWA,OAAM,GAAG;AAC7B,2BAAiB,IAAIA,OAAM;AAC3BA,kBAAO,KAAK,GAAG,OAAO;AAAA,QAAA,OAC8B;AACpD;AAAA,YACE;AAAA,UAAA;AAAA,QAEJ;AACO,eAAA;AAAA,MACT;AAAA,MACA,MAAM,OAAO;AACc;AACvB,cAAI,CAAC,QAAQ,OAAO,SAAS,KAAK,GAAG;AAC3B,oBAAA,OAAO,KAAK,KAAK;AAAA,UAAA,OAC2B;AACpD;AAAA,cACE,kDAAkD,MAAM,OAAO,KAAK,MAAM,IAAI,KAAK;AAAA,YAAA;AAAA,UAEvF;AAAA,QAGF;AACO,eAAA;AAAA,MACT;AAAA,MACA,UAAU,MAAM,WAAW;AACsB;AACvB,gCAAA,MAAM,QAAQ,MAAM;AAAA,QAC5C;AACA,YAAI,CAAC,WAAW;AACP,iBAAA,QAAQ,WAAW,IAAI;AAAA,QAChC;AACiD,YAAA,QAAQ,WAAW,IAAI,GAAG;AAClE,iBAAA,cAAc,IAAI,8CAA8C;AAAA,QACzE;AACQ,gBAAA,WAAW,IAAI,IAAI;AACpB,eAAA;AAAA,MACT;AAAA,MACA,UAAU,MAAM,WAAW;AACsB;AAC7C,gCAAsB,IAAI;AAAA,QAC5B;AACA,YAAI,CAAC,WAAW;AACP,iBAAA,QAAQ,WAAW,IAAI;AAAA,QAChC;AACiD,YAAA,QAAQ,WAAW,IAAI,GAAG;AAClE,iBAAA,cAAc,IAAI,8CAA8C;AAAA,QACzE;AACQ,gBAAA,WAAW,IAAI,IAAI;AACpB,eAAA;AAAA,MACT;AAAA;AAAA,MAEA,QAAQ;AAAA,MACR;AAAA;AAAA,MAEA,UAAU;AAAA,MACV;AAAA,MACA,QAAQ,KAAK,OAAO;AAC+B,YAAA,OAAO,QAAQ,UAAU;AACxE;AAAA,YACE,2CAA2C,OAAO,GAAG,CAAC;AAAA,UAAA;AAAA,QAE1D;AACQ,gBAAA,SAAS,GAAG,IAAI;AACjB,eAAA;AAAA,MACT;AAAA,MACA,eAAe,IAAI;AACjB,cAAM,UAAU;AACH,qBAAA;AACT,YAAA;AACF,iBAAO,GAAG;AAAA,QAAA,UACV;AACa,uBAAA;AAAA,QACf;AAAA,MACF;AAAA,IAAA;AAEK,WAAA;AAAA,EAAA;AAEX;AACA,IAAI,aAAa;AAEjB,SAAS,QAAQ,KAAK,OAAO;AAC3B,MAAI,CAAC,iBAAiB;AAC2B;AAC7C,aAAO,4CAA4C;AAAA,IACrD;AAAA,EAAA,OACK;AACL,QAAI,WAAW,gBAAgB;AAC/B,UAAM,iBAAiB,gBAAgB,UAAU,gBAAgB,OAAO;AACxE,QAAI,mBAAmB,UAAU;AAC/B,iBAAW,gBAAgB,WAAW,OAAO,OAAO,cAAc;AAAA,IACpE;AACA,aAAS,GAAG,IAAI;AACZ,QAAA,gBAAgB,KAAK,WAAW,OAAO;AACzC,sBAAgB,WAAW,IAAI,QAAQ,KAAK,KAAK;AAAA,IACnD;AAAA,EACF;AACF;AACA,SAAS,OAAO,KAAK,cAAc,wBAAwB,OAAO;AAChE,QAAM,WAAW,mBAAmB;AACpC,MAAI,YAAY,YAAY;AAC1B,UAAM,WAAW,WAAW,SAAS,UAAU,OAAO,SAAS,MAAM,cAAc,SAAS,MAAM,WAAW,WAAW,SAAS,OAAO,WAAW,WAAW,SAAS;AACnK,QAAA,YAAY,OAAO,UAAU;AAC/B,aAAO,SAAS,GAAG;AAAA,IAAA,WACV,UAAU,SAAS,GAAG;AACxB,aAAA,yBAAyB,WAAW,YAAY,IAAI,aAAa,KAAK,YAAY,SAAS,KAAK,IAAI;AAAA,IAAA,OACvD;AACpD,aAAO,cAAc,OAAO,GAAG,CAAC,cAAc;AAAA,IAChD;AAAA,EAAA,OACoD;AACpD,WAAO,oEAAoE;AAAA,EAC7E;AACF;AAeA,MAAM,cAAc,CAAC,UAAU,MAAM,KAAK;AAC1C,SAAS,YAAY,MAAM,QAAQ;AACX,wBAAA,MAAM,KAAK,MAAM;AACzC;AACA,SAAS,cAAc,MAAM,QAAQ;AACb,wBAAA,MAAM,MAAM,MAAM;AAC1C;AACA,SAAS,sBAAsB,MAAM,MAAM,SAAS,iBAAiB;AACnE,QAAM,cAAc,KAAK,UAAU,KAAK,QAAQ,MAAM;AACpD,QAAI,UAAU;AACd,WAAO,SAAS;AACd,UAAI,QAAQ,eAAe;AACzB;AAAA,MACF;AACA,gBAAU,QAAQ;AAAA,IACpB;AACA,WAAO,KAAK;AAAA,EAAA;AAEH,aAAA,MAAM,aAAa,MAAM;AACpC,MAAI,QAAQ;AACV,QAAI,UAAU,OAAO;AACd,WAAA,WAAW,QAAQ,QAAQ;AAChC,UAAI,YAAY,QAAQ,OAAO,KAAK,GAAG;AACf,8BAAA,aAAa,MAAM,QAAQ,OAAO;AAAA,MAC1D;AACA,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF;AACF;AACA,SAAS,sBAAsB,MAAM,MAAM,QAAQ,eAAe;AAChE,QAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAAA;AAGF,cAAY,MAAM;AACT,WAAA,cAAc,IAAI,GAAG,QAAQ;AAAA,KACnC,MAAM;AACX;AAEA,SAAS,WAAW,MAAM,MAAM,SAAS,iBAAiB,UAAU,OAAO;AACzE,MAAI,QAAQ;AACN,QAAA,WAAW,IAAI,GAAG;AACpB,eAAS,OAAO;AAAA,IAClB;AACA,UAAM,QAAQ,OAAO,IAAI,MAAM,OAAO,IAAI,IAAI,CAAA;AAC9C,UAAM,cAAc,KAAK,UAAU,KAAK,QAAQ,IAAI,SAAS;AAC3D,UAAI,OAAO,aAAa;AACtB;AAAA,MACF;AACc;AACR,YAAA,QAAQ,mBAAmB,MAAM;AACvC,YAAM,MAAM,2BAA2B,MAAM,QAAQ,MAAM,IAAI;AACzD;AACQ;AACP,aAAA;AAAA,IAAA;AAET,QAAI,SAAS;AACX,YAAM,QAAQ,WAAW;AAAA,IAAA,OACpB;AACL,YAAM,KAAK,WAAW;AAAA,IACxB;AACO,WAAA;AAAA,EAAA,OAC6C;AACpD,UAAM,UAAU;AAAA,OACb,iBAAiB,IAAI,KAAK,KAAK,QAAQ,OAAO,EAAE,GAAG,QAAQ,UAAU,EAAE;AAAA,IAAA;AAE1E;AAAA,MACE,GAAG,OAAO;AAAA,IAAA;AAAA,EAEd;AACF;AACA,MAAMC,eAAa,CAAC,cAAc,CAAC,MAAM,SAAS;AAAA;AAAA,GAE/C,CAAC,yBAAyB,cAAc,SAAS,WAAW,WAAW,IAAI,SAAS,KAAK,GAAG,IAAI,GAAG,MAAM;AAAA;AAE5G,MAAM,gBAAgBA,aAAW,IAAI;AAC/B,MAAA,YAAYA,aAAW,GAAG;AAChC,MAAM,iBAAiBA,aAAW,IAAI;AACtC,MAAM,YAAYA,aAAW,GAAG;AAChC,MAAM,kBAAkBA,aAAW,KAAK;AACxC,MAAM,cAAcA,aAAW,IAAI;AACnC,MAAM,mBAAmBA,aAAW,IAAI;AACxC,MAAM,oBAAoBA;AAAAA,EACxB;AACF;AACA,MAAM,kBAAkBA;AAAAA,EACtB;AACF;AACA,SAAS,gBAAgB,MAAM,SAAS,iBAAiB;AAC5C,aAAA,MAAM,MAAM,MAAM;AAC/B;AAcA,MAAM,oBAAoB,CAAC,MAAM;AAC/B,MAAI,CAAC;AACI,WAAA;AACT,MAAI,oBAAoB,CAAC;AAChB,WAAA,eAAe,CAAC,KAAK,EAAE;AACzB,SAAA,kBAAkB,EAAE,MAAM;AACnC;AACA,MAAM;AAAA;AAAA;AAAA,EAGmC,uBAAA,uBAAO,OAAO,IAAI,GAAG;AAAA,IAC1D,GAAG,CAAC,MAAM;AAAA;AAAA;AAAA,IAGV,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ;IAClC,OAAO,CAAC,MAAM,EAAE;AAAA,IAChB,QAAQ,CAAC,MAAkD,gBAAgB,EAAE,KAAK;AAAA,IAClF,QAAQ,CAAC,MAAkD,gBAAgB,EAAE,KAAK;AAAA,IAClF,QAAQ,CAAC,MAAkD,gBAAgB,EAAE,KAAK;AAAA,IAClF,OAAO,CAAC,MAAkD,gBAAgB,EAAE,IAAI;AAAA,IAChF,SAAS,CAAC,MAAM,kBAAkB,EAAE,MAAM;AAAA,IAC1C,OAAO,CAAC,MAAM,kBAAkB,EAAE,IAAI;AAAA,IACtC,OAAO,CAAC,MAAM,EAAE;AAAA,IAChB,UAAU,CAAC,MAA4B,qBAAqB,CAAC;AAAA,IAC7D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,MAAM;AACvC,QAAE,OAAO,QAAQ;AACjB,eAAS,EAAE,MAAM;AAAA,IAAA;AAAA;AAAA,IAGnB,QAAQ,CAAC,MAA4B,cAAc,KAAK,CAAC;AAAA,EAAI,CAC9D;AAAA;AAEH,MAAM,mBAAmB,CAAC,QAAQ,QAAQ,OAAO,QAAQ;AACzD,MAAM,kBAAkB,CAAC,OAAO,QAAQ,UAAU,aAAa,CAAC,MAAM,mBAAmB,OAAO,OAAO,GAAG;AAC1G,MAAM,8BAA8B;AAAA,EAClC,IAAI,EAAE,GAAG,SAAA,GAAY,KAAK;AAClB,UAAA,EAAE,KAAK,YAAY,MAAM,OAAO,aAAa,MAAM,WAAe,IAAA;AACxE,QAAiD,QAAQ,WAAW;AAC3D,aAAA;AAAA,IACT;AACI,QAAA;AACA,QAAA,IAAI,CAAC,MAAM,KAAK;AACZC,YAAAA,KAAI,YAAY,GAAG;AACzB,UAAIA,OAAM,QAAQ;AAChB,gBAAQA,IAAG;AAAA,UACT,KAAK;AACH,mBAAO,WAAW,GAAG;AAAA,UACvB,KAAK;AACH,mBAAO,KAAK,GAAG;AAAA,UACjB,KAAK;AACH,mBAAO,IAAI,GAAG;AAAA,UAChB,KAAK;AACH,mBAAO,MAAM,GAAG;AAAA,QACpB;AAAA,MACS,WAAA,gBAAgB,YAAY,GAAG,GAAG;AAC3C,oBAAY,GAAG,IAAI;AACnB,eAAO,WAAW,GAAG;AAAA,MAAA,WACZ,SAAS,aAAa,OAAO,MAAM,GAAG,GAAG;AAClD,oBAAY,GAAG,IAAI;AACnB,eAAO,KAAK,GAAG;AAAA,MAAA;AAAA;AAAA;AAAA,SAId,kBAAkB,SAAS,aAAa,CAAC,MAAM,OAAO,iBAAiB,GAAG;AAAA,QAC3E;AACA,oBAAY,GAAG,IAAI;AACnB,eAAO,MAAM,GAAG;AAAA,MAAA,WACP,QAAQ,aAAa,OAAO,KAAK,GAAG,GAAG;AAChD,oBAAY,GAAG,IAAI;AACnB,eAAO,IAAI,GAAG;AAAA,iBACmB,mBAAmB;AACpD,oBAAY,GAAG,IAAI;AAAA,MACrB;AAAA,IACF;AACM,UAAA,eAAe,oBAAoB,GAAG;AAC5C,QAAI,WAAW;AACf,QAAI,cAAc;AAChB,UAAI,QAAQ,UAAU;AACd,cAAA,UAAU,OAAO,GAAG;AAAA,MACqC,WACT,QAAQ,UAAU;AAClE,cAAA,UAAU,OAAO,GAAG;AAAA,MAC5B;AACA,aAAO,aAAa,QAAQ;AAAA,IAAA;AAAA;AAAA,OAG3B,YAAY,KAAK,kBAAkB,YAAY,UAAU,GAAG;AAAA,MAC7D;AACO,aAAA;AAAA,IAAA,WACE,QAAQ,aAAa,OAAO,KAAK,GAAG,GAAG;AAChD,kBAAY,GAAG,IAAI;AACnB,aAAO,IAAI,GAAG;AAAA,IAAA;AAAA;AAAA,MAGd,mBAAmB,WAAW,OAAO,kBAAkB,OAAO,kBAAkB,GAAG;AAAA,MACnF;AACA;AACE,eAAO,iBAAiB,GAAG;AAAA,MAC7B;AAAA,IACsD,WAAA,6BAA6B,CAAC,SAAS,GAAG;AAAA;AAAA,IAElG,IAAI,QAAQ,KAAK,MAAM,IAAI;AACrB,UAAA,SAAS,aAAa,iBAAiB,IAAI,CAAC,CAAC,KAAK,OAAO,MAAM,GAAG,GAAG;AACvE;AAAA,UACE,YAAY,KAAK;AAAA,YACf;AAAA,UACD,CAAA;AAAA,QAAA;AAAA,MACH,WACS,aAAa,0BAA0B;AAChD;AAAA,UACE,YAAY,KAAK,UAAU,GAAG,CAAC;AAAA,QAAA;AAAA,MAEnC;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI,EAAE,GAAG,SAAS,GAAG,KAAK,OAAO;AAC/B,UAAM,EAAE,MAAM,YAAY,IAAA,IAAQ;AAC9B,QAAA,gBAAgB,YAAY,GAAG,GAAG;AACpC,iBAAW,GAAG,IAAI;AACX,aAAA;AAAA,IAAA,WAC+C,WAAW,mBAAmB,OAAO,YAAY,GAAG,GAAG;AACtG,aAAA,yCAAyC,GAAG,qBAAqB;AACjE,aAAA;AAAA,IAAA,WACE,SAAS,aAAa,OAAO,MAAM,GAAG,GAAG;AAClD,WAAK,GAAG,IAAI;AACL,aAAA;AAAA,IACE,WAAA,OAAO,SAAS,OAAO,GAAG,GAAG;AACO,aAAO,8BAA8B,GAAG,wBAAwB;AACtG,aAAA;AAAA,IACT;AACI,QAAA,IAAI,CAAC,MAAM,OAAO,IAAI,MAAM,CAAC,KAAK,UAAU;AACD;AAAA,QAC3C,yCAAyC,GAAG;AAAA,MAAA;AAEvC,aAAA;AAAA,IAAA,OACF;AACL,UAAiD,OAAO,SAAS,WAAW,OAAO,kBAAkB;AAC5F,eAAA,eAAe,KAAK,KAAK;AAAA,UAC9B,YAAY;AAAA,UACZ,cAAc;AAAA,UACd;AAAA,QAAA,CACD;AAAA,MAAA,OACI;AACL,YAAI,GAAG,IAAI;AAAA,MACb;AAAA,IACF;AACO,WAAA;AAAA,EACT;AAAA,EACA,IAAI;AAAA,IACF,GAAG,EAAE,MAAM,YAAY,aAAa,KAAK,YAAY,aAAa;AAAA,KACjE,KAAK;AACF,QAAA;AACJ,WAAO,CAAC,CAAC,YAAY,GAAG,KAAK,SAAS,aAAa,OAAO,MAAM,GAAG,KAAK,gBAAgB,YAAY,GAAG,MAAM,kBAAkB,aAAa,CAAC,MAAM,OAAO,iBAAiB,GAAG,KAAK,OAAO,KAAK,GAAG,KAAK,OAAO,qBAAqB,GAAG,KAAK,OAAO,WAAW,OAAO,kBAAkB,GAAG;AAAA,EAC3R;AAAA,EACA,eAAe,QAAQ,KAAK,YAAY;AAClC,QAAA,WAAW,OAAO,MAAM;AACnB,aAAA,EAAE,YAAY,GAAG,IAAI;AAAA,IACnB,WAAA,OAAO,YAAY,OAAO,GAAG;AACtC,WAAK,IAAI,QAAQ,KAAK,WAAW,OAAO,IAAI;AAAA,IAC9C;AACA,WAAO,QAAQ,eAAe,QAAQ,KAAK,UAAU;AAAA,EACvD;AACF;AACuD;AACzB,8BAAA,UAAU,CAAC,WAAW;AAChD;AAAA,MACE;AAAA,IAAA;AAEK,WAAA,QAAQ,QAAQ,MAAM;AAAA,EAAA;AAEjC;AACA,SAAS,uBAAuB,UAAU;AACxC,QAAM,SAAS,CAAA;AACR,SAAA,eAAe,QAAQ,KAAK;AAAA,IACjC,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,KAAK,MAAM;AAAA,EAAA,CACZ;AACD,SAAO,KAAK,mBAAmB,EAAE,QAAQ,CAAC,QAAQ;AACzC,WAAA,eAAe,QAAQ,KAAK;AAAA,MACjC,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,KAAK,MAAM,oBAAoB,GAAG,EAAE,QAAQ;AAAA;AAAA;AAAA,MAG5C,KAAK;AAAA,IAAA,CACN;AAAA,EAAA,CACF;AACM,SAAA;AACT;AACA,SAAS,2BAA2B,UAAU;AACtC,QAAA;AAAA,IACJ;AAAA,IACA,cAAc,CAAC,YAAY;AAAA,EACzB,IAAA;AACJ,MAAI,cAAc;AAChB,WAAO,KAAK,YAAY,EAAE,QAAQ,CAAC,QAAQ;AAClC,aAAA,eAAe,KAAK,KAAK;AAAA,QAC9B,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,KAAK,MAAM,SAAS,MAAM,GAAG;AAAA,QAC7B,KAAK;AAAA,MAAA,CACN;AAAA,IAAA,CACF;AAAA,EACH;AACF;AACA,SAAS,gCAAgC,UAAU;AAC3C,QAAA,EAAE,KAAK,WAAe,IAAA;AAC5B,SAAO,KAAK,MAAM,UAAU,CAAC,EAAE,QAAQ,CAAC,QAAQ;AAC1C,QAAA,CAAC,WAAW,iBAAiB;AAC/B,UAAI,iBAAiB,IAAI,CAAC,CAAC,GAAG;AAC5B;AAAA,UACE,2BAA2B,KAAK;AAAA,YAC9B;AAAA,UACD,CAAA;AAAA,QAAA;AAEH;AAAA,MACF;AACO,aAAA,eAAe,KAAK,KAAK;AAAA,QAC9B,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,KAAK,MAAM,WAAW,GAAG;AAAA,QACzB,KAAK;AAAA,MAAA,CACN;AAAA,IACH;AAAA,EAAA,CACD;AACH;AAyCA,SAAS,sBAAsB,OAAO;AAC7B,SAAA,QAAQ,KAAK,IAAI,MAAM;AAAA,IAC5B,CAAC,YAAYT,QAAO,WAAWA,EAAC,IAAI,MAAM;AAAA,IAC1C,CAAC;AAAA,EACC,IAAA;AACN;AA6DA,SAAS,yBAAyB;AAC1B,QAAA,QAA+B,uBAAA,OAAO,IAAI;AACzC,SAAA,CAAC,MAAM,QAAQ;AAChB,QAAA,MAAM,GAAG,GAAG;AACP,aAAA,GAAG,IAAI,cAAc,GAAG,2BAA2B,MAAM,GAAG,CAAC,GAAG;AAAA,IAAA,OAClE;AACL,YAAM,GAAG,IAAI;AAAA,IACf;AAAA,EAAA;AAEJ;AACA,IAAI,oBAAoB;AACxB,SAAS,eAAe,UAAU;AAC1B,QAAA,UAAU,qBAAqB,QAAQ;AAC7C,QAAM,aAAa,SAAS;AAC5B,QAAM,MAAM,SAAS;AACD,sBAAA;AACpB,MAAI,QAAQ,cAAc;AACfU,eAAA,QAAQ,cAAc,UAAU,IAAI;AAAA,EAC/C;AACM,QAAA;AAAA;AAAA,IAEJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV;AAAA,IACA,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA;AAAA,IAER;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EACE,IAAA;AACE,QAAA,2BAAuE,uBAAA;AAC9B;AACvC,UAAA,CAAC,YAAY,IAAI,SAAS;AAChC,QAAI,cAAc;AAChB,iBAAW,OAAO,cAAc;AAC9B,iCAAyB,SAAqB,GAAG;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AACA,WAAS,iBAAiB;AACxB,QAAI,eAAe;AACC,wBAAA,eAAe,KAAK,wBAAwB;AAAA,IAChE;AAAA,EACF;AAC+B;AACd;EACjB;AACA,MAAI,SAAS;AACX,eAAW,OAAO,SAAS;AACnB,YAAA,gBAAgB,QAAQ,GAAG;AAC7B,UAAA,WAAW,aAAa,GAAG;AACkB;AACtC,iBAAA,eAAe,KAAK,KAAK;AAAA,YAC9B,OAAO,cAAc,KAAK,UAAU;AAAA,YACpC,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,UAAU;AAAA,UAAA,CACX;AAAA,QAGH;AAC+C;AAC7C,mCAAyB,WAAyB,GAAG;AAAA,QACvD;AAAA,MAAA,OACoD;AACpD;AAAA,UACE,WAAW,GAAG,eAAe,OAAO,aAAa;AAAA,QAAA;AAAA,MAErD;AAAA,IACF;AAAA,EACF;AACA,MAAI,aAAa;AACkC,QAAA,CAAC,WAAW,WAAW,GAAG;AACzE;AAAA,QACE;AAAA,MAAA;AAAA,IAEJ;AACA,UAAM,OAAO,YAAY,KAAK,YAAY,UAAU;AACH,QAAA,UAAU,IAAI,GAAG;AAChE;AAAA,QACE;AAAA,MAAA;AAAA,IAEJ;AACI,QAAA,CAAC,SAAS,IAAI,GAAG;AAC0B,aAAO,iCAAiC;AAAA,IAAA,OAChF;AACI,eAAA,OAAO,SAAS,IAAI;AACkB;AAC7C,mBAAW,OAAO,MAAM;AACtB,mCAAyB,QAAmB,GAAG;AAC/C,cAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG;AACtB,mBAAA,eAAe,KAAK,KAAK;AAAA,cAC9B,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,KAAK,MAAM,KAAK,GAAG;AAAA,cACnB,KAAK;AAAA,YAAA,CACN;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACoB,sBAAA;AACpB,MAAI,iBAAiB;AACnB,eAAW,OAAO,iBAAiB;AAC3B,YAAA,MAAM,gBAAgB,GAAG;AAC/B,YAAMC,OAAM,WAAW,GAAG,IAAI,IAAI,KAAK,YAAY,UAAU,IAAI,WAAW,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,YAAY,UAAU,IAAI;AAC9H,UAAiDA,SAAQ,MAAM;AACtD,eAAA,sBAAsB,GAAG,kBAAkB;AAAA,MACpD;AACA,YAAMxB,OAAM,CAAC,WAAW,GAAG,KAAK,WAAW,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,UAAU,IAAgD,MAAM;AACjI;AAAA,UACE,8CAA8C,GAAG;AAAA,QAAA;AAAA,MACnD;AAEF,YAAMyB,KAAI,SAAS;AAAA,QACjB,KAAAD;AAAAA,QACA,KAAAxB;AAAAA,MAAA,CACD;AACM,aAAA,eAAe,KAAK,KAAK;AAAA,QAC9B,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,KAAK,MAAMyB,GAAE;AAAA,QACb,KAAK,CAAC,MAAMA,GAAE,QAAQ;AAAA,MAAA,CACvB;AAC8C;AAC7C,iCAAyB,YAA2B,GAAG;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AACA,MAAI,cAAc;AAChB,eAAW,OAAO,cAAc;AAC9B,oBAAc,aAAa,GAAG,GAAG,KAAK,YAAY,GAAG;AAAA,IACvD;AAAA,EACF;AACA,WAAS,eAAe;AACtB,QAAI,gBAAgB;AAClB,YAAM,WAAW,WAAW,cAAc,IAAI,eAAe,KAAK,UAAU,IAAI;AAChF,cAAQ,QAAQ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AACjC,gBAAA,KAAK,SAAS,GAAG,CAAC;AAAA,MAAA,CAC3B;AAAA,IACH;AAAA,EACF;AAC+B;AAChB;EACf;AAoBO;AACL,QAAI,SAAS;AACFF,iBAAA,SAAS,UAAU,GAAG;AAAA,IACjC;AAAA,EACF;AACS,WAAA,sBAAsB,UAAU,MAAM;AACzC,QAAA,QAAQ,IAAI,GAAG;AACZ,WAAA,QAAQ,CAAC,UAAU,SAAS,MAAM,KAAK,UAAU,CAAC,CAAC;AAAA,eAC/C,MAAM;AACN,eAAA,KAAK,KAAK,UAAU,CAAC;AAAA,IAChC;AAAA,EACF;AACA,wBAAsB,eAAe,WAAW;AAChD,wBAAsB,WAAW,OAAO;AACxC,wBAAsB,gBAAgB,YAAY;AAClD,wBAAsB,WAAW,OAAO;AACxC,wBAAsB,aAAa,SAAS;AAC5C,wBAAsB,eAAe,WAAW;AAChD,wBAAsB,iBAAiB,aAAa;AACpD,wBAAsB,iBAAiB,aAAa;AACpD,wBAAsB,mBAAmB,eAAe;AACxD,wBAAsB,iBAAiB,aAAa;AACpD,wBAAsB,aAAa,SAAS;AAC5C,wBAAsB,kBAAkB,cAAc;AAClD,MAAA,QAAQ,MAAM,GAAG;AACnB,QAAI,OAAO,QAAQ;AACjB,YAAM,UAAU,SAAS,YAAY,SAAS,UAAU,CAAA;AACjD,aAAA,QAAQ,CAAC,QAAQ;AACf,eAAA,eAAe,SAAS,KAAK;AAAA,UAClC,KAAK,MAAM,WAAW,GAAG;AAAA,UACzB,KAAK,CAAC,QAAQ,WAAW,GAAG,IAAI;AAAA,QAAA,CACjC;AAAA,MAAA,CACF;AAAA,IAAA,WACQ,CAAC,SAAS,SAAS;AAC5B,eAAS,UAAU;IACrB;AAAA,EACF;AACI,MAAA,UAAU,SAAS,WAAW,MAAM;AACtC,aAAS,SAAS;AAAA,EACpB;AACA,MAAI,gBAAgB,MAAM;AACxB,aAAS,eAAe;AAAA,EAC1B;AACI,MAAA;AACF,aAAS,aAAa;AACpB,MAAA;AACF,aAAS,aAAa;AACpB,MAAA,SAAS,IAAI,iBAAiB;AAChC,aAAS,IAAI,gBAAgB,SAAS,UAAU,UAAU;AAAA,EAC5D;AACF;AACA,SAAS,kBAAkB,eAAe,KAAK,2BAA2B,MAAM;AAC1E,MAAA,QAAQ,aAAa,GAAG;AAC1B,oBAAgB,gBAAgB,aAAa;AAAA,EAC/C;AACA,aAAW,OAAO,eAAe;AACzB,UAAA,MAAM,cAAc,GAAG;AACzB,QAAA;AACA,QAAA,SAAS,GAAG,GAAG;AACjB,UAAI,aAAa,KAAK;AACT,mBAAA;AAAA,UACT,IAAI,QAAQ;AAAA,UACZ,IAAI;AAAA,UACJ;AAAA,QAAA;AAAA,MACF,OACK;AACM,mBAAA,OAAO,IAAI,QAAQ,GAAG;AAAA,MACnC;AAAA,IAAA,OACK;AACL,iBAAW,OAAO,GAAG;AAAA,IACvB;AACI,QAAA,MAAM,QAAQ,GAAG;AACZ,aAAA,eAAe,KAAK,KAAK;AAAA,QAC9B,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,KAAK,MAAM,SAAS;AAAA,QACpB,KAAK,CAAC,MAAM,SAAS,QAAQ;AAAA,MAAA,CAC9B;AAAA,IAAA,OACI;AACL,UAAI,GAAG,IAAI;AAAA,IACb;AAC+C;AAC7C,+BAAyB,UAAuB,GAAG;AAAA,IACrD;AAAA,EACF;AACF;AACA,SAASA,WAAS,MAAM,UAAU,MAAM;AACtC;AAAA,IACE,QAAQ,IAAI,IAAI,KAAK,IAAI,CAACG,OAAMA,GAAE,KAAK,SAAS,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,KAAK;AAAA,IAClF;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAAS,cAAc,KAAK,KAAK,YAAY,KAAK;AAC1C,QAAA,SAAS,IAAI,SAAS,GAAG,IAAI,iBAAiB,YAAY,GAAG,IAAI,MAAM,WAAW,GAAG;AACvF,MAAA,SAAS,GAAG,GAAG;AACX,UAAA,UAAU,IAAI,GAAG;AACnB,QAAA,WAAW,OAAO,GAAG;AACvB,YAAM,QAAQ,OAAO;AAAA,IAAA,OAC+B;AAC7C,aAAA,2CAA2C,GAAG,KAAK,OAAO;AAAA,IACnE;AAAA,EAAA,WACS,WAAW,GAAG,GAAG;AAC1B,UAAM,QAAQ,IAAI,KAAK,UAAU,CAAC;AAAA,EAAA,WACzB,SAAS,GAAG,GAAG;AACpB,QAAA,QAAQ,GAAG,GAAG;AACZ,UAAA,QAAQ,CAACf,OAAM,cAAcA,IAAG,KAAK,YAAY,GAAG,CAAC;AAAA,IAAA,OACpD;AACL,YAAM,UAAU,WAAW,IAAI,OAAO,IAAI,IAAI,QAAQ,KAAK,UAAU,IAAI,IAAI,IAAI,OAAO;AACpF,UAAA,WAAW,OAAO,GAAG;AACjB,cAAA,QAAQ,SAAS,GAAG;AAAA,MAAA,OAC0B;AACpD,eAAO,2CAA2C,IAAI,OAAO,KAAK,OAAO;AAAA,MAC3E;AAAA,IACF;AAAA,EAAA,OACoD;AAC7C,WAAA,0BAA0B,GAAG,KAAK,GAAG;AAAA,EAC9C;AACF;AACA,SAAS,qBAAqB,UAAU;AACtC,QAAM,OAAO,SAAS;AACtB,QAAM,EAAE,QAAQ,SAAS,eAAA,IAAmB;AACtC,QAAA;AAAA,IACJ,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,QAAQ,EAAE,sBAAsB;AAAA,EAAA,IAC9B,SAAS;AACP,QAAA,SAAS,MAAM,IAAI,IAAI;AACzB,MAAA;AACJ,MAAI,QAAQ;AACC,eAAA;AAAA,EAAA,WACF,CAAC,aAAa,UAAU,CAAC,UAAU,CAAC,gBAAgB;AAC7D;AACa,iBAAA;AAAA,IACb;AAAA,EAAA,OACK;AACL,eAAW,CAAA;AACX,QAAI,aAAa,QAAQ;AACV,mBAAA;AAAA,QACX,CAACgB,OAAM,aAAa,UAAUA,IAAG,uBAAuB,IAAI;AAAA,MAAA;AAAA,IAEhE;AACa,iBAAA,UAAU,MAAM,qBAAqB;AAAA,EACpD;AACI,MAAA,SAAS,IAAI,GAAG;AACZ,UAAA,IAAI,MAAM,QAAQ;AAAA,EAC1B;AACO,SAAA;AACT;AACA,SAAS,aAAa,IAAI,MAAM,QAAQ,UAAU,OAAO;AACvD,QAAM,EAAE,QAAQ,SAAS,eAAA,IAAmB;AAC5C,MAAI,gBAAgB;AACL,iBAAA,IAAI,gBAAgB,QAAQ,IAAI;AAAA,EAC/C;AACA,MAAI,QAAQ;AACH,WAAA;AAAA,MACL,CAACA,OAAM,aAAa,IAAIA,IAAG,QAAQ,IAAI;AAAA,IAAA;AAAA,EAE3C;AACA,aAAW,OAAO,MAAM;AAClB,QAAA,WAAW,QAAQ,UAAU;AACc;AAAA,QAC3C;AAAA,MAAA;AAAA,IACF,OACK;AACL,YAAM,QAAQ,0BAA0B,GAAG,KAAK,UAAU,OAAO,GAAG;AACpE,SAAG,GAAG,IAAI,QAAQ,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG;AAAA,IACxD;AAAA,EACF;AACO,SAAA;AACT;AACA,MAAM,4BAA4B;AAAA,EAChC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA;AAAA,EAEP,SAAS;AAAA,EACT,UAAU;AAAA;AAAA,EAEV,cAAc;AAAA,EACd,SAAS;AAAA,EACT,aAAa;AAAA,EACb,SAAS;AAAA,EACT,cAAc;AAAA,EACd,SAAS;AAAA,EACT,eAAe;AAAA,EACf,eAAe;AAAA,EACf,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAAA;AAAA,EAEhB,YAAY;AAAA,EACZ,YAAY;AAAA;AAAA,EAEZ,OAAO;AAAA;AAAA,EAEP,SAAS;AAAA,EACT,QAAQ;AACV;AACA,SAAS,YAAY,IAAI,MAAM;AAC7B,MAAI,CAAC,MAAM;AACF,WAAA;AAAA,EACT;AACA,MAAI,CAAC,IAAI;AACA,WAAA;AAAA,EACT;AACA,SAAO,SAAS,eAAe;AACrB,WAAA;AAAA,MACN,WAAW,EAAE,IAAI,GAAG,KAAK,MAAM,IAAI,IAAI;AAAA,MACvC,WAAW,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI;AAAA,IAAA;AAAA,EAC7C;AAEJ;AACA,SAAS,YAAY,IAAI,MAAM;AAC7B,SAAO,mBAAmB,gBAAgB,EAAE,GAAG,gBAAgB,IAAI,CAAC;AACtE;AACA,SAAS,gBAAgB,KAAK;AACxB,MAAA,QAAQ,GAAG,GAAG;AAChB,UAAM,MAAM,CAAA;AACZ,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,UAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;AAAA,IACrB;AACO,WAAA;AAAA,EACT;AACO,SAAA;AACT;AACA,SAAS,eAAe,IAAI,MAAM;AAChC,SAAO,KAAK,CAAC,GAAG,IAAI,IAAI,CAAG,EAAA,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI;AAClD;AACA,SAAS,mBAAmB,IAAI,MAAM;AAC7B,SAAA,KAAK,OAA8B,uBAAA,OAAO,IAAI,GAAG,IAAI,IAAI,IAAI;AACtE;AACA,SAAS,yBAAyB,IAAI,MAAM;AAC1C,MAAI,IAAI;AACN,QAAI,QAAQ,EAAE,KAAK,QAAQ,IAAI,GAAG;AACzB,aAAA,CAAC,GAAmB,oBAAI,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,IACtD;AACO,WAAA;AAAA,MACW,uBAAO,OAAO,IAAI;AAAA,MAClC,sBAAsB,EAAE;AAAA,MACxB,sBAAsB,QAAQ,OAAO,OAAO,CAAA,CAAE;AAAA,IAAA;AAAA,EAChD,OACK;AACE,WAAA;AAAA,EACT;AACF;AACA,SAAS,kBAAkB,IAAI,MAAM;AACnC,MAAI,CAAC;AACI,WAAA;AACT,MAAI,CAAC;AACI,WAAA;AACT,QAAM,SAAS,OAAuB,uBAAO,OAAO,IAAI,GAAG,EAAE;AAC7D,aAAW,OAAO,MAAM;AACf,WAAA,GAAG,IAAI,eAAe,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC;AAAA,EACjD;AACO,SAAA;AACT;AAEA,SAASC,YAAU,UAAU,UAAU,YAAY,QAAQ,OAAO;AAChE,QAAM,QAAQ,CAAA;AACd,QAAM,QAAQ,CAAA;AACL,WAAA,gBAAuC,uBAAA,OAAO,IAAI;AAC9C,eAAA,UAAU,UAAU,OAAO,KAAK;AAC7C,aAAW,OAAO,SAAS,aAAa,CAAC,GAAG;AACtC,QAAA,EAAE,OAAO,QAAQ;AACnB,YAAM,GAAG,IAAI;AAAA,IACf;AAAA,EACF;AAC+C;AAC7C,kBAAc,YAAY,CAAA,GAAI,OAAO,QAAQ;AAAA,EAC/C;AACA,MAAI,YAAY;AACd,aAAS,QAAQ,QAAQ,QAAQ,gBAAgB,KAAK;AAAA,EAAA,OACjD;AACD,QAAA,CAAC,SAAS,KAAK,OAAO;AACxB,eAAS,QAAQ;AAAA,IAAA,OACZ;AACL,eAAS,QAAQ;AAAA,IACnB;AAAA,EACF;AACA,WAAS,QAAQ;AACnB;AACA,SAAS,eAAe,UAAU;AAClC;AACA,SAAS,YAAY,UAAU,UAAU,cAAc,WAAW;AAC1D,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,UAAU;AAAA,EACjB,IAAA;AACE,QAAA,kBAAkB,MAAM,KAAK;AAC7B,QAAA,CAAC,OAAO,IAAI,SAAS;AAC3B,MAAI,kBAAkB;AACtB;AAAA;AAAA;AAAA;AAAA,IAIE,CAA+C,eAAe,MAAO,aAAa,YAAY,MAAM,EAAE,YAAY;AAAA,IAClH;AACA,QAAI,YAAY,GAAG;AACX,YAAA,gBAAgB,SAAS,MAAM;AACrC,eAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AACzC,YAAA,MAAM,cAAc,CAAC;AACzB,YAAI,eAAe,SAAS,cAAc,GAAG,GAAG;AAC9C;AAAA,QACF;AACM,cAAA,QAAQ,SAAS,GAAG;AAC1B,YAAI,SAAS;AACP,cAAA,OAAO,OAAO,GAAG,GAAG;AAClB,gBAAA,UAAU,MAAM,GAAG,GAAG;AACxB,oBAAM,GAAG,IAAI;AACK,gCAAA;AAAA,YACpB;AAAA,UAAA,OACK;AACC,kBAAA,eAAe,SAAS,GAAG;AACjC,kBAAM,YAAY,IAAIC;AAAAA,cACpB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAEJ;AAAA,QAAA,OACK;AACD,cAAA,UAAU,MAAM,GAAG,GAAG;AACxB,kBAAM,GAAG,IAAI;AACK,8BAAA;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EAAA,OACK;AACL,QAAI,aAAa,UAAU,UAAU,OAAO,KAAK,GAAG;AAChC,wBAAA;AAAA,IACpB;AACI,QAAA;AACJ,eAAW,OAAO,iBAAiB;AACjC,UAAI,CAAC;AAAA,MACL,CAAC,OAAO,UAAU,GAAG;AAAA;AAAA,QAEnB,WAAW,UAAU,GAAG,OAAO,OAAO,CAAC,OAAO,UAAU,QAAQ,IAAI;AACpE,YAAI,SAAS;AACP,cAAA;AAAA,WACH,aAAa,GAAG,MAAM;AAAA,UACvB,aAAa,QAAQ,MAAM,SAAS;AAClC,kBAAM,GAAG,IAAIA;AAAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAEJ;AAAA,QAAA,OACK;AACL,iBAAO,MAAM,GAAG;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,QAAI,UAAU,iBAAiB;AAC7B,iBAAW,OAAO,OAAO;AACvB,YAAI,CAAC,YAAY,CAAC,OAAO,UAAU,GAAG,KAAK,MAAM;AAC/C,iBAAO,MAAM,GAAG;AACE,4BAAA;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,iBAAiB;AACX,YAAA,UAAU,OAAO,QAAQ;AAAA,EACnC;AAC+C;AAC7C,kBAAc,YAAY,CAAA,GAAI,OAAO,QAAQ;AAAA,EAC/C;AACF;AACA,SAAS,aAAa,UAAU,UAAU,OAAO,OAAO;AACtD,QAAM,CAAC,SAAS,YAAY,IAAI,SAAS;AACzC,MAAI,kBAAkB;AAClB,MAAA;AACJ,MAAI,UAAU;AACZ,aAAS,OAAO,UAAU;AACpB,UAAA,eAAe,GAAG,GAAG;AACvB;AAAA,MACF;AACM,YAAA,QAAQ,SAAS,GAAG;AACtB,UAAA;AACJ,UAAI,WAAW,OAAO,SAAS,WAAW,SAAS,GAAG,CAAC,GAAG;AACxD,YAAI,CAAC,gBAAgB,CAAC,aAAa,SAAS,QAAQ,GAAG;AACrD,gBAAM,QAAQ,IAAI;AAAA,QAAA,OACb;AACL,WAAC,kBAAkB,gBAAgB,CAAA,IAAK,QAAQ,IAAI;AAAA,QACtD;AAAA,iBACS,CAAC,eAAe,SAAS,cAAc,GAAG,GAAG;AACtD,YAAI,EAAE,OAAO,UAAU,UAAU,MAAM,GAAG,GAAG;AAC3C,gBAAM,GAAG,IAAI;AACK,4BAAA;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,cAAc;AACV,UAAA,kBAAkB,MAAM,KAAK;AACnC,UAAM,aAAa,iBAAiB;AACpC,aAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AACtC,YAAA,MAAM,aAAa,CAAC;AAC1B,YAAM,GAAG,IAAIA;AAAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,GAAG;AAAA,QACd;AAAA,QACA,CAAC,OAAO,YAAY,GAAG;AAAA,MAAA;AAAA,IAE3B;AAAA,EACF;AACO,SAAA;AACT;AACA,SAASA,mBAAiB,SAAS,OAAO,KAAK,OAAO,UAAU,UAAU;AAClE,QAAA,MAAM,QAAQ,GAAG;AACvB,MAAI,OAAO,MAAM;AACT,UAAA,aAAa,OAAO,KAAK,SAAS;AACpC,QAAA,cAAc,UAAU,QAAQ;AAClC,YAAM,eAAe,IAAI;AACrB,UAAA,IAAI,SAAS,YAAY,CAAC,IAAI,eAAe,WAAW,YAAY,GAAG;AACnE,cAAA,EAAE,cAAkB,IAAA;AAC1B,YAAI,OAAO,eAAe;AACxB,kBAAQ,cAAc,GAAG;AAAA,QAAA,OACpB;AACC,gBAAA,QAAQ,mBAAmB,QAAQ;AACjC,kBAAA,cAAc,GAAG,IAAI,aAAa;AAAA,YACxC;AAAA,YACA;AAAA,UAAA;AAEI;QACR;AAAA,MAAA,OACK;AACG,gBAAA;AAAA,MACV;AAAA,IACF;AACI,QAAA;AAAA,MAAI;AAAA;AAAA,IAAA,GAAqB;AACvB,UAAA,YAAY,CAAC,YAAY;AACnB,gBAAA;AAAA,MACC,WAAA;AAAA,QAAI;AAAA;AAAA,MAAA,MAA4B,UAAU,MAAM,UAAU,UAAU,GAAG,IAAI;AAC5E,gBAAA;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACO,SAAA;AACT;AACA,SAAS,sBAAsB,MAAM,YAAY,UAAU,OAAO;AAChE,QAAM,QAAQ,WAAW;AACnB,QAAA,SAAS,MAAM,IAAI,IAAI;AAC7B,MAAI,QAAQ;AACH,WAAA;AAAA,EACT;AACA,QAAM,MAAM,KAAK;AACjB,QAAM,aAAa,CAAA;AACnB,QAAM,eAAe,CAAA;AACrB,MAAI,aAAa;AACU,MAAA,CAAC,WAAW,IAAI,GAAG;AACtC,UAAA,cAAc,CAAC,SAAS;AACf,mBAAA;AACb,YAAM,CAAC,OAAO,IAAI,IAAI,sBAAsB,MAAM,YAAY,IAAI;AAClE,aAAO,YAAY,KAAK;AACpB,UAAA;AACW,qBAAA,KAAK,GAAG,IAAI;AAAA,IAAA;AAE7B,QAAI,CAAC,WAAW,WAAW,OAAO,QAAQ;AAC7B,iBAAA,OAAO,QAAQ,WAAW;AAAA,IACvC;AACA,QAAI,KAAK,SAAS;AAChB,kBAAY,KAAK,OAAO;AAAA,IAC1B;AACA,QAAI,KAAK,QAAQ;AACV,WAAA,OAAO,QAAQ,WAAW;AAAA,IACjC;AAAA,EACF;AACI,MAAA,CAAC,OAAO,CAAC,YAAY;AACnB,QAAA,SAAS,IAAI,GAAG;AACZ,YAAA,IAAI,MAAM,SAAS;AAAA,IAC3B;AACO,WAAA;AAAA,EACT;AACI,MAAA,QAAQ,GAAG,GAAG;AAChB,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,UAAiD,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG;AAC3D,eAAA,kDAAkD,IAAI,CAAC,CAAC;AAAA,MACjE;AACA,YAAM,gBAAgB,SAAS,IAAI,CAAC,CAAC;AACjC,UAAA,iBAAiB,aAAa,GAAG;AACnC,mBAAW,aAAa,IAAI;AAAA,MAC9B;AAAA,IACF;AAAA,aACS,KAAK;AACmC,QAAA,CAAC,SAAS,GAAG,GAAG;AAC/D,aAAO,yBAAyB,GAAG;AAAA,IACrC;AACA,eAAW,OAAO,KAAK;AACf,YAAA,gBAAgB,SAAS,GAAG;AAC9B,UAAA,iBAAiB,aAAa,GAAG;AAC7B,cAAA,MAAM,IAAI,GAAG;AACnB,cAAM,OAAO,WAAW,aAAa,IAAI,QAAQ,GAAG,KAAK,WAAW,GAAG,IAAI,EAAE,MAAM,IAAA,IAAQ,OAAO,CAAA,GAAI,GAAG;AACzG,YAAI,MAAM;AACR,gBAAM,eAAe,aAAa,SAAS,KAAK,IAAI;AACpD,gBAAM,cAAc,aAAa,QAAQ,KAAK,IAAI;AAClD;AAAA,YAAK;AAAA;AAAA,UAAA,IAAsB,eAAe;AAC1C;AAAA,YAAK;AAAA;AAAA,UAAsB,IAAI,cAAc,KAAK,eAAe;AACjE,cAAI,eAAe,MAAM,OAAO,MAAM,SAAS,GAAG;AAChD,yBAAa,KAAK,aAAa;AAAA,UACjC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACM,QAAA,MAAM,CAAC,YAAY,YAAY;AACjC,MAAA,SAAS,IAAI,GAAG;AACZ,UAAA,IAAI,MAAM,GAAG;AAAA,EACrB;AACO,SAAA;AACT;AACA,SAAS,iBAAiB,KAAK;AAC7B,MAAI,IAAI,CAAC,MAAM,OAAO,CAAC,eAAe,GAAG,GAAG;AACnC,WAAA;AAAA,EAAA,OAC6C;AAC7C,WAAA,uBAAuB,GAAG,2BAA2B;AAAA,EAC9D;AACO,SAAA;AACT;AACA,SAASC,UAAQ,MAAM;AACrB,MAAI,SAAS,MAAM;AACV,WAAA;AAAA,EACT;AACI,MAAA,OAAO,SAAS,YAAY;AAC9B,WAAO,KAAK,QAAQ;AAAA,EAAA,WACX,OAAO,SAAS,UAAU;AACnC,UAAM,OAAO,KAAK,eAAe,KAAK,YAAY;AAClD,WAAO,QAAQ;AAAA,EACjB;AACO,SAAA;AACT;AACA,SAAS,WAAW,GAAG,GAAG;AACxB,SAAOA,UAAQ,CAAC,MAAMA,UAAQ,CAAC;AACjC;AACA,SAAS,aAAa,MAAM,eAAe;AACrC,MAAA,QAAQ,aAAa,GAAG;AAC1B,WAAO,cAAc,UAAU,CAACC,OAAM,WAAWA,IAAG,IAAI,CAAC;AAAA,EAAA,WAChD,WAAW,aAAa,GAAG;AACpC,WAAO,WAAW,eAAe,IAAI,IAAI,IAAI;AAAA,EAC/C;AACO,SAAA;AACT;AACA,SAAS,cAAc,UAAU,OAAO,UAAU;AAC1C,QAAA,iBAAiB,MAAM,KAAK;AAC5B,QAAA,UAAU,SAAS,aAAa,CAAC;AACvC,aAAW,OAAO,SAAS;AACrB,QAAA,MAAM,QAAQ,GAAG;AACrB,QAAI,OAAO;AACT;AACFC;AAAAA,MACE;AAAA,MACA,eAAe,GAAG;AAAA,MAClB;AAAA,MAC4C,gBAAgB,cAAc;AAAA,MAC1E,CAAC,OAAO,UAAU,GAAG,KAAK,CAAC,OAAO,UAAU,UAAU,GAAG,CAAC;AAAA,IAAA;AAAA,EAE9D;AACF;AACA,SAASA,eAAa,MAAM,OAAO,MAAM,OAAO,UAAU;AACxD,QAAM,EAAE,MAAM,UAAU,WAAW,cAAc;AACjD,MAAI,YAAY,UAAU;AACjB,WAAA,6BAA6B,OAAO,GAAG;AAC9C;AAAA,EACF;AACI,MAAA,SAAS,QAAQ,CAAC,UAAU;AAC9B;AAAA,EACF;AACA,MAAI,QAAQ,QAAQ,SAAS,QAAQ,CAAC,WAAW;AAC/C,QAAI,UAAU;AACd,UAAM,QAAQ,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAC1C,UAAM,gBAAgB,CAAA;AACtB,aAAS,IAAI,GAAG,IAAI,MAAM,UAAU,CAAC,SAAS,KAAK;AAC3C,YAAA,EAAE,OAAO,iBAAiBC,aAAW,OAAO,MAAM,CAAC,CAAC;AAC5C,oBAAA,KAAK,gBAAgB,EAAE;AAC3B,gBAAA;AAAA,IACZ;AACA,QAAI,CAAC,SAAS;AACZ,aAAOC,wBAAsB,MAAM,OAAO,aAAa,CAAC;AACxD;AAAA,IACF;AAAA,EACF;AACA,MAAI,aAAa,CAAC,UAAU,OAAO,KAAK,GAAG;AAClC,WAAA,2DAA2D,OAAO,IAAI;AAAA,EAC/E;AACF;AACA,MAAMC,iBAA+B;AAAA,EACnC;AACF;AACA,SAASF,aAAW,OAAO,MAAM;AAC3B,MAAA;AACE,QAAA,eAAeH,UAAQ,IAAI;AAC7B,MAAAK,eAAa,YAAY,GAAG;AAC9B,UAAMJ,KAAI,OAAO;AACTA,YAAAA,OAAM,aAAa;AACvB,QAAA,CAAC,SAASA,OAAM,UAAU;AAC5B,cAAQ,iBAAiB;AAAA,IAC3B;AAAA,EAAA,WACS,iBAAiB,UAAU;AACpC,YAAQ,SAAS,KAAK;AAAA,EAAA,WACb,iBAAiB,SAAS;AACnC,YAAQ,QAAQ,KAAK;AAAA,EAAA,WACZ,iBAAiB,QAAQ;AAClC,YAAQ,UAAU;AAAA,EAAA,OACb;AACL,YAAQ,iBAAiB;AAAA,EAC3B;AACO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;AACA,SAASG,wBAAsB,MAAM,OAAO,eAAe;AACrD,MAAA,cAAc,WAAW,GAAG;AAC9B,WAAO,0BAA0B,IAAI;AAAA,EACvC;AACI,MAAA,UAAU,6CAA6C,IAAI,eAAe,cAAc,IAAI,UAAU,EAAE,KAAK,KAAK,CAAC;AACjH,QAAA,eAAe,cAAc,CAAC;AAC9B,QAAA,eAAe,UAAU,KAAK;AAC9B,QAAA,gBAAgBE,aAAW,OAAO,YAAY;AAC9C,QAAA,gBAAgBA,aAAW,OAAO,YAAY;AAChD,MAAA,cAAc,WAAW,KAAKC,eAAa,YAAY,KAAK,CAACC,YAAU,cAAc,YAAY,GAAG;AACtG,eAAW,eAAe,aAAa;AAAA,EACzC;AACA,aAAW,SAAS,YAAY;AAC5B,MAAAD,eAAa,YAAY,GAAG;AAC9B,eAAW,cAAc,aAAa;AAAA,EACxC;AACO,SAAA;AACT;AACA,SAASD,aAAW,OAAO,MAAM;AAC/B,MAAI,SAAS,UAAU;AACrB,WAAO,IAAI,KAAK;AAAA,EAAA,WACP,SAAS,UAAU;AACrB,WAAA,GAAG,OAAO,KAAK,CAAC;AAAA,EAAA,OAClB;AACL,WAAO,GAAG,KAAK;AAAA,EACjB;AACF;AACA,SAASC,eAAa,MAAM;AAC1B,QAAM,gBAAgB,CAAC,UAAU,UAAU,SAAS;AACpD,SAAO,cAAc,KAAK,CAAC,SAAS,KAAK,YAAA,MAAkB,IAAI;AACjE;AACA,SAASC,eAAa,MAAM;AAC1B,SAAO,KAAK,KAAK,CAAC,SAAS,KAAK,YAAA,MAAkB,SAAS;AAC7D;AAEA,IAAI;AACJ,IAAI;AACJ,SAAS,aAAa,UAAU,MAAM;AACpC,MAAI,SAAS,WAAW,OAAO,eAAe,eAAe;AAC3D,SAAK,KAAK,OAAO,IAAI,IAAI,SAAS,GAAG,EAAE;AAAA,EACzC;AACwE;AACpD,sBAAA,UAAU,MAAM,YAAY,IAAI,KAAK,QAAQ,KAAK,IAAA,CAAK;AAAA,EAC3E;AACF;AACA,SAAS,WAAW,UAAU,MAAM;AAClC,MAAI,SAAS,WAAW,OAAO,eAAe,eAAe;AAC3D,UAAM,WAAW,OAAO,IAAI,IAAI,SAAS,GAAG;AAC5C,UAAM,SAAS,WAAW;AAC1B,SAAK,KAAK,MAAM;AACX,SAAA;AAAA,MACH,IAAI,oBAAoB,UAAU,SAAS,IAAI,CAAC,KAAK,IAAI;AAAA,MACzD;AAAA,MACA;AAAA,IAAA;AAEF,SAAK,WAAW,QAAQ;AACxB,SAAK,WAAW,MAAM;AAAA,EACxB;AACwE;AACtD,oBAAA,UAAU,MAAM,YAAY,IAAI,KAAK,QAAQ,KAAK,IAAA,CAAK;AAAA,EACzE;AACF;AACA,SAAS,cAAc;AACrB,MAAI,cAAc,QAAQ;AACjB,WAAA;AAAA,EACT;AACA,MAAI,OAAO,WAAW,eAAe,OAAO,aAAa;AAC3C,gBAAA;AACZ,WAAO,OAAO;AAAA,EAAA,OACT;AACO,gBAAA;AAAA,EACd;AACO,SAAA;AACT;AAEA,MAAM,0BAA0B;AAIhC,MAAM,WAAW,OAAO,IAAI,OAAO;AACnC,MAAM,OAAO,OAAO,IAAI,OAAO;AAC/B,MAAM,UAAU,OAAO,IAAI,OAAO;AAClC,MAAM,SAAS,OAAO,IAAI,OAAO;AAMjC,SAAS,QAAQ,OAAO;AACf,SAAA,QAAQ,MAAM,gBAAgB,OAAO;AAC9C;AAyQA,MAAM,kBAAkB,iBAAiB;AACzC,IAAI,MAAM;AACV,SAAS,wBAAwB,OAAO,QAAQ,UAAU;AACxD,QAAM,OAAO,MAAM;AACnB,QAAM,cAAc,SAAS,OAAO,aAAa,MAAM,eAAe;AACtE,QAAM,WAAW;AAAA,IACf,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA;AAAA,IAEN,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,IAET,QAAQ;AAAA,IACR,QAAQ;AAAA;AAAA,IAER,OAAO,IAAI;AAAA,MACT;AAAA;AAAA,IAEF;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,UAAU,SAAS,OAAO,WAAW,OAAO,OAAO,WAAW,QAAQ;AAAA,IACtE,aAAa;AAAA,IACb,aAAa,CAAC;AAAA;AAAA,IAEd,YAAY;AAAA,IACZ,YAAY;AAAA;AAAA,IAEZ,cAAc,sBAAsB,MAAM,UAAU;AAAA,IACpD,cAAc,sBAAsB,MAAM,UAAU;AAAA;AAAA,IAEpD,MAAM;AAAA;AAAA,IAEN,SAAS;AAAA;AAAA,IAET,eAAe;AAAA;AAAA,IAEf,cAAc,KAAK;AAAA;AAAA,IAEnB,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,YAAY;AAAA;AAAA,IAEZ;AAAA,IACA,YAAY,WAAW,SAAS,YAAY;AAAA,IAC5C,UAAU;AAAA,IACV,eAAe;AAAA;AAAA;AAAA,IAGf,WAAW;AAAA,IACX,aAAa;AAAA,IACb,eAAe;AAAA,IACf,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,KAAK;AAAA,IACL,KAAK;AAAA,IACL,IAAI;AAAA,IACJ,IAAI;AAAA;AAAA,IAEJ,kCAAkC,IAAI;AAAA,IACtC,yBAAyB,CAAC;AAAA,IAC1B,2BAA2B,CAAC;AAAA,IAC5B,KAAK,CAAC;AAAA,IACN,KAAK,CAAC;AAAA,EAAA;AAEuC;AACpC,aAAA,MAAM,uBAAuB,QAAQ;AAAA,EAGhD;AACS,WAAA,OAAO,SAAS,OAAO,OAAO;AACvC,WAAS,OAAO,KAAK,KAAK,MAAM,QAAQ;AACxC,MAAI,MAAM,IAAI;AACZ,UAAM,GAAG,QAAQ;AAAA,EACnB;AACO,SAAA;AACT;AACA,IAAI,kBAAkB;AAChB,MAAA,qBAAqB,MAAM,mBAAmB;AACpD,IAAI;AACJ,IAAI;AACJ;AACE,+BAA6B,CAAC,MAAM;AAChB,sBAAA;AAAA,EAAA;AAEpB,uBAAqB,CAAC,MAAM;AACF,4BAAA;AAAA,EAAA;AAE5B;AACA,MAAM,qBAAqB,CAAC,aAAa;AACvC,QAAM,OAAO;AACb,6BAA2B,QAAQ;AACnC,WAAS,MAAM;AACf,SAAO,MAAM;AACX,aAAS,MAAM;AACf,+BAA2B,IAAI;AAAA,EAAA;AAEnC;AACA,MAAM,uBAAuB,MAAM;AACd,qBAAA,gBAAgB,MAAM;AACzC,6BAA2B,IAAI;AACjC;AACA,MAAM,uCAAuC,gBAAgB;AAC7D,SAAS,sBAAsB,MAAM,EAAE,eAAe;AACpD,MAAI,aAAa,IAAI,KAAK,YAAY,IAAI,GAAG;AAC3C;AAAA,MACE,oEAAoE;AAAA,IAAA;AAAA,EAExE;AACF;AACA,SAAS,oBAAoB,UAAU;AAC9B,SAAA,SAAS,MAAM,YAAY;AACpC;AACA,IAAI,wBAAwB;AAC5B,SAAS,eAAe,UAAU,QAAQ,OAAO;AAC/C,WAAS,mBAAmB,KAAK;AAC3B,QAAA;AAAA,IACJ;AAAA;AAAA,EAAA,IAEE,SAAS;AACP,QAAA,aAAa,oBAAoB,QAAQ;AACrCV,cAAA,UAAU,OAAO,YAAY,KAAK;AAC5C,QAAM,cAAc,aAAa,uBAAuB,UAAU,KAAK,IAAI;AAC3E,WAAS,mBAAmB,KAAK;AAC1B,SAAA;AACT;AACA,SAAS,uBAAuB,UAAU,OAAO;AAC/C,QAAMW,aAAY,SAAS;AACoB;AAC7C,QAAIA,WAAU,MAAM;AAClB,4BAAsBA,WAAU,MAAM,SAAS,WAAW,MAAM;AAAA,IAClE;AACA,QAAIA,WAAU,YAAY;AACxB,YAAM,QAAQ,OAAO,KAAKA,WAAU,UAAU;AAC9C,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,8BAAsB,MAAM,CAAC,GAAG,SAAS,WAAW,MAAM;AAAA,MAC5D;AAAA,IACF;AACA,QAAIA,WAAU,YAAY;AACxB,YAAM,QAAQ,OAAO,KAAKA,WAAU,UAAU;AAC9C,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACf,8BAAA,MAAM,CAAC,CAAC;AAAA,MAChC;AAAA,IACF;AACI,QAAAA,WAAU,mBAAmB,iBAAiB;AAChD;AAAA,QACE;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACS,WAAA,cAAqC,uBAAA,OAAO,IAAI;AACzD,WAAS,QAAQ,QAAQ,IAAI,MAAM,SAAS,KAAK,2BAA2B,CAAC;AAC9B;AAC7C,+BAA2B,QAAQ;AAAA,EACrC;AACM,QAAA,EAAE,MAAU,IAAAA;AAClB,MAAI,OAAO;AACH,UAAA,eAAe,SAAS,eAAe,MAAM,SAAS,IAAI,mBAAmB,QAAQ,IAAI;AACzF,UAAA,QAAQ,mBAAmB,QAAQ;AAC3B;AACd,UAAM,cAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QAC8C,gBAAgB,SAAS,KAAK;AAAA,QAC1E;AAAA,MACF;AAAA,IAAA;AAEY;AACR;AACF,QAAA,UAAU,WAAW,GAAG;AACd,kBAAA,KAAK,sBAAsB,oBAAoB;AACZ;AAC7C;AAAA,UACE;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA,OACK;AACa,wBAAA,UAAU,aAAa,KAAK;AAAA,IAChD;AAAA,EAAA,OACK;AACL,yBAAqB,UAAU,KAAK;AAAA,EACtC;AACF;AACA,SAAS,kBAAkB,UAAU,aAAa,OAAO;AACnD,MAAA,WAAW,WAAW,GAAG;AAC3B;AACE,eAAS,SAAS;AAAA,IACpB;AAAA,EAAA,WACS,SAAS,WAAW,GAAG;AACiB,QAAA,QAAQ,WAAW,GAAG;AACrE;AAAA,QACE;AAAA,MAAA;AAAA,IAEJ;AACwE;AACtE,eAAS,wBAAwB;AAAA,IACnC;AACS,aAAA,aAAa,UAAU,WAAW;AACI;AAC7C,sCAAgC,QAAQ;AAAA,IAC1C;AAAA,EAAA,WACsD,gBAAgB,QAAQ;AAC9E;AAAA,MACE,8CAA8C,gBAAgB,OAAO,SAAS,OAAO,WAAW;AAAA,IAAA;AAAA,EAEpG;AACA,uBAAqB,UAAU,KAAK;AACtC;AACA,IAAI;AACJ,MAAM,gBAAgB,MAAM,CAAC;AAC7B,SAAS,qBAAqB,UAAU,OAAO,aAAa;AAC1D,QAAMA,aAAY,SAAS;AACvB,MAAA,CAAC,SAAS,QAAQ;AACX,aAAA,SAASA,WAAU,UAAU;AAAA,EACxC;AACiC;AACzB,UAAA,QAAQ,mBAAmB,QAAQ;AAC3B;AACV,QAAA;AACF,qBAAe,QAAQ;AAAA,IAAA,UACvB;AACc;AACR;IACR;AAAA,EACF;AACA,MAAiD,CAACA,WAAU,UAAU,SAAS,WAAW,QAAQ,CAAC,OAAO;AACxG,QAAIA,WAAU,UAAU;AACtB;AAAA,QACE;AAAA,MAAA;AAAA,IACF,OACK;AACL,aAAO,mDAAmD;AAAA,IAC5D;AAAA,EACF;AACF;AACA,SAAS,cAAc,UAAU;AAC/B,SAAO,SAAS,eAAe,SAAS,aAAa,IAAI;AAAA,IACvD,SAAS;AAAA,IACmC;AAAA,MAC1C,IAAI,QAAQ,KAAK;AACT,cAAA,UAAU,OAAO,QAAQ;AAC/B,eAAO,OAAO,GAAG;AAAA,MACnB;AAAA,MACA,MAAM;AACJ,eAAO,iCAAiC;AACjC,eAAA;AAAA,MACT;AAAA,MACA,iBAAiB;AACf,eAAO,iCAAiC;AACjC,eAAA;AAAA,MACT;AAAA,IAAA;AAAA,EAMF;AAEJ;AACA,SAAS,cAAc,UAAU;AAC/B,SAAO,SAAS,eAAe,SAAS,aAAa,IAAI,MAAM,SAAS,OAAO;AAAA,IAC7E,IAAI,QAAQ,KAAK;AACT,YAAA,UAAU,OAAO,QAAQ;AAC/B,aAAO,OAAO,GAAG;AAAA,IACnB;AAAA,EACD,CAAA;AACH;AACA,SAAS,mBAAmB,UAAU;AAC9B,QAAA,SAAS,CAAC,YAAY;AACqB;AAC7C,UAAI,SAAS,SAAS;AACpB,eAAO,kDAAkD;AAAA,MAC3D;AACA,UAAI,WAAW,MAAM;AACnB,YAAI,cAAc,OAAO;AACzB,YAAI,gBAAgB,UAAU;AACxB,cAAA,QAAQ,OAAO,GAAG;AACN,0BAAA;AAAA,UAAA,WACL,MAAM,OAAO,GAAG;AACX,0BAAA;AAAA,UAChB;AAAA,QACF;AACA,YAAI,gBAAgB,UAAU;AAC5B;AAAA,YACE,sDAAsD,WAAW;AAAA,UAAA;AAAA,QAErE;AAAA,MACF;AAAA,IACF;AACS,aAAA,UAAU,WAAW;EAAC;AAEc;AAC7C,WAAO,OAAO,OAAO;AAAA,MACnB,IAAI,QAAQ;AACV,eAAO,cAAc,QAAQ;AAAA,MAC/B;AAAA,MACA,IAAI,QAAQ;AACV,eAAO,cAAc,QAAQ;AAAA,MAC/B;AAAA,MACA,IAAI,OAAO;AACT,eAAO,CAAC,UAAU,SAAS,SAAS,KAAK,OAAO,GAAG,IAAI;AAAA,MACzD;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EAUH;AACF;AACA,SAAS,eAAe,UAAU;AAChC,MAAI,SAAS,SAAS;AACb,WAAA,SAAS,gBAAgB,SAAS,cAAc,IAAI,MAAM,UAAU,QAAQ,SAAS,OAAO,CAAC,GAAG;AAAA,MACrG,IAAI,QAAQ,KAAK;AACf,YAAI,OAAO,QAAQ;AACjB,iBAAO,OAAO,GAAG;AAAA,QACnB;AACO,eAAA,SAAS,MAAM,GAAG;AAAA,MAC3B;AAAA,MACA,IAAI,QAAQ,KAAK;AACR,eAAA,OAAO,UAAU,OAAO;AAAA,MACjC;AAAA,IACD,CAAA;AAAA,EACH;AACF;AACA,MAAM,aAAa;AACnB,MAAM,WAAW,CAAC,QAAQ,IAAI,QAAQ,YAAY,CAACd,OAAMA,GAAE,YAAY,CAAC,EAAE,QAAQ,SAAS,EAAE;AAC7F,SAAS,iBAAiBc,YAAW,kBAAkB,MAAM;AACpD,SAAA,WAAWA,UAAS,IAAIA,WAAU,eAAeA,WAAU,OAAOA,WAAU,QAAQ,mBAAmBA,WAAU;AAC1H;AACA,SAAS,oBAAoB,UAAUA,YAAW,SAAS,OAAO;AAC5D,MAAA,OAAO,iBAAiBA,UAAS;AACjC,MAAA,CAAC,QAAQA,WAAU,QAAQ;AAC7B,UAAM,QAAQA,WAAU,OAAO,MAAM,iBAAiB;AACtD,QAAI,OAAO;AACT,aAAO,MAAM,CAAC;AAAA,IAChB;AAAA,EACF;AACA,MAAI,CAAC,QAAQ,YAAY,SAAS,QAAQ;AAClC,UAAA,oBAAoB,CAAC,aAAa;AACtC,iBAAW,OAAO,UAAU;AACtB,YAAA,SAAS,GAAG,MAAMA,YAAW;AACxB,iBAAA;AAAA,QACT;AAAA,MACF;AAAA,IAAA;AAEK,WAAA;AAAA,MACL,SAAS,cAAc,SAAS,OAAO,KAAK;AAAA,IACzC,KAAA,kBAAkB,SAAS,WAAW,UAAU;AAAA,EACvD;AACA,SAAO,OAAO,SAAS,IAAI,IAAI,SAAS,QAAQ;AAClD;AAKA,MAAM,WAAW,CAAC,iBAAiB,iBAAiB;AAClD,QAAMd,KAAI,WAAW,iBAAiB,cAAc,qBAAqB;AAC1B;AAC7C,UAAM,IAAI;AACV,QAAI,KAAK,EAAE,WAAW,OAAO,uBAAuB;AAClDA,SAAE,iBAAiB;AAAA,IACrB;AAAA,EACF;AACOA,SAAAA;AACT;AAuDA,MAAM,UAAU;AAChB,MAAM,OAAmD;AAGzD,SAAS,UAAU,QAAQ;AACzB,SAAO,MAAM,MAAM;AACrB;AAKA,MAAM,YAAY;AAClB,MAAM,aAAa;AACnB,SAAS,KAAK,SAAS,KAAK;AAC1B,QAAM,SAAS,CAAA;AACf,WAAS,SAAS,GAAG;AACf,QAAA,SAAS,KAAK,IAAI,MAAM;AACvB,SAAA;AACT;AACA,SAAS,SAAS,SAAS,KAAK;AAC9B,YAAU,UAAU,OAAO;AAC3B,MAAI,YAAY;AACd;AACI,QAAA,kBAAkB,aAAa,OAAO;AACtC,QAAA,cAAc,aAAa,GAAG;AAChC,MAAA,mBAAmB,cAAc,eAAe,YAAY;AAC9D,aAAS,OAAO,KAAK;AACb,YAAA,eAAe,QAAQ,GAAG;AAChC,UAAI,iBAAiB,QAAQ;AAC3B,gBAAQ,GAAG,IAAI;AAAA,MAAA,OACV;AACI,iBAAA,cAAc,IAAI,GAAG,CAAC;AAAA,MACjC;AAAA,IACF;AAAA,EACS,WAAA,mBAAmB,aAAa,eAAe,WAAW;AAC/D,QAAA,QAAQ,UAAU,IAAI,QAAQ;AAC5B,UAAA,QAAQ,CAAC,MAAMe,WAAU;AAClB,iBAAA,QAAQA,MAAK,GAAG,IAAI;AAAA,MAAA,CAC9B;AAAA,IACH;AAAA,EACF;AACF;AACA,SAAS,MAAM,SAAS,KAAK,MAAM,QAAQ;AACzC,YAAU,UAAU,OAAO;AAC3B,MAAI,YAAY;AACd;AACI,QAAA,kBAAkB,aAAa,OAAO;AACtC,QAAA,cAAc,aAAa,GAAG;AACpC,MAAI,mBAAmB,YAAY;AAC7B,QAAA,eAAe,cAAc,OAAO,KAAK,OAAO,EAAE,SAAS,OAAO,KAAK,GAAG,EAAE,QAAQ;AAC5E,gBAAA,QAAQ,MAAM,OAAO;AAAA,IAAA,OAC1B;AACL,eAAS,OAAO,SAAS;AACvB,cAAM,eAAe,UAAU,QAAQ,GAAG,CAAC;AACrC,cAAA,WAAW,IAAI,GAAG;AAClB,cAAA,cAAc,aAAa,YAAY;AACvC,cAAA,UAAU,aAAa,QAAQ;AACjC,YAAA,eAAe,aAAa,eAAe,YAAY;AACzD,cAAI,gBAAgB,UAAU;AAC5B;AAAA,cACE;AAAA,eACC,QAAQ,KAAK,KAAK,OAAO,OAAO;AAAA,cACjC;AAAA,YAAA;AAAA,UAEJ;AAAA,QAAA,WACS,eAAe,WAAW;AACnC,cAAI,WAAW,WAAW;AACxB;AAAA,cACE;AAAA,eACC,QAAQ,KAAK,KAAK,OAAO,OAAO;AAAA,cACjC;AAAA,YAAA;AAAA,UACF,OACK;AACD,gBAAA,aAAa,SAAS,SAAS,QAAQ;AACzC;AAAA,gBACE;AAAA,iBACC,QAAQ,KAAK,KAAK,OAAO,OAAO;AAAA,gBACjC;AAAA,cAAA;AAAA,YACF,OACK;AACQ,2BAAA,QAAQ,CAAC,MAAMA,WAAU;AACpC;AAAA,kBACE;AAAA,kBACA,SAASA,MAAK;AAAA,mBACb,QAAQ,KAAK,KAAK,OAAO,OAAO,MAAM,MAAMA,SAAQ;AAAA,kBACrD;AAAA,gBAAA;AAAA,cACF,CACD;AAAA,YACH;AAAA,UACF;AAAA,QAAA,WACS,eAAe,YAAY;AAChC,cAAA,WAAW,cAAc,OAAO,KAAK,YAAY,EAAE,SAAS,OAAO,KAAK,QAAQ,EAAE,QAAQ;AAC5F;AAAA,cACE;AAAA,eACC,QAAQ,KAAK,KAAK,OAAO,OAAO;AAAA,cACjC;AAAA,YAAA;AAAA,UACF,OACK;AACL,qBAAS,UAAU,cAAc;AAC/B;AAAA,gBACE,aAAa,MAAM;AAAA,gBACnB,SAAS,MAAM;AAAA,iBACd,QAAQ,KAAK,KAAK,OAAO,OAAO,MAAM,MAAM;AAAA,gBAC7C;AAAA,cAAA;AAAA,YAEJ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EAAA,WACS,mBAAmB,WAAW;AACvC,QAAI,eAAe,WAAW;AAClB,gBAAA,QAAQ,MAAM,OAAO;AAAA,IAAA,OAC1B;AACD,UAAA,QAAQ,SAAS,IAAI,QAAQ;AACrB,kBAAA,QAAQ,MAAM,OAAO;AAAA,MAAA,OAC1B;AACG,gBAAA,QAAQ,CAAC,MAAMA,WAAU;AACzB,gBAAA,MAAM,IAAIA,MAAK,GAAG,OAAO,MAAMA,SAAQ,KAAK,MAAM;AAAA,QAAA,CACzD;AAAA,MACH;AAAA,IACF;AAAA,EAAA,OACK;AACK,cAAA,QAAQ,MAAM,OAAO;AAAA,EACjC;AACF;AACA,SAAS,UAAU,QAAQ,GAAG,GAAG;AAC/B,SAAO,CAAC,IAAI;AACd;AAEA,SAAS,mBAAmB,UAAU;AAC7B,SAAA5B,QAAM,SAAS,SAAS,MAAM;AACvC;AACA,SAAS,eAAe,UAAU;AAChC,QAAM,MAAM,SAAS;AACrB,QAAM,YAAY,IAAI;AAClB,MAAA,aAAa,UAAU,QAAQ;AAO3B,UAAA,SAAS,UAAU,MAAM,CAAC;AAChC,cAAU,SAAS;AACnB,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,aAAO,CAAC;IACV;AAAA,EACF;AACF;AACA,SAAS,SAAS,UAAU,IAAI;AAC9B,QAAM,MAAM,SAAS;AACrB,MAAI,CAAC,IAAI,uBAAuB,CAAC,mBAAmB,QAAQ,GAAG;AAO7D,WAAO,WAAW,MAAM,GAAG,KAAK,SAAS,KAAK,CAAC;AAAA,EACjD;AAOI,MAAA;AACA,MAAA,CAAC,IAAI,uBAAuB;AAC9B,QAAI,wBAAwB;EAC9B;AACI,MAAA,sBAAsB,KAAK,MAAM;AACnC,QAAI,IAAI;AACN;AAAA,QACE,GAAG,KAAK,SAAS,KAAK;AAAA,QACtB;AAAA,QACA;AAAA,MAAA;AAAA,eAEO,UAAU;AACnB,eAAS,SAAS,KAAK;AAAA,IACzB;AAAA,EAAA,CACD;AACM,SAAA,IAAI,QAAQ,CAAC6B,aAAY;AACnBA,eAAAA;AAAAA,EAAA,CACZ;AACH;AAEA,SAAS,MAAM,KAAK,MAAM;AACxB,QAAM,UAAU,GAAG;AACnB,QAAM,OAAO,OAAO;AAChB,MAAA,SAAS,YAAY,QAAQ,MAAM;AACjC,QAAA,OAAO,KAAK,IAAI,GAAG;AACnB,QAAA,OAAO,SAAS,aAAa;AACxB,aAAA;AAAA,IACT;AACI,QAAA,QAAQ,GAAG,GAAG;AAChB,YAAM,MAAM,IAAI;AACT,aAAA,IAAI,MAAM,GAAG;AACf,WAAA,IAAI,KAAK,IAAI;AAClB,eAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,aAAK,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,IAAI;AAAA,MAC9B;AAAA,IAAA,OACK;AACL,aAAO,CAAA;AACF,WAAA,IAAI,KAAK,IAAI;AAClB,iBAAW,QAAQ,KAAK;AAClB,YAAA,OAAO,KAAK,IAAI,GAAG;AACrB,eAAK,IAAI,IAAI,MAAM,IAAI,IAAI,GAAG,IAAI;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AACO,WAAA;AAAA,EACT;AACA,MAAI,SAAS,UAAU;AACd,WAAA;AAAA,EACT;AACF;AACA,SAAS,SAAS,KAAK;AACd,SAAA,MAAM,KAAK,OAAO,YAAY,kCAAkC,QAAQ,IAAwB,oBAAA,IAAA,CAAK;AAC9G;AAEA,SAAS,kBAAkB,UAAU,MAAM;AACzC,QAAM,OAAO,SAAS;AAChB,QAAA,MAA6B,uBAAA,OAAO,IAAI;AACzC,OAAA,QAAQ,CAAC,QAAQ;AAChB,QAAA,GAAG,IAAI,KAAK,GAAG;AAAA,EAAA,CACpB;AACM,SAAA;AACT;AACA,SAAS,MAAM,UAAU,MAAM,SAAS;AACtC,MAAI,CAAC,MAAM;AACT;AAAA,EACF;AACA,SAAO,SAAS,IAAI;AACf,OAAA,MAAM,SAAS,OAAO,CAAA;AACtB,OAAA,MAAM,SAAS,OAAO,CAAA;AAC3B,QAAM,MAAM,SAAS;AACrB,QAAM,SAAS,IAAI;AACf,MAAA,WAAW,UAAU,WAAW,aAAa;AAC/C,SAAK,KAAK;AAEV,UAAM,aAAa,IAAI;AACjB,UAAA,OAAO,OAAO,KAAK,IAAI;AAC7B,UAAM,WAAW,KAAK,MAAM,WAAW,kBAAkB,YAAY,IAAI,CAAC;AAC1E,QAAI,OAAO,KAAK,QAAQ,EAAE,QAAQ;AAOhC,UAAI,sBAAsB;AACf,iBAAA,QAAQ,UAAU,MAAM;AACjC,YAAI,sBAAsB;AAC1B,uBAAe,QAAQ;AAAA,MAAA,CACxB;AACgB;IAAA,OACZ;AACL,qBAAe,QAAQ;AAAA,IACzB;AAAA,EACF;AACF;AAEA,SAAS,cAAc,WAAW;AAChC,YAAU,iBAAiB,YAAY,SAAS,UAAU,IAAI;AACrD,WAAA,SAAS,KAAK,GAAG,EAAE;AAAA,EAAA;AAE9B;AAEA,SAAS,eAAe,SAAS,UAAU,YAAY;AAC5C,WAAA,WAAW,OAAO,iBAAiB;AAAA,IAC1C;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF,QAAM,kBAAkB,QAAQ;AAChC,MAAI,iBAAiB;AACb,UAAA,OAAO,OAAO,KAAK,eAAe;AACxC,QAAI,KAAK,QAAQ;AACf,YAAM,MAAM,SAAS;AACjB,UAAA,CAAC,IAAI,eAAe;AACtB,YAAI,gBAAgB;MACtB;AACI,UAAA,cAAc,KAAK,GAAG,IAAI;AAAA,IAChC;AAAA,EACF;AACA,SAAO,SAAS,IAAI;AACtB;AAEA,SAAS,SAAS,UAAU,YAAY,OAAO;AACvC,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK,EAAE,QAAQ,YAAY;AAAA,EACzB,IAAA;AACJ,MAAI,gBAAgB,aAAa;AAC/B;AAAA,EACF;AACA,MAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,yBAAyB;AACzD;AAAA,EACF;AACA,MAAI,WAAW;AACb,qBAAiB,cAAc;AAAA,MAC7B,CAAC,gBAAgB,eAAe,aAAa,MAAM,UAAU;AAAA,IAAA;AAE/D,+BAA2B,wBAAwB;AAAA,MACjD,CAAC,gBAAgB,eAAe,aAAa,MAAM,UAAU;AAAA,IAAA;AAE/D;AAAA,EACF;AACM,QAAA,QAAQ,gBAAgB,cAAc,gBAAgB;AACtD,QAAA,cAAc,CAAC,SAAS;AACxB,QAAA,KAAK,WAAW,GAAG;AACrB,aAAO;IACT;AACM,UAAA;AAAA;AAAA;AAAA,OAGH,OAAO,oBAAoB,IAAI,KAAK,CAAI,GAAA;AAAA,QACvC,OAAO,oBAAoB,QAAQ,KAAK,CAAC;AAAA,MAC3C;AAAA;AAEK,WAAA,KAAK,OAAO,CAAC,gBAAgB;AAClC,YAAM,WAAW,4BAA4B,cAAc,YAAY,CAAC;AACpE,UAAA,SAAS,aAAa,MAAM;AACvB,eAAA;AAAA,MACT;AACe,qBAAA,aAAa,UAAU,UAAU;AACzC,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AAEH,QAAM,QAAQ,MAAM;AAClB,QAAI,eAAe;AACX,YAAA,OAAO,YAAY,aAAa;AACtC,UAAI,KAAK,UAAU,SAAS,SAAS,SAAS,MAAM,QAAQ;AAC1D,iBAAS,MAAM,OAAO,QAAQ,EAAE,IAAI,EAAA,GAAK,MAAM;AAC7C,sBAAY,IAAI;AAAA,QAAA,CACjB;AAAA,MACH;AAAA,IACF;AAAA,EAAA;AAEE,MAAA,2BAA2B,wBAAwB,QAAQ;AAC7D,aAAS,UAAU,MAAM;AACC,8BAAA,QAAQ,CAAC,gBAAgB;AAC3C,YAAA,QAAQ,YAAY,CAAC,GAAG;AACd,sBAAA,EAAE,QAAQ,CAAC,MAAM;AACZ,2BAAA,aAAa,GAAG,UAAU;AAAA,UAAA,CAC1C;AAAA,QAAA,OACI;AACU,yBAAA,aAAa,YAAY,GAAG,UAAU;AAAA,QACvD;AAAA,MAAA,CACD;AAAA,IAAA,CACF;AAAA,EACH;AACA,MAAI,OAAO,UAAU;AACnB,WAAO,SAAS,KAAK;AAAA,EAAA,OAChB;AACL,aAAS,UAAU,KAAK;AAAA,EAC1B;AACF;AACA,SAAS,OAAO,OAAO;AACjB,MAAA,SAAS,KAAK,GAAG;AACnB,YAAQ,KAAK;AAAA,EACf;AACO,SAAA;AACT;AACA,SAAS,4BAA4B,cAAc,IAAI;AACrD,QAAM,aAAa,aAAa;AAAA,IAC9B,CAAC,QAAQ,QAAQ,IAAI,cAAc,IAAI,OAAO,OAAO;AAAA,EAAA;AAEvD,MAAI,YAAY;AACd,UAAM,KAAK,WAAW;AACtB,QAAI,IAAI;AACC,aAAA,eAAe,GAAG,CAAC,KAAK;AAAA,IACjC;AACA,WAAO,OAAO,UAAU;AAAA,EAC1B;AACO,SAAA;AACT;AACA,SAAS,eAAe,EAAE,GAAA9B,IAAG,GAAA+B,GAAE,GAAG,UAAU,YAAY;AAClD,MAAA,WAAW/B,EAAC,GAAG;AACjBA,OAAE,UAAU,CAAA,CAAE;AAAA,EAAA,OACT;AACC,UAAA,YAAY,SAASA,EAAC;AACtB,UAAA,SAAS,MAAMA,EAAC;AACtB,QAAI,aAAa,QAAQ;AACvB,UAAI+B,IAAG;AACL,YAAI,CAAC,QAAQ;AACX;AAAA,QACF;AACA,YAAI,CAAC,QAAQ/B,GAAE,KAAK,GAAG;AACrBA,aAAE,QAAQ;QACZ;AACA,cAAM,WAAWA,GAAE;AACnB,YAAI,SAAS,QAAQ,QAAQ,MAAM,IAAI;AACrC,mBAAS,KAAK,QAAQ;AACtB,cAAI,CAAC,UAAU;AACb;AAAA,UACF;AACA,cAAI,SAAS,GAAG;AACd,4BAAgB,MAAM,OAAO,UAAU,QAAQ,GAAG,SAAS,CAAC;AAAA,UAC9D;AAAA,QACF;AAAA,iBACS,WAAW;AAChB,YAAA,OAAO,YAAYA,EAAC,GAAG;AACzB,qBAAWA,EAAC,IAAI;AAAA,QAClB;AAAA,MAAA,WACS,MAAMA,EAAC,GAAG;AACnBA,WAAE,QAAQ;AAAA,MAAA,OAC0C;AACpD,gBAAQA,EAAC;AAAA,MACX;AAAA,IAAA,OACoD;AACpD,cAAQA,EAAC;AAAA,IACX;AAAA,EACF;AACF;AACA,SAAS,QAAQgC,MAAK;AACpB,OAAK,8BAA8BA,MAAK,IAAI,OAAOA,IAAG,GAAG;AAC3D;AAEA,MAAM,wBAAwB;AAC9B,SAAS,eAAe,cAAc,SAAS;AAC7C,QAAM,WAAW,aAAa,YAAY,wBAAwB,cAAc,QAAQ,iBAAiB,IAAI;AACpF;AACvB,aAAS,IAAI,kBAAkB;AACtB,aAAA,IAAI,YAAY;EAC3B;AACI,MAAA,QAAQ,WAAW,OAAO;AAC5B,aAAS,SAAS;AAAA,EACpB;AACA,MAAI,QAAQ,eAAe;AACjB,YAAA,cAAc,UAAU,OAAO;AAAA,EACzC;AAC+C;AAC7C,uBAAmB,YAAY;AAC/B,iBAAa,UAAU,OAAO;AAAA,EAChC;AAC+C;AAC7C,iBAAa,UAAU,MAAM;AAAA,EAC/B;AACA,iBAAe,QAAQ;AACwB;AAC7C,eAAW,UAAU,MAAM;AAAA,EAC7B;AACyB;AACnB,QAAA,QAAQ,mBAAmB,SAAS,OAAO;AACrC,cAAA,gBAAgB,IAAI,UAAU,KAAK,eAAe,QAAQ,KAAK,SAAS,KAAK;AAAA,IACvF;AAAA,EACF;AACA,oBAAkB,QAAQ;AACqB;AAC3B;AAClB,eAAW,UAAU,OAAO;AAAA,EAC9B;AACA,SAAO,SAAS;AAClB;AACA,MAAM,2BAA2B,CAAC,UAAU;AACtC,MAAA;AACJ,aAAW,OAAO,OAAO;AACvB,QAAI,QAAQ,WAAW,QAAQ,WAAW,KAAK,GAAG,GAAG;AACnD,OAAC,QAAQ,MAAM,KAAK,GAAG,IAAI,MAAM,GAAG;AAAA,IACtC;AAAA,EACF;AACO,SAAA;AACT;AACA,SAAS,oBAAoB,UAAU;AAC/B,QAAA;AAAA,IACJ,MAAMJ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,CAAC,YAAY;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,MAAAK;AAAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAAC;AAAAA,IACA,YAAY;AAAA,MACV,KAAK;AAAA,QACH,QAAQ;AAAA,UACN,kBAAkB,EAAE,0BAAAC,0BAAyB;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,EACE,IAAA;AACK,WAAA,qCAAqC;AAC9C,WAAS,gBAAgB;AACzB,WAAS,0BAA0B;AACnC,WAAS,4BAA4B;AACrC,WAAS,MAAM;AACfA,4BAAyBD,IAAG;AAC5B,WAAS,YAAY,SAAS,cAAc,IAAI,IAAI;AAChD,MAAA;AACE,QAAA,OAAO,4BAA4B,QAAQ;AAC7C,MAAA;AACE,QAAA,MAAM,YAAY,GAAG;AACN,uBAAA,cAAc,OAAO,cAAc,KAAK;AACzD,YAAM,aAAa,aAAa;AAChC,eAAS,OAAO;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF,OACK;AACL;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACAN,WAAU,QAAQ,QAAQ,yBAAyB,KAAK;AAAA,MAAA;AAE1D,YAAM,UAAUA;AACP,eAAA,QAAQ,SAAS,IAAI,QAAQ,OAAO,EAAE,OAAO,OAAO,MAAAK,MAAK,CAAC,IAAI;AAAA,QACrE;AAAA,QACA;AAAA;AAAA,MAAA;AAAA,IAGJ;AAAA,WACO,KAAK;AACA,gBAAA,KAAK,UAAU,CAAC;AACnB,aAAA;AAAA,EACX;AACA,WAAS,QAAQ;AACjB,8BAA4B,IAAI;AACzB,SAAA;AACT;AACA,SAAS,iBAAiB,cAAc,OAAO,cAAc,mBAAmB;AAC1E,MAAA,SAAS,qBAAqB,iBAAiB,OAAO;AACxD,UAAM,OAAO,OAAO,KAAK,iBAAiB,EAAE;AAAA,MAC1C,CAAC,QAAQ,QAAQ,WAAW,QAAQ;AAAA,IAAA;AAElC,QAAA,CAAC,KAAK,QAAQ;AAChB;AAAA,IACF;AACA,QAAI,gBAAgB,KAAK,KAAK,eAAe,GAAG;AACzC,WAAA,QAAQ,CAAC,QAAQ;AAChB,YAAA,CAAC,gBAAgB,GAAG,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,eAAe;AACtD,gBAAA,GAAG,IAAI,kBAAkB,GAAG;AAAA,QACpC;AAAA,MAAA,CACD;AAAA,IAAA,OACI;AACA,WAAA,QAAQ,CAAC,QAAQ,MAAM,GAAG,IAAI,kBAAkB,GAAG,CAAC;AAAA,IAC3D;AAAA,EACF;AACF;AACA,MAAM,2BAA2B,CAAC,aAAa;AAC/B;AACG;AACH;AAChB;AACA,SAAS,+BAA+B;AACtC,QAAM,kBAAkB,KAAK;AAC7B,MAAI,CAAC,mBAAmB,gBAAgB,WAAW,GAAG;AACpD;AAAA,EACF;AAEM,QAAA,aAAa,KAAK,IAAI;AAC5B,QAAM,UAAU,WAAW;AACrB,QAAA,WAAkC,uBAAA,OAAO,IAAI;AACnD,kBAAgB,QAAQ,CAAC,EAAE,MAAM,OAAAJ,QAAO,WAAW;AAC3C,UAAA,oBAAoB,mBAAmB,SAAS,IAAI;AAC1D,UAAM,WAAW,SAASA,MAAK,IAAI,GAAG,IAAI,IAAIA,MAAK,KAAK,GAAG,IAAI,IAAIA,MAAK;AACxE,QAAI,OAAO,sBAAsB,eAAe,OAAO,kBAAkBA,MAAK,MAAM,aAAa;AAC/F,eAAS,QAAQ,IAAI;AAAA,IAAA,OAChB;AACL,YAAM,qBAAqB;AAAA,QACzB;AAAA,QACA,kBAAkBA,MAAK;AAAA,MAAA;AAEzB,aAAO,KAAK,kBAAkB,EAAE,QAAQ,CAAC,SAAS;AAChD,iBAAS,WAAW,MAAM,IAAI,IAAI,mBAAmB,IAAI;AAAA,MAAA,CAC1D;AAAA,IACH;AAAA,EAAA,CACD;AACD,kBAAgB,SAAS;AACzB,MAAI,OAAO,KAAK,QAAQ,EAAE,QAAQ;AAOhC,eAAW,QAAQ,QAAQ;AAAA,EAC7B;AACF;AACA,SAAS,cAAc,EAAE,QAAAnC,SAAQ,OAAA,GAAU,SAAS;AAClDA,UAAO,eAAe,OAAO,eAAe;AAC9C;AACA,SAAS,kBAAkB,UAAU;AACnC,QAAM,oBAAoB,6BAA6B;AAAA,IACrD;AAAA,EAAA;AAEF,WAAS,qBAAqB,MAAM,WAAW,MAAM,SAAS,iBAAiB,CAAC;AAChF,QAAM,oBAAoB,MAAM;AAC1B,QAAA,CAAC,SAAS,WAAW;AACvB,sBAAgB,MAAM;AACpB,iBAAS,UAAU,IAAI;AAAA,SACtB,QAAQ;AACoC;AAC7C,qBAAa,UAAU,OAAO;AAAA,MAChC;AACM,YAAA,UAAU,oBAAoB,QAAQ,CAAC;AACE;AAC7C,mBAAW,UAAU,OAAO;AAAA,MAC9B;AACwE;AACtE,+BAAuB,QAAQ;AAAA,MACjC;AAAA,IAAA,OACK;AACL,YAAM,EAAE,MAAM,IAAI,EAAA,IAAM;AACuB;AAC1B,2BAAA,QAAQ,SAAS,KAAK;AAAA,MAC3C;AACA,oBAAc,UAAU,KAAK;AACJ;AACzB,UAAI,IAAI;AACNH,yBAAe,EAAE;AAAA,MACnB;AACA,oBAAc,UAAU,IAAI;AACmB;AAC7C,qBAAa,UAAU,OAAO;AAAA,MAChC;AACM,YAAA,UAAU,oBAAoB,QAAQ,CAAC;AACE;AAC7C,mBAAW,UAAU,OAAO;AAAA,MAC9B;AACA,UAAI,GAAG;AACL,8BAAsB,CAAC;AAAA,MACzB;AACwE;AACtE,iCAAyB,QAAQ;AAAA,MACnC;AAC+C;AAC3B;MACpB;AAAA,IACF;AAAA,EAAA;AAEIG,QAAAA,UAAS,SAAS,SAAS,IAAI;AAAA,IACnC;AAAA,IACA;AAAA,IACA,MAAM,SAAS,MAAM;AAAA,IACrB,SAAS;AAAA;AAAA,EAAA;AAGL,QAAA,SAAS,SAAS,SAAS,MAAM;AACrC,QAAIA,QAAO,OAAO;AAChBA,cAAO,IAAI;AAAA,IACb;AAAA,EAAA;AAEF,SAAO,KAAK,SAAS;AACrB,gBAAc,UAAU,IAAI;AACmB;AAC7CA,YAAO,UAAU,SAAS,MAAM,CAAC0C,OAAM7C,iBAAe,SAAS,KAAK6C,EAAC,IAAI;AACzE1C,YAAO,YAAY,SAAS,MAAM,CAAC0C,OAAM7C,iBAAe,SAAS,KAAK6C,EAAC,IAAI;AAC3E,WAAO,gBAAgB;AAAA,EACzB;AAC+B;AACtB;EACT;AACF;AACA,SAAS,iBAAiB,UAAU;AAClC,QAAM,EAAE,KAAK,OAAO,QAAQ,OAAO;AACnC,MAAI,KAAK;AACP7C,qBAAe,GAAG;AAAA,EACpB;AACyB;AACvB,UAAM,iBAAiB,SAAS;AAChC,QAAI,gBAAgB;AACZ,YAAA,YAAY,eAAe,IAAI;AACrC,YAAM,SAAS,eAAe,QAAQ,KAAK,SAAS;AAC9C,YAAAsC,SAAQ,UAAU,QAAQ,MAAM;AACtC,UAAIA,SAAQ,IAAI;AACJ,kBAAA,OAAOA,QAAO,CAAC;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AACA,QAAM,KAAK;AACX,MAAI,QAAQ;AACV,WAAO,SAAS;AAAA,EAClB;AACA,MAAI,IAAI;AACN,0BAAsB,EAAE;AAAA,EAC1B;AACA,wBAAsB,MAAM;AAC1B,aAAS,cAAc;AAAA,EAAA,CACxB;AACuE;AACtE,6BAAyB,QAAQ;AAAA,EACnC;AACF;AACA,MAAM,eAAe,aAAa;AAClC,SAAS,YAAY;AACf,MAAA,OAAO,WAAW,aAAa;AAC1B,WAAA;AAAA,EACT;AACI,MAAA,OAAO,eAAe,aAAa;AAC9B,WAAA;AAAA,EACT;AACI,MAAA,OAAO,WAAW,aAAa;AAC1B,WAAA;AAAA,EACT;AACI,MAAA,OAAO,OAAO,aAAa;AACtB,WAAA;AAAA,EACT;AACF;AACA,SAAS,aAAa,eAAe,YAAY,MAAM;AACrD,QAAM,SAAS;AACf,SAAO,UAAU;AACuD;AACtD,oBAAA,OAAO,8BAA8B,MAAM;AAAA,EAC7D;AACM,QAAA,MAAM,aAAa,eAAe,SAAS;AACjD,QAAM,aAAa,IAAI;AACvB,gBAAc,WAAW,MAAM;AACzBQ,QAAAA,eAAc,CAAC,iBAAiB;AACpC,iBAAa,aAAa;AAC1B,iBAAa,YAAY;AAClB,WAAA;AAAA,EAAA;AAET,QAAMC,mBAAkB,SAASC,kBAAiB,cAAc,SAAS;AACvE,WAAO,eAAeF,aAAY,YAAY,GAAG,OAAO;AAAA,EAAA;AAEpD,QAAA,mBAAmB,SAAS,kBAAkB,WAAW;AACtD,WAAA,aAAa,iBAAiB,UAAU,CAAC;AAAA,EAAA;AAE9C,MAAA,QAAQ,SAAS,QAAQ;AAC3B,kBAAc,SAAS;AACvB,UAAM,WAAW;AAAA,MACfA,aAAY,EAAE,MAAM,eAAe;AAAA,MACnC;AAAA,QACE,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,iBAAiB;AAAA,QACjB,OAAO,CAAC;AAAA,QACR,OAAO;AAAA,MACT;AAAA,IAAA;AAEF,QAAI,YAAY,SAAS;AAC+C;AACtE,sBAAgB,KAAK,OAAO;AAAA,IAC9B;AACA,aAAS,OAAO;AAChB,aAAS,mBAAmBC;AAC5B,aAAS,oBAAoB;AAC7B,eAAW,eAAe;AACnB,WAAA;AAAA,EAAA;AAEL,MAAA,UAAU,SAAS,UAAU;AAC/B,SAAK,wBAAwB;AAAA,EAAA;AAExB,SAAA;AACT;AA+CA,SAAS,oBAAoB,MAAM,MAAM,YAAY,UAAU;AACvD,MAAA,WAAW,IAAI,GAAG;AAClB,eAAW,MAAM,KAAK,KAAK,UAAU,GAAG,QAAQ;AAAA,EACpD;AACJ;AACA,SAASE,YAAU,SAAS,UAAU,YAAY;AACxC,QAAA,SAAS,QAAQ,UAAU,WAAW;AACxC,MAAA,CAAC,UAAU,WAAW,aAAa;AAEnC;AAAA,EACJ;AACA,SAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,SAAS;AACnC,QAAI,mBAAmB,MAAM,QAAQ,IAAI,GAAG,KAAK,GAAG;AAC1C,YAAA,QAAQ,QAAQ,IAAI;AACtB,UAAA,QAAQ,KAAK,GAAG;AACV,cAAA,QAAQ,CAAC,SAAS,oBAAoB,MAAM,MAAM,YAAY,QAAQ,CAAC;AAAA,MAAA,OAE5E;AACmB,4BAAA,MAAM,OAAO,YAAY,QAAQ;AAAA,MACzD;AAAA,IACJ;AAAA,EAAA,CACH;AACL;AAEA,SAASC,eAAa,SAAS,UAAU,YAAY;AACvCD,cAAA,SAAS,UAAU,UAAU;AAC3C;AAEA,SAAS,IAAI,QAAQ,KAAK,KAAK;AACnB,SAAA,OAAO,GAAG,IAAI;AAC1B;AACA,SAAS,YAAY,WAAW,MAAM;AAC5B,QAAA,KAAK,KAAK,MAAM;AACtB,MAAI,IAAI;AACG,WAAA,GAAG,GAAG,IAAI;AAAA,EACrB;AACQ,UAAA,MAAM,UAAU,MAAM,YAAY;AACnC,SAAA;AACX;AAEA,SAAS,mBAAmB,KAAK;AACvB,QAAA,mBAAmB,IAAI,OAAO;AACpC,SAAO,SAAS,aAAa,KAAK,UAAU,MAAM;AAC9C,QAAI,kBAAkB;AACD,uBAAA,KAAK,UAAU,IAAI;AAAA,IACxC;AACA,UAAM,cAAc,IAAI;AACxB,QAAI,CAAC,eAAe,CAAC,YAAY,OAAO;AAC9B,YAAA;AAAA,IACV;AACI,QAAA,YAAY,QAAQ,GAAG;AACvB;AACgB,oBAAA,MAAM,UAAU,UAAU,GAAG;AAAA,MAC7C;AAAA,IAAA,OAEC;AACD,eAAS,KAAK,MAAM,WAAW,SAAS,EAAE,QAAQ,MAAM,KAAK;AAAA,IACjE;AAAA,EAAA;AAER;AACA,SAAS,aAAa,IAAI,MAAM;AAC5B,SAAO,KAAK,CAAC,GAAG,IAAI,IAAI,CAAG,EAAA,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI;AACpD;AACA,SAAS,0BAA0B,uBAAuB;AACpC,oBAAA,QAAQ,CAAC,SAAS;AAChC,0BAAsB,IAAI,IAAI;AAAA,EAAA,CACjC;AACL;AAEA,IAAI;AACJ,MAAM,MAAM;AACZ,MAAM,QAAQ;AACd,IAAI,OAAO,SAAS,YAAY;AAC5B,aAAW,SAAU,KAAK;AACtB,UAAM,OAAO,GAAG,EAAE,QAAQ,iBAAiB,EAAE;AAC7C,QAAI,CAAC,MAAM,KAAK,GAAG,GAAG;AACZ,YAAA,IAAI,MAAM,0FAA0F;AAAA,IAC9G;AAEA,WAAO,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE;AAClC,QAAA;AACJ,QAAI,SAAS;AACT,QAAA;AACA,QAAA;AACJ,QAAI,IAAI;AACD,WAAA,IAAI,IAAI,UAAS;AACpB,eACK,IAAI,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAC5B,IAAI,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,MAC/B,KAAK,IAAI,QAAQ,IAAI,OAAO,GAAG,CAAC,MAAM,KACvC,KAAK,IAAI,QAAQ,IAAI,OAAO,GAAG,CAAC;AACzC,gBACI,OAAO,KACD,OAAO,aAAc,UAAU,KAAM,GAAG,IACxC,OAAO,KACH,OAAO,aAAc,UAAU,KAAM,KAAM,UAAU,IAAK,GAAG,IAC7D,OAAO,aAAc,UAAU,KAAM,KAAM,UAAU,IAAK,KAAK,SAAS,GAAG;AAAA,IAC7F;AACO,WAAA;AAAA,EAAA;AAEf,OACK;AAEU,aAAA;AACf;AACA,SAAS,iBAAiB,KAAK;AACpB,SAAA,mBAAmB,SAAS,GAAG,EACjC,MAAM,EAAE,EACR,IAAI,SAAU1B,IAAG;AACX,WAAA,OAAO,OAAOA,GAAE,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;AAAA,EAAA,CAC9D,EACI,KAAK,EAAE,CAAC;AACjB;AACA,SAAS,qBAAqB;AAC1B,QAAM,QAAQ4B,MAAI,eAAe,cAAc,KAAK;AAC9C,QAAA,WAAW,MAAM,MAAM,GAAG;AAChC,MAAI,CAAC,SAAS,SAAS,WAAW,GAAG;AAC1B,WAAA;AAAA,MACH,KAAK;AAAA,MACL,MAAM,CAAC;AAAA,MACP,YAAY,CAAC;AAAA,MACb,cAAc;AAAA,IAAA;AAAA,EAEtB;AACI,MAAA;AACA,MAAA;AACA,eAAW,KAAK,MAAM,iBAAiB,SAAS,CAAC,CAAC,CAAC;AAAA,WAEhD,OAAO;AACV,UAAM,IAAI,MAAM,wBAAwB,MAAM,OAAO;AAAA,EACzD;AACS,WAAA,eAAe,SAAS,MAAM;AACvC,SAAO,SAAS;AAChB,SAAO,SAAS;AACT,SAAA;AACX;AACA,SAAS,WAAW,kBAAkB;AACjB,mBAAA,eAAe,SAAU,QAAQ;AACxC,UAAA,EAAE,SAAS;AACV,WAAA,KAAK,QAAQ,MAAM,IAAI;AAAA,EAAA;AAEjB,mBAAA,qBAAqB,SAAU,cAAc;AACpD,UAAA,EAAE,eAAe;AACvB,WAAO,KAAK,aAAa,OAAO,KAAK,WAAW,QAAQ,YAAY,IAAI;AAAA,EAAA;AAE5E,mBAAiB,kBAAkB,WAAY;AACrC,UAAA,EAAE,iBAAiB;AAClB,WAAA,eAAe,KAAK;EAAI;AAEvC;AAEA,SAAS,QAAQ,KAAK;AAClB,QAAM,YAAY,IAAI;AAQZ,YAAA,eAAe,yBAAyB,KAAK,kBAAkB;AACzE,4BAA0B,UAAU,qBAAqB;AACzD,QAAM,mBAAmB,UAAU;AACnC;AACI,eAAW,gBAAgB;AAAA,EAC/B;AACyB;AACrB,qBAAiB,OAAO;AACxB,qBAAiB,gBAAgBD;AACjC,qBAAiB,cAAc;AAAA,EACnC;AACA;AACIC,UAAI,uBAAuB,GAAG;AAAA,EAClC;AACJ;AAEA,MAAM,cAAqB,uBAAA,OAAO,IAAI;AAOtC,SAAS,yBAAyBR,MAAK;AACnC,SAAO,YAAYA,IAAG;AAC1B;AACA,SAAS,uBAAuB,IAAI;AAChC,MAAI,CAAC,IAAI;AACL;AAAA,EACJ;AACA,QAAM,CAACA,MAAK,OAAO,IAAI,GAAG,MAAM,GAAG;AAC/B,MAAA,CAAC,YAAYA,IAAG,GAAG;AACnB;AAAA,EACJ;AACA,SAAO,YAAYA,IAAG,EAAE,SAAS,OAAO,CAAC;AAC7C;AAEA,IAAI,SAAS;AAAA,EACT,QAAQ,KAAK;AACT,YAAQ,GAAG;AACP,QAAA,OAAO,iBAAiB,2BACxB;AACJ,UAAM,WAAW,IAAI;AACjB,QAAA,QAAQ,SAAS,MAAM,eAAe;AACtC,YAAM,WAAW,SAAS,KAAK,KAAK,aAAa;AACjD,YAAM1B,aAAY;AAClB,UAAIA,YAAW;AACXA,mBAAU,QAAQ;AAAA,MAAA,OAEjB;AAEG,YAAA,OAAO,yBAAyB,aAAa;AAE7C,+BAAqB,QAAQ;AAAA,QACjC;AAAA,MACJ;AACO,aAAA;AAAA,IAAA;AAAA,EAEf;AACJ;AACA,SAAS,eAAe;AACpB,QAAM,SAII;AACV,MAAI,OAAO,WAAW,eAClB,OAAO,OAAO,MAAM,MAAM,aAAa;AACvC,WAAO,OAAO,MAAM;AAAA,EAAA,WAGf,OAAO,OAAO,aAAa;AAGhC,WAAO,GAAG,MAAM;AAAA,EACpB;AACJ;AAoBA,SAAS,IAAI,OAAO,KAAK;AACrB,QAAM,WAAW;AACjB,QAAM,MAAM,SAAS;AAEf,QAAA,WAAW,OAAO,QAAQ,gBAC3B,IAAI,gBAAgB,eACjB,IAAI,gBAAgB,WACpB,IAAI,gBAAgB,cACvB,SAAS,GAAG,KAAK,OAAO,QAAQ,YAC/B,MAAM,MACN;AACA,QAAA,OAAO,MAAM,SAAS,QAAQ;AACpC,QAAM,aAAa,IAAI;AACvB,MAAI,CAAC,OAAO;AAER,WAAO,WAAW,IAAI;AACf,WAAA;AAAA,EACX;AACM,QAAA,kBAAkB,WAAW,IAAI;AACvC,MAAI,iBAAiB;AAEjB,oBAAgB,QAAQ;AAAA,EAAA,OAEvB;AAED,eAAW,IAAI,IAAI,cAAc,OAAO,QAAQ;AAAA,EACpD;AACO,SAAA;AACX;AACA,SAAS,cAAc,cAAc,UAAU;AACrC,QAAA,UAAU,CAAC4B,OAAM;AACnB,iBAAaA,EAAC;AACV,QAAA,OAAO,CAACA,EAAC;AACT,QAAA,YAAY,SAAS,IAAI,wBAAwB;AAC7C,UAAA,OAAOA,GAAE,WAAW,UAAU;AAC9BA,WAAE,SAAS,SAAS,IAAI,uBAAuBA,GAAE,MAAM;AAAA,MAC3D;AAAA,IACJ;AACA,QAAIA,GAAE,UAAUA,GAAE,OAAO,UAAU;AAC/B,aAAOA,GAAE,OAAO;AAAA,IACpB;AACA,UAAM,aAAa,QAAQ;AACrB,UAAA,SAAS,MAAM,2BAA2B,8BAA8BA,IAAG,UAAU,GAAG,UAAU,GAAyC,IAAI;AAErJ,UAAM,cAAcA,GAAE;AAChB,UAAA,YAAY,cACZ,YAAY,UACR,OAAO,YAAY,QAAQ,SAAS,MAAM,SAC1C,QACJ;AACN,QAAI,QAAQ,SAASA,GAAE,IAAI,KAAK,CAAC,WAAW;AACxC,iBAAW,MAAM;AAAA,IAAA,OAEhB;AACD,YAAM,MAAM;AACRA,UAAAA,GAAE,SAAS,YAAY,QAAQ,GAAG,KAAK,UAAU,GAAG,IAAI;AACxD;AAAA,MACJ;AACO,aAAA;AAAA,IACX;AAAA,EAAA;AAEJ,UAAQ,QAAQ;AACT,SAAA;AACX;AAEA,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACA,SAAS,aAAa,OAAO,UAAU;AAC/B,MAAA,MAAM,QAAQ,MAAM,QAAQ;AAC5B,UAAM,iBAAiB;AACvB,UAAM,kBAAkB;AACxB,UAAM,2BAA2B;AACjC,QAAI,CAAC,OAAO,OAAO,QAAQ,GAAG;AAC1B,YAAM,SAAS;IACnB;AACI,QAAA,OAAO,OAAO,UAAU,GAAG;AAC3B,YAAM,SAAS,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS;AAC3D,YAAA,OAAO,WAAW,MAAM;AAAA,IAClC;AAEA,QAAI,cAAc,MAAM,MAAM,KAC1B,OAAO,MAAM,QAAQ,SAAS,KAC9B,CAAC,OAAO,MAAM,QAAQ,OAAO,GAAG;AAC1B,YAAA,OAAO,QAAQ,MAAM,OAAO;AAAA,IACtC;AACI,QAAA,cAAc,MAAM,MAAM,GAAG;AAC7B,YAAM,SAAS,OAAO,IAAI,MAAM,QAAQ,MAAM,MAAM;AAAA,IACxD;AAAA,EACJ;AACJ;AACA,SAAS,8BAA8BA,IAAG,OAAO;AACzC,MAAA,QAAQ,KAAK,GAAG;AAChB,UAAM,eAAeA,GAAE;AACvBA,OAAE,2BAA2B,MAAM;AACf,sBAAA,aAAa,KAAKA,EAAC;AACnCA,SAAE,WAAW;AAAA,IAAA;AAEV,WAAA,MAAM,IAAI,CAAC,OAAO,CAACA,OAAM,CAACA,GAAE,YAAY,GAAGA,EAAC,CAAC;AAAA,EAAA,OAEnD;AACM,WAAA;AAAA,EACX;AACJ;AAmLA,MAAM,IAAI,CAAC,OAAO,QAAQ,IAAI,OAAO,GAAG;AAiBxC,SAAS5B,YAAU,eAAe,YAAY,MAAM;AAChD,oBAAkB,cAAc,SAAS;AACzC,SAAO,aAAa,eAAe,SAAS,EAAE,IAAI,MAAM;AAC5D;AACA,MAAM,eAAeA;AC5sLrB,SAASmC,sBAAoB;AACzB,MAAI,iBAAiB;AACrB;AACU,UAAA,cAAc,GAAG;AACvB,UAAM,WAAW,eAAe,YAAY,WAAW,YAAY,WAAW;AAC7D,qBAAA,gBAAgB,QAAQ,KAAK;AAAA,EAClD;AACO,SAAA;AACX;AAEA,SAAS,qBAAqB,MAAM,KAAK;AACrC,UAAQ,KAAK,GAAG,IAAI,KAAK,GAAG,EAAE;AAClC;AACA,SAAS,iBAAiB,MAAM,MAAM,UAAU,QAAQ;AACpD,MAAI,CAAC,QAAQ;AACA,aAAA;AAAA,EACb;AACA,aAAW,OAAO,UAAU;AACxB,UAAM,SAAS,aAAa,KAAK,KAAK,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC,OAAO,MAAM,GAAG,CAAC;AACzE,QAAA,SAAS,MAAM,GAAG;AAClB,aAAO,MAAM,MAAM;AAAA,IACvB;AAAA,EACJ;AACJ;AACA,SAAS,kBAAkB,MAAM,MAAM,UAAU,QAAQ;AACrD,MAAI,CAAC,UAAU;AACX;AAAA,EACJ;AACI,MAAA,CAAC,QAAQ,QAAQ,GAAG;AACb,WAAA,iBAAiB,MAAM,KAAK,CAAC,4BAAY,OAAO,IAAI,GAAG,UAAU,MAAM;AAAA,EAClF;AACA,QAAM,MAAM,SAAS;AACrB,QAAM,UAAU,KAAK;AACrB,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AACpB,UAAA,OAAO,SAAS,CAAC;AACjB,UAAA,OAAc,uBAAA,OAAO,IAAI;AAC/B,QAAI,UAAU,GAAG;AACb,WAAK,KAAK,IAAI,IAAI,KAAK,CAAC;AAAA,IAC5B;AACiB,qBAAA,MAAM,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,QAAQ,MAAM;AAAA,EAC9D;AACJ;AACA,SAAS,aAAa,MAAM,OAAO,MAAM,UAAU;AAC3C,MAAA,CAAC,cAAc,IAAI,GAAG;AACf,WAAA,EAAE,MAAM;EACnB;AACA,QAAM,EAAE,MAAM,UAAU,UAAA,IAAc;AAEtC,MAAI,YAAY,UAAU;AACtB,WAAO,6BAA6B,OAAO;AAAA,EAC/C;AAEI,MAAA,SAAS,QAAQ,CAAC,UAAU;AAC5B;AAAA,EACJ;AAEA,MAAI,QAAQ,MAAM;AACd,QAAI,UAAU;AACd,UAAM,QAAQ,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAC1C,UAAM,gBAAgB,CAAA;AAEtB,aAAS,IAAI,GAAG,IAAI,MAAM,UAAU,CAAC,SAAS,KAAK;AACzC,YAAA,EAAE,OAAO,iBAAiB,WAAW,OAAO,MAAM,CAAC,CAAC;AAC5C,oBAAA,KAAK,gBAAgB,EAAE;AAC3B,gBAAA;AAAA,IACd;AACA,QAAI,CAAC,SAAS;AACH,aAAA,sBAAsB,MAAM,OAAO,aAAa;AAAA,IAC3D;AAAA,EACJ;AAEA,MAAI,WAAW;AACX,WAAO,UAAU,KAAK;AAAA,EAC1B;AACJ;AACA,MAAM,uCAAqC,uCAAuC;AAClF,SAAS,WAAW,OAAO,MAAM;AACzB,MAAA;AACE,QAAA,eAAe,QAAQ,IAAI;AAC7B,MAAA,aAAa,YAAY,GAAG;AAC5B,UAAM,IAAI,OAAO;AACT,YAAA,MAAM,aAAa;AAEvB,QAAA,CAAC,SAAS,MAAM,UAAU;AAC1B,cAAQ,iBAAiB;AAAA,IAC7B;AAAA,EAAA,WAEK,iBAAiB,UAAU;AAChC,YAAQ,SAAS,KAAK;AAAA,EAAA,WAEjB,iBAAiB,SAAS;AAC/B,YAAQ,QAAQ,KAAK;AAAA,EAAA,OAEpB;AACD;AACI,cAAQ,iBAAiB;AAAA,IAC7B;AAAA,EACJ;AACO,SAAA;AAAA,IACH;AAAA,IACA;AAAA,EAAA;AAER;AACA,SAAS,sBAAsB,MAAM,OAAO,eAAe;AACnD,MAAA,UAAU,6CAA6C,IAAI,eAC9C,cAAc,IAAI,UAAU,EAAE,KAAK,IAAI,CAAC;AACnD,QAAA,eAAe,cAAc,CAAC;AAC9B,QAAA,eAAe,UAAU,KAAK;AAC9B,QAAA,gBAAgB,WAAW,OAAO,YAAY;AAC9C,QAAA,gBAAgB,WAAW,OAAO,YAAY;AAEhD,MAAA,cAAc,WAAW,KACzB,aAAa,YAAY,KACzB,CAAC,UAAU,cAAc,YAAY,GAAG;AACxC,eAAW,eAAe,aAAa;AAAA,EAC3C;AACA,aAAW,SAAS,YAAY;AAE5B,MAAA,aAAa,YAAY,GAAG;AAC5B,eAAW,cAAc,aAAa;AAAA,EAC1C;AACO,SAAA;AACX;AACA,SAAS,QAAQ,MAAM;AACnB,QAAM,QAAQ,QAAQ,KAAK,SAAS,EAAE,MAAM,oBAAoB;AACzD,SAAA,QAAQ,MAAM,CAAC,IAAI;AAC9B;AACA,SAAS,WAAW,OAAO,MAAM;AAC7B,MAAI,SAAS,UAAU;AACnB,WAAO,IAAI,KAAK;AAAA,EAAA,WAEX,SAAS,UAAU;AACjB,WAAA,GAAG,OAAO,KAAK,CAAC;AAAA,EAAA,OAEtB;AACD,WAAO,GAAG,KAAK;AAAA,EACnB;AACJ;AACA,SAAS,aAAa,MAAM;AACxB,QAAM,gBAAgB,CAAC,UAAU,UAAU,SAAS;AACpD,SAAO,cAAc,KAAK,CAAC,SAAS,KAAK,YAAA,MAAkB,IAAI;AACnE;AACA,SAAS,aAAa,MAAM;AACxB,SAAO,KAAK,KAAK,CAAC,SAAS,KAAK,YAAA,MAAkB,SAAS;AAC/D;AAEA,SAAS,SAAS,IAAI;AAClB,SAAO,WAAY;AACX,QAAA;AACO,aAAA,GAAG,MAAM,IAAI,SAAS;AAAA,aAE1B,GAAG;AAEN,cAAQ,MAAM,CAAC;AAAA,IACnB;AAAA,EAAA;AAER;AAEA,IAAI,mBAAmB;AACvB,MAAM,kBAAkB,CAAA;AACxB,SAAS,kBAAkB,IAAI,MAAM,UAAU,YAAY,OAAO;AAC9D,kBAAgB,EAAE,IAAI;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEG,SAAA;AACX;AAEA,SAAS,eAAe,IAAI,KAAK,QAAQ;AACjC,MAAA,OAAO,OAAO,UAAU;AAClB,UAAA,OAAO,gBAAgB,EAAE;AAC/B,QAAI,MAAM;AACF,UAAA,CAAC,KAAK,WAAW;AACjB,eAAO,gBAAgB,EAAE;AAAA,MAC7B;AACO,aAAA,KAAK,SAAS,KAAK,MAAM;AAAA,IACpC;AAAA,EACJ;AACO,SAAA;AACX;AACA,MAAM,cAAc;AACpB,MAAM,WAAW;AACjB,MAAM,eAAe;AACrB,SAAS,gBAAgB,MAAM;AAC3B,QAAM,eAAe,CAAA;AACrB,aAAW,QAAQ,MAAM;AACf,UAAA,KAAK,KAAK,IAAI;AAChB,QAAA,WAAW,EAAE,GAAG;AACH,mBAAA,IAAI,IAAI,SAAS,EAAE;AAChC,aAAO,KAAK,IAAI;AAAA,IACpB;AAAA,EACJ;AACO,SAAA;AACX;AACA,SAAS,gBAAgB,QAAQ,MAAM;AACnC,MAAI,CAAC,UAAU,OAAO,QAAQ,OAAO,MAAM,IAAI;AAC3C,WAAO,OAAO;AAAA,EAClB;AACA,SAAO,OAAO,OAAO,UAAU,OAAO,QAAQ,OAAO,CAAC;AAC1D;AACA,SAAS,uBAAuB,MAAM,OAAO,CAAA,GAAI,EAAE,WAAW,cAAkB,IAAA,IAAI;AAC5E,MAAA,CAAC,cAAc,IAAI,GAAG;AACtB,WAAO,CAAA;AAAA,EACX;AACA,QAAM,EAAE,SAAS,MAAM,SAAS,IAAI,gBAAgB,IAAI;AAClD,QAAA,aAAa,WAAW,OAAO;AAC/B,QAAA,UAAU,WAAW,IAAI;AACzB,QAAA,cAAc,WAAW,QAAQ;AACvC,QAAM,aAAa;AACD,oBAAA,YAAY,MAAM,CAAC,QAAQ;AACzC,UAAM,OAAO;AACb,QAAI,SAAS,gBAAgB,IAAI,QAAQ,IAAI;AAClC,eAAA,SAAS,KAAK,UAAU,GAAG;AAClC,QAAA,IAAI,WAAW,OAAO,OAAO;AAC7B,iBAAW,aAAa,KAAK,cAAc,KAAK,IAAI;AACpD,oBAAc,QAAQ,GAAG;AAAA,IAAA,OAExB;AACD,iBAAW,KAAK,GAAG;AAAA,IACvB;AACA,mBAAe,SAAS,GAAG;AAAA,EAAA,CAC9B;AACM,SAAA;AACX;AAEA,MAAM,eAAe;AACrB,MAAM,YAAY;AAClB,MAAM,gBAAgB;AACtB,MAAM,qBAAqB,CAAA;AAC3B,MAAM,qBAAqB,CAAA;AAC3B,SAAS,YAAY,MAAM,QAAQ;AAC/B,SAAO,SAAU,MAAM;AACZ,WAAA,KAAK,MAAM,MAAM,KAAK;AAAA,EAAA;AAErC;AACA,SAAS,MAAM,OAAO,MAAM,QAAQ;AAChC,MAAI,UAAU;AACd,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAC7B,UAAA,OAAO,MAAM,CAAC;AACpB,QAAI,SAAS;AACT,gBAAU,QAAQ,QAAQ,YAAY,MAAM,MAAM,CAAC;AAAA,IAAA,OAElD;AACK,YAAA,MAAM,KAAK,MAAM,MAAM;AACzB,UAAA,UAAU,GAAG,GAAG;AACN,kBAAA,QAAQ,QAAQ,GAAG;AAAA,MACjC;AACA,UAAI,QAAQ,OAAO;AACR,eAAA;AAAA,UACH,OAAO;AAAA,UAAE;AAAA,UACT,QAAQ;AAAA,UAAE;AAAA,QAAA;AAAA,MAElB;AAAA,IACJ;AAAA,EACJ;AACA,SAAQ,WAAW;AAAA,IACf,KAAK,UAAU;AACX,aAAO,SAAS,IAAI;AAAA,IACxB;AAAA,IACA,QAAQ;AAAA,IAAE;AAAA,EAAA;AAElB;AACA,SAAS,eAAeC,eAAc,UAAU,IAAI;AAChD,GAAC,cAAc,WAAW,aAAa,EAAE,QAAQ,CAAC,SAAS;AACjD,UAAA,QAAQA,cAAa,IAAI;AAC3B,QAAA,CAAC,QAAQ,KAAK,GAAG;AACjB;AAAA,IACJ;AACM,UAAA,cAAc,QAAQ,IAAI;AAChC,YAAQ,IAAI,IAAI,SAAS,oBAAoB,KAAK;AAC9C,YAAM,OAAO,KAAK,OAAO,EAAE,KAAK,CAACC,SAAQ;AACrC,eAAQ,WAAW,WAAW,KAAK,YAAYA,IAAG,KAAMA;AAAAA,MAAA,CAC3D;AAAA,IAAA;AAAA,EACL,CACH;AACM,SAAA;AACX;AACA,SAAS,mBAAmB,QAAQ,aAAa;AAC7C,QAAM,mBAAmB,CAAA;AACrB,MAAA,QAAQ,mBAAmB,WAAW,GAAG;AACxB,qBAAA,KAAK,GAAG,mBAAmB,WAAW;AAAA,EAC3D;AACM,QAAA,cAAc,mBAAmB,MAAM;AAC7C,MAAI,eAAe,QAAQ,YAAY,WAAW,GAAG;AAChC,qBAAA,KAAK,GAAG,YAAY,WAAW;AAAA,EACpD;AACiB,mBAAA,QAAQ,CAAC,SAAS;AACjB,kBAAA,KAAK,WAAW,KAAK;AAAA,EAAA,CACtC;AACM,SAAA;AACX;AACA,SAAS,uBAAuB,QAAQ;AAC9B,QAAA,cAAqB,uBAAA,OAAO,IAAI;AACtC,SAAO,KAAK,kBAAkB,EAAE,QAAQ,CAAC,SAAS;AAC9C,QAAI,SAAS,eAAe;AACxB,kBAAY,IAAI,IAAI,mBAAmB,IAAI,EAAE,MAAM;AAAA,IACvD;AAAA,EAAA,CACH;AACK,QAAA,oBAAoB,mBAAmB,MAAM;AACnD,MAAI,mBAAmB;AACnB,WAAO,KAAK,iBAAiB,EAAE,QAAQ,CAAC,SAAS;AAC7C,UAAI,SAAS,eAAe;AACZ,oBAAA,IAAI,KAAK,YAAY,IAAI,KAAK,CAAI,GAAA,OAAO,kBAAkB,IAAI,CAAC;AAAA,MAChF;AAAA,IAAA,CACH;AAAA,EACL;AACO,SAAA;AACX;AACA,SAAS,UAAU,QAAQ,KAAK,SAAS,QAAQ;AACvC,QAAA,cAAc,uBAAuB,MAAM;AACjD,MAAI,eAAe,OAAO,KAAK,WAAW,EAAE,QAAQ;AAC5C,QAAA,QAAQ,YAAY,MAAM,GAAG;AAC7B,YAAM,MAAM,MAAM,YAAY,QAAQ,OAAO;AACtC,aAAA,IAAI,KAAK,CAACC,aAAY;AAElB,eAAA,IAAI,eAAe,uBAAuB,MAAM,GAAGA,QAAO,GAAG,GAAG,MAAM;AAAA,MAAA,CAChF;AAAA,IAAA,OAEA;AACD,aAAO,IAAI,eAAe,aAAa,OAAO,GAAG,GAAG,MAAM;AAAA,IAC9D;AAAA,EACJ;AACO,SAAA,IAAI,SAAS,GAAG,MAAM;AACjC;AAEA,SAAS,YAAY,MAAM;AACvB,MAAI,cAAc,IAAI,KAClB,CAAC,aAAa,UAAU,YAAY,EAAE,KAAK,CAAC,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,GAAG;AACnE,WAAA;AAAA,EACX;AACO,SAAA;AACX;AACA,SAAS,cAAc,SAAS;AAQrB,SAAA;AACX;AACA,SAAS,YAAY,MAAM,IAAI;AAC3B,SAAO,CAAC,OAAO,OAAO,SAAS;AACvB,QAAA,YAAY,IAAI,GAAG;AACnB,aAAO,mBAAmB,MAAM,UAAU,MAAM,IAAI,MAAM,IAAI,CAAC;AAAA,IACnE;AACA,WAAO,mBAAmB,MAAM,cAAc,IAAI,QAAQ,CAAC,SAAS,WAAW;AACjE,gBAAA,MAAM,IAAI,OAAO,MAAM,EAAE,SAAS,SAAS,MAAM,QAAQ,GAAG,IAAI;AAAA,IAC7E,CAAA,CAAC,CAAC;AAAA,EAAA;AAEX;AAEA,SAAS,cAAc,MAAM,SAAS;AAClC,OAAK,CAAC;AACN;AACI;AAAA,EACJ;AACJ;AACA,SAAS,cAAc,IAAI,MAAM,KAAK;AAClC,QAAM,SAAS;AAAA,IACX,QAAQ,OAAO;AAAA,EAAA;AAEnB,SAAO,eAAe,IAAI,OAAQ,OAAO,CAAC,GAAI,MAAM,CAAC;AACzD;AACA,SAAS,WAAW,IAAI,MAAM,QAAQ,SAAS,CAAA,GAAI;AAC/C,QAAM,eAAe,OAAO;AAC5B,MAAI,YAAY;AAChB,MAAI,CAAC,QAAQ;AACG,gBAAA;AAAA,EAEP,WAAA,OAAO,QAAQ,YAAY,MAAM,GAAG;AAC7B,gBAAA;AAAA,EAAA,OAEX;AACD,gBAAY,eAAe,MAAM;AAAA,EACrC;AACA;AACI,WAAO,OAAO;AAAA,EAClB;AACA,MAAI,MAAM,OAAO,EAAE,QAAQ,UAAA,GAAa,MAAM;AACvC,SAAA,eAAe,IAAI,GAAG;AACjC;AACA,SAAS,gBAAgB,MAAM,MAAM,UAAU,SAAS;AACP;AACvB,sBAAA,MAAM,MAAM,QAAQ;AAAA,EAC1C;AACM,QAAA,SAAS,cAAc,IAAI;AACjC,MAAI,QAAQ;AACD,WAAA;AAAA,EACX;AACJ;AACA,SAAS,YAAY,QAAQ;AACzB,MAAI,CAAC,UAAU,SAAS,MAAM,GAAG;AACtB,WAAA;AAAA,EACX;AACA,MAAI,OAAO,OAAO;AAEd,QAAK,OAAO,eAAe,eAAe,CAAC,WAAW,gBAAiB;AACnE,cAAQ,MAAM,OAAO,UAAU,OAAO,OAAO,KAAK;AAAA,IACtD;AACA,WAAO,OAAO;AAAA,EAClB;AACO,SAAA;AACX;AACA,SAAS,eAAe,MAAM,IAAI,UAAU,SAAS;AACjD,SAAO,CAAC,SAAS;AACb,UAAM,KAAK,uBAAuB,MAAM,MAAM,OAAO;AACrD,UAAM,SAAS,gBAAgB,MAAM,CAAC,IAAI,GAAG,QAAQ;AACrD,QAAI,QAAQ;AACD,aAAA,WAAW,IAAI,MAAM,MAAM;AAAA,IACtC;AACA,WAAO,GAAG,MAAM;AAAA,MACZ,SAAS,CAAC,QAAQ,cAAc,IAAI,MAAM,GAAG;AAAA,MAC7C,QAAQ,CAACC,SAAQ,WAAW,WAAW,IAAI,MAAM,YAAYA,OAAM,GAAG,MAAM;AAAA,IAAA,CAC/E;AAAA,EAAA;AAET;AACA,SAAS,eAAe,MAAM,IAAI,UAAU,SAAS;AACjD,SAAO,IAAI,SAAS;AAChB,UAAM,SAAS,gBAAgB,MAAM,MAAM,QAAQ;AACnD,QAAI,QAAQ;AACF,YAAA,IAAI,MAAM,MAAM;AAAA,IAC1B;AACO,WAAA,GAAG,MAAM,MAAM,IAAI;AAAA,EAAA;AAElC;AACA,SAAS,gBAAgB,MAAM,IAAI,UAAU,SAAS;AAClD,SAAO,eAAe,MAAM,IAAI,UAAU,OAAO;AACrD;AACA,SAAS,cAAc,MAAM,IAAI,UAAU,SAAS;AAChD,SAAO,eAAe,MAAM,IAA8C,QAAoB;AAClG;AACA,SAAS,eAAe,MAAM,IAAI,UAAU,SAAS;AAC1C,SAAA,YAAY,MAAM,gBAAgB,MAAM,IAA8C,UAAsB,OAAO,CAAC;AAC/H;AAEA,MAAM,aAAa;AACnB,MAAM,iBAAiB;AAAA,EACnB;AAAA,IACI,MAAM;AAAA,IACN,MAAM,CAAC,QAAQ,MAAM;AAAA,IACrB,UAAU;AAAA,EACd;AACJ;AAEA,MAAM,MAAM;AACZ,MAAM,oBAAoB;AAC1B,IAAI,QAAQ;AACZ,IAAI,cAAc;AAClB,IAAI,YAAY;AAChB,SAAS,mBAAmB;AAClB,QAAA,EAAE,aAAa,YAAY,SAAS,IAAI,OAAO,OAAO,CAAC,GAAG,GAAG,iBAAiB;AAAA,IAC5E,UAAU,GAAG,cAAA,EAAgB;AAAA,EAAA,CAChC;AAES,gBAAA;AACF,cAAA;AACZ,UAAQ,aAAa;AACzB;AACA,MAAM,SAAS,cAAc,YAAY,CAAC,QAAQ,mBAAmB;AACjE,MAAI,gBAAgB,GAAG;AACF;EACrB;AACA,WAAS,OAAO,MAAM;AACtB,MAAI,WAAW,GAAG;AACP,WAAA;AAAA,EACX;AACA,MAAI,QAAQ,kBAAkB;AAC1B,MAAA,SAAU,SAAS,oBAAqB;AAC5C,MAAI,SAAS,GAAG;AACZ,aAAS,CAAC;AAAA,EACd;AACS,WAAA,KAAK,MAAM,SAAS,GAAG;AAChC,MAAI,WAAW,GAAG;AACV,QAAA,cAAc,KAAK,CAAC,OAAO;AAClB,eAAA;AAAA,IAAA,OAER;AACQ,eAAA;AAAA,IACb;AAAA,EACJ;AACO,SAAA,SAAS,IAAI,CAAC,SAAS;AAClC,GAAG,cAAc;AAEjB,SAAS,MAAM,MAAM,aAAa,MAAM;AACpC,MAAI,UAAU;AACV,SAAK,KAAK,QAAQ;AAAA,EACtB;AACA,UAAQ,IAAI,EAAE,MAAM,SAAS,IAAI;AACrC;AAEA,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB;AAC/B,MAAM,yBAAyB;AAAA,EAC3B;AAAA,IACI,MAAM;AAAA,IACN,MAAM,CAAC,QAAQ,MAAM;AAAA,IACrB,UAAU;AAAA,EACd;AACJ;AACA,MAAM,4BAA4B;AAElC,SAAS,qBAAqBH,eAAc,aAAa;AACrD,SAAO,KAAK,WAAW,EAAE,QAAQ,CAAC,SAAS;AACvC,QAAI,WAAW,YAAY,IAAI,CAAC,GAAG;AAC/BA,oBAAa,IAAI,IAAI,UAAUA,cAAa,IAAI,GAAG,YAAY,IAAI,CAAC;AAAA,IACxE;AAAA,EAAA,CACH;AACL;AACA,SAAS,sBAAsBA,eAAc,aAAa;AAClD,MAAA,CAACA,iBAAgB,CAAC,aAAa;AAC/B;AAAA,EACJ;AACA,SAAO,KAAK,WAAW,EAAE,QAAQ,CAAC,SAAS;AACjC,UAAA,QAAQA,cAAa,IAAI;AACzB,UAAA,OAAO,YAAY,IAAI;AAC7B,QAAI,QAAQ,KAAK,KAAK,WAAW,IAAI,GAAG;AACpC,aAAO,OAAO,IAAI;AAAA,IACtB;AAAA,EAAA,CACH;AACL;AACA,SAAS,UAAU,WAAW,UAAU;AACpC,QAAM,MAAM,WACN,YACI,UAAU,OAAO,QAAQ,IACzB,QAAQ,QAAQ,IACZ,WACA,CAAC,QAAQ,IACjB;AACC,SAAA,MAAM,YAAY,GAAG,IAAI;AACpC;AACA,SAAS,YAAY,OAAO;AACxB,QAAM,MAAM,CAAA;AACZ,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,QAAI,IAAI,QAAQ,MAAM,CAAC,CAAC,MAAM,IAAI;AAC1B,UAAA,KAAK,MAAM,CAAC,CAAC;AAAA,IACrB;AAAA,EACJ;AACO,SAAA;AACX;AACA,MAAM,iBAAiB,cAAc,qBAAqB,CAAC,QAAQ,gBAAgB;AAC/E,MAAI,SAAS,MAAM,KAAK,cAAc,WAAW,GAAG;AAC3B,yBAAA,mBAAmB,MAAM,MAAM,mBAAmB,MAAM,IAAI,CAAA,IAAK,WAAW;AAAA,EAAA,WAE5F,cAAc,MAAM,GAAG;AAC5B,yBAAqB,oBAAoB,MAAM;AAAA,EACnD;AACJ,GAAG,sBAAsB;AACzB,MAAM,oBAAoB,cAAc,wBAAwB,CAAC,QAAQ,gBAAgB;AACjF,MAAA,SAAS,MAAM,GAAG;AACd,QAAA,cAAc,WAAW,GAAG;AACN,4BAAA,mBAAmB,MAAM,GAAG,WAAW;AAAA,IAAA,OAE5D;AACD,aAAO,mBAAmB,MAAM;AAAA,IACpC;AAAA,EAAA,WAEK,cAAc,MAAM,GAAG;AAC5B,0BAAsB,oBAAoB,MAAM;AAAA,EACpD;AACJ,GAAG,yBAAyB;AAC5B,MAAM,eAAe,CAAA;AAErB,MAAM,SAAS;AACf,MAAM,aAAa;AAAA,EACf;AAAA,IACI,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,EACd;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,EACd;AACJ;AACA,MAAM,WAAW;AACjB,MAAM,eAAe;AACrB,MAAM,UAAU;AAChB,MAAM,cAAc;AAAA,EAChB;AAAA,IACI,MAAM;AAAA,IACN,MAAM,CAAC,QAAQ,KAAK;AAAA,EACxB;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,MAAM,CAAC,UAAU,MAAM;AAAA,EAC3B;AACJ;AACA,MAAM,WAAW;AACjB,MAAM,eAAe;AAAA,EACjB;AAAA,IACI,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,EACd;AACJ;AAEA,MAAM,SAAS;AAAA,EACX,cAAc;AACL,SAAA,WAAW,IAAII;EACxB;AAAA,EACA,GAAG,MAAM,UAAU;AACf,WAAO,KAAK,SAAS,GAAG,MAAM,QAAQ;AAAA,EAC1C;AAAA,EACA,KAAK,MAAM,UAAU;AACjB,WAAO,KAAK,SAAS,KAAK,MAAM,QAAQ;AAAA,EAC5C;AAAA,EACA,IAAI,MAAM,UAAU;AAChB,QAAI,CAAC,MAAM;AACF,WAAA,SAAS,IAAI;AAClB;AAAA,IACJ;AACK,SAAA,SAAS,IAAI,MAAM,QAAQ;AAAA,EACpC;AAAA,EACA,KAAK,SAAS,MAAM;AAChB,SAAK,SAAS,KAAK,MAAM,GAAG,IAAI;AAAA,EACpC;AACJ;AACA,MAAM,WAAW,IAAI;AACrB,MAAM,MAAM,cAAc,QAAQ,CAAC,MAAM,aAAa;AACzC,WAAA,GAAG,MAAM,QAAQ;AAC1B,SAAO,MAAM,SAAS,IAAI,MAAM,QAAQ;AAC5C,GAAG,UAAU;AACb,MAAM,QAAQ,cAAc,UAAU,CAAC,MAAM,aAAa;AAC7C,WAAA,KAAK,MAAM,QAAQ;AAC5B,SAAO,MAAM,SAAS,IAAI,MAAM,QAAQ;AAC5C,GAAG,YAAY;AACf,MAAM,OAAO,cAAc,SAAS,CAAC,MAAM,aAAa;AAEhD,MAAA,CAAC,QAAQ,IAAI;AACb,WAAO,OAAO,CAAC,IAAI,IAAI,CAAA;AACtB,OAAA,QAAQ,CAAC,MAAM;AACP,aAAA,IAAI,GAAG,QAAQ;AAAA,EAAA,CAC3B;AACL,GAAG,WAAW;AACd,MAAM,QAAQ,cAAc,UAAU,CAAC,SAAS,SAAS;AAC5C,WAAA,KAAK,MAAM,GAAG,IAAI;AAC/B,GAAG,YAAY;AAEf,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,SAAS,qBAAqB,SAAS;AAC/B,MAAA;AACO,WAAA,KAAK,MAAM,OAAO;AAAA,WAEtB,GAAG;AAAA,EAAE;AACL,SAAA;AACX;AAKA,SAAS,mBAAmB,MAAM;AAC1B,MAAA,KAAK,SAAS,WAAW;AACf,cAAA;AAAA,EAAA,WAEL,KAAK,SAAS,YAAY;AAC/B,UAAM,KAAK;AACX,gBAAY,KAAK;AACS,8BAAA,KAAK,KAAK,MAAM;AAAA,EAAA,WAErC,KAAK,SAAS,WAAW;AAC9B,UAAM,UAAU;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,qBAAqB,KAAK,OAAO;AAAA,IAAA;AAE3C,aAAS,IAAI,GAAG,IAAI,uBAAuB,QAAQ,KAAK;AAC9C,YAAA,WAAW,uBAAuB,CAAC;AACzC,eAAS,OAAO;AAEhB,UAAI,QAAQ,SAAS;AACjB;AAAA,MACJ;AAAA,IACJ;AAAA,EAAA,WAEK,KAAK,SAAS,SAAS;AACL,2BAAA,QAAQ,CAAC,aAAa;AAChC,eAAA;AAAA,QACL,MAAM;AAAA,QACN,MAAM,qBAAqB,KAAK,OAAO;AAAA,MAAA,CAC1C;AAAA,IAAA,CACJ;AAAA,EACL;AACJ;AACA,MAAM,sBAAsB,CAAA;AAC5B,SAAS,0BAA0BC,MAAK,QAAQ;AACxB,sBAAA,QAAQ,CAAC,aAAa;AACtC,aAASA,MAAK,MAAM;AAAA,EAAA,CACvB;AACD,sBAAoB,SAAS;AACjC;AACA,MAAM,yBAAyB;AAC/B,MAAM,kBAAkB,eAAe,wBAAwB,CAAC,GAAG,EAAE,SAAS,aAAa;AAC/E,UAAA,UAAU,KAAK,MAAM;AACrB,QAAA,OAAO,YAAY,aAAa;AACtB,gBAAA;AACJ,YAAA;AACM,kBAAA;AAAA,IAChB;AACoB,wBAAA,KAAK,CAACA,MAAK,WAAW;AACtC,UAAIA,MAAK;AACG,gBAAA,EAAE,KAAAA,KAAAA,CAAK;AAAA,MAAA,OAEd;AACD,eAAO,MAAM;AAAA,MACjB;AAAA,IAAA,CACH;AACG,QAAA,OAAO,QAAQ,aAAa;AAC5B,gCAA0B,KAAK,SAAS;AAAA,IAC5C;AAAA,EAAA,CACH;AACL,CAAC;AACD,MAAM,yBAAyB,CAAA;AAE/B,MAAM,gBAAgB,CAAC,OAAO;AAC1B,MAAI,uBAAuB,QAAQ,EAAE,MAAM,IAAI;AAC3C,2BAAuB,KAAK,EAAE;AAAA,EAClC;AACJ;AACA,MAAM,iBAAiB,CAAC,OAAO;AAC3B,MAAI,CAAC,IAAI;AACL,2BAAuB,SAAS;AAAA,EAAA,OAE/B;AACKpB,UAAAA,SAAQ,uBAAuB,QAAQ,EAAE;AAC/C,QAAIA,SAAQ,IAAI;AACW,6BAAA,OAAOA,QAAO,CAAC;AAAA,IAC1C;AAAA,EACJ;AACJ;AAEA,MAAM,cAAc;AACpB,MAAM,iBAAiB;AAEvB,MAAM,qBAAqB,CAAC,qBAAqB;AACjD,MAAM,YAAY,CAAC,WAAW,gBAAgB,cAAc,eAAe;AAE3E,MAAM,YAAY,CAAC,qBAAqB;AACxC,MAAM,kBAAkB;AACxB,SAAS,aAAa,MAAM;AACxB,SAAO,eAAe,KAAK,IAAI,KAAK,mBAAmB,QAAQ,IAAI,MAAM;AAC7E;AACA,SAAS,UAAU,MAAM;AACrB,SAAO,YAAY,KAAK,IAAI,KAAK,UAAU,QAAQ,IAAI,MAAM;AACjE;AACA,SAAS,cAAc,MAAM;AACzB,SAAO,gBAAgB,KAAK,IAAI,KAAK,SAAS;AAClD;AACA,SAAS,UAAU,MAAM;AACd,SAAA,UAAU,QAAQ,IAAI,MAAM;AACvC;AACA,SAAS,cAAc,MAAM;AACrB,MAAA,aAAa,IAAI,KAAK,UAAU,IAAI,KAAK,cAAc,IAAI,GAAG;AACvD,WAAA;AAAA,EACX;AACO,SAAA;AACX;AAEA,IAAI,CAAC,QAAQ,UAAU,SAAS;AACpB,UAAA,UAAU,UAAU,SAAU,WAAW;AAC7C,UAAM,UAAU,KAAK;AACd,WAAA,KAAK,KAAK,CAAC,UAAU,QAAQ,QAAQ,aAAa,UAAU,CAAC,EAAE,KAAK,MAAM,KAAK,GAAG,CAAC,WAAW,QAAQ,QAAQ,aAAa,UAAU,CAAC,EAAE,KAAK,MAAM;AAChJ,YAAA;AAAA,IACT,CAAA,CAAC;AAAA,EAAA;AAEV;AACA,SAAS,UAAU,MAAM,KAAK;AACtB,MAAA,CAAC,cAAc,IAAI,GAAG;AACf,WAAA;AAAA,EACX;AACI,MAAA,CAAC,WAAW,GAAG,GAAG;AACX,WAAA;AAAA,EACX;AACA,SAAO,SAAS,WAAW,UAAU,OAAO,MAAM;AAC1C,QAAA,WAAW,QAAQ,OAAO,KAC1B,WAAW,QAAQ,IAAI,KACvB,WAAW,QAAQ,QAAQ,GAAG;AAC9B,aAAO,mBAAmB,MAAM,UAAU,MAAM,KAAK,SAAS,IAAI,CAAC;AAAA,IACvE;AACA,WAAO,mBAAmB,MAAM,cAAc,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC3E,gBAAU,MAAM,KAAK,OAAO,CAAA,GAAI,SAAS;AAAA,QACrC,SAAS;AAAA,QACT,MAAM;AAAA,MAAA,CACT,GAAG,IAAI;AAAA,IACX,CAAA,CAAC,CAAC;AAAA,EAAA;AAEX;AAEA,MAAM,YAAY,CAAC,WAAW,QAAQ,UAAU,UAAU;AAC1D,SAAS,YAAYqB,YAAW;AACnB,WAAA,gBAAgB,YAAY,QAAQ,aAAa;AACtD,WAAO,SAAU,KAAK;AAClB,aAAO,OAAO,mBAAmB,YAAY,KAAK,WAAW,CAAC;AAAA,IAAA;AAAA,EAEtE;AACS,WAAA,YAAY,YAAY,UAAU,aAAa,IAAI,cAAc,CAAA,GAAI,eAAe,OAAO;AAC5F,QAAA,cAAc,QAAQ,GAAG;AAEzB,YAAM,SAAU,iBAAiB,OAAO,WAAW,CAAA;AAC/C,UAAA,WAAW,UAAU,GAAG;AACxB,qBAAa,WAAW,UAAU,MAAM,KAAK,CAAA;AAAA,MACjD;AACA,iBAAW,OAAO,UAAU;AACpB,YAAA,OAAO,YAAY,GAAG,GAAG;AACrB,cAAA,YAAY,WAAW,GAAG;AAC1B,cAAA,WAAW,SAAS,GAAG;AACvB,wBAAY,UAAU,SAAS,GAAG,GAAG,UAAU,MAAM;AAAA,UACzD;AACA,cAAI,CAAC,WAAW;AAEZ,oBAAQ,KAAK,SAAS,UAAU,SAAS,GAAG,EAAE;AAAA,UAAA,WAEzC,SAAS,SAAS,GAAG;AAEnB,mBAAA,SAAS,IAAI,SAAS,GAAG;AAAA,UAAA,WAE3B,cAAc,SAAS,GAAG;AAE/B,mBAAO,UAAU,OAAO,UAAU,OAAO,GAAG,IAAI,UAAU;AAAA,UAC9D;AAAA,QAEK,WAAA,UAAU,QAAQ,GAAG,MAAM,IAAI;AAC9B,gBAAA,WAAW,SAAS,GAAG;AACzB,cAAA,WAAW,QAAQ,GAAG;AACtB,mBAAO,GAAG,IAAI,gBAAgB,YAAY,UAAU,WAAW;AAAA,UACnE;AAAA,QAAA,OAEC;AACD,cAAI,CAAC,gBAAgB,CAAC,OAAO,QAAQ,GAAG,GAAG;AAChC,mBAAA,GAAG,IAAI,SAAS,GAAG;AAAA,UAC9B;AAAA,QACJ;AAAA,MACJ;AACO,aAAA;AAAA,IAAA,WAEF,WAAW,QAAQ,GAAG;AACvB,UAAA,WAAW,UAAU,GAAG;AACb,mBAAA,UAAU,CAAA,CAAE;AAAA,MAC3B;AACW,iBAAA,gBAAgB,YAAY,UAAU,WAAW;AAAA,IAChE;AACO,WAAA;AAAA,EACX;AACA,WAAS,mBAAmB,YAAY,KAAK,aAAa,kBAAkB,OAAO;AAC3E,QAAA,WAAWA,WAAU,WAAW,GAAG;AAE7BA,YAAAA,WAAU,YAAY,YAAY,GAAG;AAAA,IAC/C;AACA,UAAM,sBAAsB,mBAAoB;AAChD,WAAO,YAAY,YAAY,KAAK,aAAa,CAAA,GAAI,mBAAmB;AAAA,EAC5E;AACO,SAAA,SAAS,QAAQ,YAAY,QAAQ;AAOlC,UAAA,cAAc,OAAOA,YAAW,UAAU;AAChD,QAAI,CAAC,eAAe,OAAO,GAAG,UAAU,MAAM,YAAY;AAC/C,aAAA;AAAA,IACX;AACM,UAAA,cAAc,eAChB,WAAWA,WAAU,WAAW,KAChC,aAAa,UAAU,KACvB,UAAU,UAAU;AAClB,UAAA,YAAY,eAAe,WAAW,MAAM;AAC9C,QAAA,CAAC,eAAe,CAAC,QAAQ;AAEzB,aAAO,WAAY;AACP,gBAAA,MAAM,aAAa,UAAU,EAAE;AAAA,MAAA;AAAA,IAE/C;AACI,QAAA,CAAC,eAAe,CAAC,WAAW;AACrB,aAAA;AAAA,IACX;AACM,UAAA,WAAWA,WAAU,UAAU;AAC9B,WAAA,SAAU,MAAM,MAAM;AAErB,UAAA,UAAU,YAAY;AACtB,UAAA,WAAW,QAAQ,GAAG;AACtB,kBAAU,SAAS,IAAI;AAAA,MAC3B;AACA,aAAO,YAAY,YAAY,MAAM,QAAQ,MAAM,QAAQ,WAAW;AAChE,YAAA,OAAO,CAAC,IAAI;AACd,UAAA,OAAO,SAAS,aAAa;AAC7B,aAAK,KAAK,IAAI;AAAA,MAClB;AACM,YAAA,cAAc,GAAG,QAAQ,QAAQ,UAAU,EAAE,MAAM,IAAI,IAAI;AACjE,UAAI,aAAa,UAAU,KAAK,UAAU,UAAU,GAAG;AAC/C,YAAA,eAAe,CAAC,YAAY,UAAU;AACtC,sBAAY,WAAW;AAAA,QAC3B;AAAA,MACJ;AACI,UAAA,UAAU,UAAU,GAAG;AAEvB,eAAO,mBAAmB,YAAY,aAAa,QAAQ,aAAa,aAAa,UAAU,CAAC;AAAA,MACpG;AACO,aAAA;AAAA,IAAA;AAAA,EACX;AAER;AAEA,MAAM,YAAY,MAAM;AAEd,QAAA,MAAM,WAAW,MAAM,KAAK,OAAO,EAAE,cAAc,MAAM;AAC3D,MAAA,OAAO,IAAI,KAAK;AAChB,WAAO,IAAI,IAAI;AAAA,EACnB;AACA,SAAOP,oBAAkB;AAC7B;AACA,MAAM,YAAY,CAAC,WAAW;AAC1B,QAAM,MAAM,WAAW,MAAM,KAAK,OAAO;AACzC,MAAI,CAAC,KAAK;AACC,WAAA;AAAA,EACX;AACM,QAAA,YAAY,IAAI,IAAI;AAC1B,MAAI,cAAc,QAAQ;AACtB,QAAI,IAAI,UAAU;AAClB,4BAAwB,QAAQ,CAAC,OAAO,GAAG,EAAE,OAAQ,CAAA,CAAC;AAC/C,WAAA;AAAA,EACX;AACO,SAAA;AACX;AACA,MAAM,0BAA0B,CAAA;AAChC,MAAM,iBAAiB,CAAC,OAAO;AAC3B,MAAI,wBAAwB,QAAQ,EAAE,MAAM,IAAI;AAC5C,4BAAwB,KAAK,EAAE;AAAA,EACnC;AACJ;AACA,IAAI,OAAO,WAAW,aAAa;AAC/B,SAAO,YAAY;AACvB;AAEA,MAAM,WAAW;AACjB,IAAI;AACJ,SAAS,YAAYQ,UAAS,IAAI;AACvB,SAAA,SAAS,YAAY,GAAG,OAAO;AACvB,eAAA,YAAYA,QAAO,eAAe,QAAQ;AACrD,QAAI,CAAC,UAAU;AACA,iBAAA,KAAK,IAAQ,IAAA,KAAK,KAAK,MAAM,KAAK,WAAW,GAAG;AAC3D,SAAG,WAAW;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,MAAA,CACT;AAAA,IACL;AACA,UAAM,WAAW;AAAA,EAAA;AAEzB;AACA,SAAS,kBAAkB,SAAS,OAAO;AACvC,MAAI,QAAQ,UAAU;AAClB,UAAM,WAAW,QAAQ;AACzB,UAAM,iBAAiB;AAAA,MACnB,KAAK,SAAS;AAAA,MACd,MAAM,SAAS;AAAA,MACf,OAAO,QAAQ,cAAc,SAAS;AAAA,MACtC,QAAQ,QAAQ,eAAe,SAAS;AAAA,IAAA;AAAA,EAEhD;AACJ;AACA,SAAS,UAAU,QAAQ,UAAU;AACjC,MAAI,SAAS;AACb,MAAI,YAAY;AAChB,MAAI,YACC,OAA6B;AACrB,aAAA;AACG,gBAAA;AAAA,EAAA,OAEX;AACD,aAAS,OAAO,MAAM,GAAG,EAAE,CAAC,KAAK;AACjC,gBAAY,OAAO,MAAM,GAAG,EAAE,CAAC,KAAK;AAAA,EACxC;AACO,SAAA;AAAA,IACH,QAAQ,OAAO,kBAAkB;AAAA,IACjC;AAAA,EAAA;AAER;AACA,SAAS,mBAAmB,SAAS,OAAO;AACxC,QAAM,EAAE,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,OAAO,SAAA/C,UAAS,UAAU,iBAAiB,YAAY,YAAY,kBAAuB,IAAA;AAGtJ,QAAM,EAAE,QAAQ,UAAA,IAAc,UAAU,QAAQ,QAAQ;AACxD,MAAI,cAAcA;AAEd,MAAA,aAAa,iBAAiB,SAAS,KAAK;AAE5C,MAAA,cAAc,eAAe,KAAK;AAElC,MAAA,YAAY,YAAY,OAAO;AAEnC,MAAI,qBAAqB;AAEzB,MAAI,oBAAoB;AAExB,MAAI,cAAc;AAElB,QAAM,gBAAgB,YAAY,IAAI,QAAQ,MAAM,GAAG;AAEvD,QAAM,aAAa;AAAA,IACf,OAAO;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,aAAa,eAAe,YAAY;AAAA,IACxC,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,aAA6C;AAAA,IAC7C;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,cAAc;AAAA;AAAA,IAEd,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,WAAW;AAAA,EAAA;AAEf,SAAO,OAAO,UAAU;AAC5B;AACA,SAAS,iBAAiB,SAAS,OAAO;AAElC,MAAA,aAAa,QAAQ,cAAc;AACvC;AACI,UAAM,iBAAiB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,MACT,KAAK;AAAA,IAAA;AAEH,UAAA,qBAAqB,OAAO,KAAK,cAAc;AAC/C,UAAA,SAAS,MAAM;AACrB,aAASyB,SAAQ,GAAGA,SAAQ,mBAAmB,QAAQA,UAAS;AACtD,YAAA,KAAK,mBAAmBA,MAAK;AACnC,UAAI,OAAO,QAAQ,EAAE,MAAM,IAAI;AAC3B,qBAAa,eAAe,EAAE;AAC9B;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACO,SAAA;AACX;AACA,SAAS,eAAe,OAAO;AAE3B,MAAI,cAAc;AAClB,MAAI,aAAa;AACb,kBAAc,YAAY;EAC9B;AACO,SAAA;AACX;AACA,SAAS,eAAe,iBAAiB;AAC9B,SAAA,YAAY,UAAc,IAAA;AACrC;AACA,SAAS,YAAY,SAAS;AAC1B,QAAM,YAAY;AAEd,MAAA,YAAY,QAAQ,YAAY;AACpC;AACI,QAAI,QAAQ,aAAa;AACrB,kBAAY,QAAQ;AAAA,IAEf,WAAA,QAAQ,QAAQ,QAAQ,KAAK,KAAK;AACvC,kBAAY,QAAQ,KAAK;AAAA,IAC7B;AAAA,EACJ;AACO,SAAA;AACX;AAEA,MAAM,gBAAgB;AAAA,EAClB,aAAa,CAAC,SAAS,UAAU;AAC7B,sBAAkB,SAAS,KAAK;AACpB,gBAAA,EAAE,SAAS,KAAK;AAC5B,uBAAmB,SAAS,KAAK;AAAA,EACrC;AACJ;AAEA,MAAM,oBAAoB;AAE1B,MAAM,aAAa,CAAA;AAEnB,MAAM,eAAe;AAAA,EACjB,KAAK,UAAU,QAAQ;AACf,QAAA,eAAe,SAAS,SAAS,OAAO;AACxC,QAAA,MAAM,YAAY,GAAG;AACrB;AAAA,IACJ;AACA,UAAM,OAAO,SAAS;AAClB,QAAA,CAAC,QAAQ,IAAI,GAAG;AAChB;AAAA,IACJ;AACA,UAAM,MAAM,KAAK;AACjB,QAAI,CAAC,KAAK;AACN;AAAA,IACJ;AACA,QAAI,eAAe,GAAG;AACH,qBAAA;AAAA,IAAA,WAEV,gBAAgB,KAAK;AAC1B,qBAAe,MAAM;AAAA,IACzB;AACA,QAAI,eAAe,GAAG;AACX,aAAA,UAAU,KAAK,YAAY;AAClC,aAAO,OAAO,KAAK,OAAO,CAAC,MAAMA,WAAUA,SAAQ,eAAe,SAAS,KAAK,YAAY,IAAI,IAAI;AAAA,IAAA,OAEnG;AACM,aAAA,UAAU,KAAK,CAAC;AAAA,IAC3B;AACO,WAAA;AAAA,MACH,WAAW;AAAA,MACX,MAAM;AAAA,IAAA;AAAA,EAEd;AACJ;AAEA,MAAM,kBAAkB;AAAA,EACpB,KAAK,UAAU,QAAQ;AACnB,WAAO,YAAY,SAAS;AAAA,EAChC;AACJ;AAEA,MAAM,gBAAgB;AAAA,EAClB,aAAa,CAAC,SAAS,UAAU;AAC7B,UAAM,EAAE,OAAO,OAAO,SAAS,IAAI,WAAW,GAAO,IAAA;AACjD,QAAA,aAAa,iBAAiB,SAAS,KAAK;AAC5C,QAAA,cAAc,eAAe,KAAK;AAC1B,gBAAA,EAAE,SAAS,KAAK;AAC5B,UAAM,EAAE,QAAQ,UAAA,IAAc,UAAU,QAAQ,QAAQ;AAChD,YAAA,WAAW,OAAO,OAAO;AAAA,MAC7B;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA;AAAA,IACH,CAAA,CAAC;AAAA,EACN;AACJ;AAEA,MAAM,iBAAiB;AAAA,EACnB,aAAa,CAAC,SAAS,UAAU;AAC7B,UAAM,EAAE,SAAAzB,UAAS,UAAU,YAAY,UAAU;AAC7C,QAAA,YAAY,YAAY,OAAO;AACnC,QAAI,gBAAgB,YAAY,IAAI,QAAQ,MAAM,GAAG;AACrD,UAAM,aAAa;AAAA,MACf,aAAaA;AAAA,MACb;AAAA,MACA,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,aAAa,eAAe,YAAY;AAAA,MACxC,WAAW;AAAA,MACX,aAA6C;AAAA,MAC7C,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,MACpB,mBAAmB;AAAA,IAAA;AAEvB,WAAO,OAAO,UAAU;AAAA,EAC5B;AACJ;AAEA,MAAM,gBAAgB;AAAA,EAClB,aAAa,CAAC,SAAS,UAAU;AAC7B,sBAAkB,SAAS,KAAK;AACxB,YAAA,WAAW,OAAO,OAAO;AAAA,MAC7B,WAAW;AAAA,MACX,cAAc;AAAA,IACjB,CAAA,CAAC;AAAA,EACN;AACJ;AAEA,MAAM,yBAAyB;AAAA,EAC3B,aAAa,SAAU,SAAS,OAAO;AAC7B,UAAA,EAAE,wBAA4B,IAAA;AACpC,UAAM,mBAAmB;AACzB,QAAI,4BAA4B,MAAM;AAClC,YAAM,mBAAmB;AAAA,IAAA,WAEpB,4BAA4B,OAAO;AACxC,YAAM,mBAAmB;AAAA,IAC7B;AAAA,EACJ;AACJ;AAEA,MAAM,UAAU;AAAA,EACZ,KAAK,UAAU;AACX,UAAM,MAAM,OAAO,EAAE,cAAc,KAAK,CAAC,KAAK;AAC1C,QAAA,CAAC,IAAI,KAAK;AACN,UAAA,CAAC,GAAG,kBAAkB;AACtB,WAAG,mBAAmB;MAC1B;AACG,SAAA,iBAAiB,KAAK,QAAQ;AAAA,IAAA,OAEhC;AACD,iBAAW,UAAU,UAAU,IAAI,IAAI,CAAC;AAAA,IAC5C;AAAA,EACJ;AACJ;AACA,MAAM,WAAW;AAAA,EACb,KAAK,UAAU;AACX,UAAM,MAAM,OAAO,EAAE,cAAc,KAAK,CAAC,KAAK;AAC1C,QAAA,CAAC,IAAI,KAAK;AACN,UAAA,CAAC,GAAG,kBAAkB;AACtB;AAAA,MACJ;AACA,YAAMyB,SAAQ,GAAG,iBAAiB,UAAU,CAAC,OAAO,OAAO,QAAQ;AACnE,UAAIA,WAAU,IAAI;AACX,WAAA,iBAAiB,OAAOA,QAAO,CAAC;AAAA,MACvC;AAAA,IAAA,WAEK,SAAS,OAAO;AACrB,YAAM,WAAW,IAAI,IAAI,EAAE,QAAQ;AACnC,UAAI,UAAU;AACV,cAAMA,SAAQ,SAAS,QAAQ,SAAS,KAAK;AAC7C,YAAIA,SAAQ,IAAI;AACH,mBAAA,OAAOA,QAAO,CAAC;AAAA,QAC5B;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,MAAM,eAAe;AAAA,EACjB,OAAO;AACH,QAAI,GAAG,iBAAiB;AACpB,UAAI,GAAG,wBAAwB;AAC3B;AAAA,MACJ;AACA,SAAG,yBAAyB;AAC5B,cAAQ,KAAK,2IAA2I;AAAA,IAC5J;AAAA,EACJ;AACJ;AACA,MAAM,kBAAkB;AAExB,MAAM,WAAW;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACA,SAAS,QAAQ,KAAKqB,YAAW,WAAW,IAAI;AACtC,QAAA,UAAU,YAAYA,UAAS;AACrC,QAAM,mBAAmB;AAAA,IACrB,IAAI,QAAQ,KAAK;AACT,UAAA,OAAO,QAAQ,GAAG,GAAG;AACrB,eAAO,OAAO,GAAG;AAAA,MACrB;AACI,UAAA,OAAO,KAAK,GAAG,GAAG;AAClB,eAAO,UAAU,KAAK,IAAI,GAAG,CAAC;AAAA,MAClC;AACI,UAAA,OAAO,UAAU,GAAG,GAAG;AACvB,eAAO,UAAU,KAAK,SAAS,GAAG,CAAC;AAAA,MACvC;AAGA,aAAO,UAAU,KAAK,QAAQ,KAAK,SAAS,GAAG,CAAC,CAAC;AAAA,IACrD;AAAA,EAAA;AAEJ,SAAO,IAAI,MAAM,IAAI,gBAAgB;AACzC;AAEA,SAAS,gBAAgB,WAAW;AAChC,SAAO,SAASE,aAAY,EAAE,SAAS,SAAS,MAAM,YAAa;AAC3D,QAAA;AACA,QAAA,UAAU,OAAO,GAAG;AACd,YAAA;AAAA,QACF,QAAQ;AAAA,QACR;AAAA,QACA,UAAU,UAAU,OAAO;AAAA,MAAA;AAEpB,iBAAA,OAAO,KAAK,QAAQ,GAAG;AAAA,IAAA,OAEjC;AACK,YAAA;AAAA,QACF,QAAQ,yBAAyB,UAAU;AAAA,MAAA;AAEpC,iBAAA,IAAI,KAAK,KAAK,GAAG;AAAA,IAChC;AACW,eAAA,QAAQ,KAAK,SAAS,GAAG;AAAA,EAAA;AAE5C;AAEA,MAAM,aAAa;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACA,MAAM,uBAAuB,CAAC,YAAY,UAAU,SAAS;AAC7D,MAAM,eAAe,GAAG,uBAClB,GAAG,yBACH;AACN,SAAS,QAAQ,KAAK;AAClB,MAAI,gBACA,aAAa,UAAU,QACvB,qBAAqB,SAAS,GAAG,GAAG;AAC7B,WAAA;AAAA,EACX;AACO,SAAA,WAAW,QAAQ,GAAG,IAAI,MAAM,OAAO,GAAG,GAAG,MAAM;AAC9D;AACA,SAAS,SAAS;AACd,QAAM,QAAQ,CAAA;AACd,aAAW,OAAO,IAAI;AACd,QAAA,QAAQ,GAAG,GAAG;AAER,YAAA,GAAG,IAAI,GAAG,GAAG;AAAA,IACvB;AAAA,EACJ;AACA,MAAI,OAAO,eAAe,eACtB,OAAO,uBAAuB,aAAa;AAC3C,eAAW,KAAK;AAAA,EACpB;AACO,SAAA;AACX;AAEA,MAAMC,UAAQ,CAAC,aAAa,wBAAwB,iBAAiB;AAErE,MAAM,cAAc,gBAAgB;AAAA,EAChC,OAAO,CAAC,QAAQ;AAAA,EAChB,OAAO,CAAC,QAAQ;AAAA,EAChB,SAAS,CAAC,OAAO;AAAA,EACjB,MAAM,CAAC,QAAQ;AACnB,CAAC;AACD,SAAS,mBAAmB,WAAW;AAC7B,QAAA,MAAa,uBAAA,OAAO,IAAI;AACxBA,UAAA,QAAQ,CAAC,SAAS;AAChB,QAAA,IAAI,IAAI,UAAU,IAAI;AAAA,EAAA,CAC7B;AACM,SAAA;AACX;AAMA,SAAS,sBAAsB;AACrB,QAAA,QAAQ,KAAK;AACnB,QAAM,QAAQ,MAAM;AACd,QAAA,KAAK,SAAS,MAAM,WAAW;AACjC,QAAI,UAAU,QAAQ;AAElB,aAAO,MAAM,KAAK,MAAM,UAAU,MAAM;AAAA,IAC5C;AACA,WAAO,MAAM,KAAK,MAAM,mBAAmB,SAAS,CAAC;AAAA,EAAA;AAElD,SAAA;AACX;AACA,MAAM,OAAO,OAAO;AACpB,IAAI,CAAC,KAAK,QAAQ,gBAAgB,GAAG;AACjC,OAAK,iBAAiB,KAAK;AAC/B;AACA,IAAI,CAAC,KAAK,QAAQ,eAAe,GAAG;AAChC,OAAK,gBAAgB,KAAK;AAC9B;AACA,IAAI,CAAC,KAAK,QAAQ,eAAe,GAAG;AAChC,OAAK,gBAAgB,KAAK;AAC9B;AACA,IAAI,WAAW,KAAK,kBAAkB,KAAK,eAAe;AAC1D,IAAI,CAAC,UAAU;AACX,aAAW,KAAK;AACpB;AACA,MAAM,OAAO,WAAW,SAAS,OAAO;AACxC,MAAM,oBAAoB,QAAQ,KAAK,QAAQ,YACzC,KAAK,QAAQ,oBACb,KAAK;AAEX,IAAI,+BAA4B,OAAO;AAAA,EACrC,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,MAAM,gBAAgB;AAAA,EAClB,KAAK,UAAU,QAAQ;AAGnB,QAAI,SAAS,oBAAoB,CAAC,OAAO,gBAAgB;AAErD,aAAO,iBAAiB,SAAS;AAAA,IACrC;AAEA,QAAI,SAAS,mBAAmB,CAAC,OAAO,eAAe;AAEnD,aAAO,gBAAgB,SAAS;AAAA,IACpC;AAAA,EACJ;AACJ;AAEA,IAAI,mCAAgC,OAAO;AAAA,EACzC,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,MAAM,OAAO,OAAO;AACpB,IAAI,QAAQ,QAAQ,OAAO,WAAW,IAAI;AC76C1C,SAAS,kBAAkB,OAAO,MAAM,IAAI;AACxC,MAAI,SAAS,MAAM,QAAQ,MAAM,MAAM;AAC5B,WAAA,QAAQ,QAAQ,IAAI;AAC/B,SAAO,MACF,MAAM,GAAG,EACT,OAAO,CAAC,SAASC,UAAS;AACpB,WAAA,QAAQ,KAAK,CAAC,WAAW;AAC5B,UAAI,UAAU;AACH,eAAA,QAAQ,QAAQ,MAAM;AAC1B,aAAA,iBAAiBA,OAAM,MAAM,EAAE;AAAA,IAAA,CACzC;AAAA,EACF,GAAA,QAAQ,QAAQ,IAAI,CAAC;AAC5B;AACA,MAAM,iBAAiB;AACvB,SAAS,iBAAiBA,OAAM,MAAM,IAAI;AACtC,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC9B,UAAA,SAASZ,MAAI,cAAc;AAAA,MAC7B,KAAK,QAAQY,KAAI,IAAI,IAAI,IAAI,EAAE;AAAA,MAC/B,UAAU;AAAA;AAAA,MACV,OAAO;AACH,gBAAQ,IAAI;AAAA,MAChB;AAAA,IAAA,CACH;AACK,UAAA,QAAQ,WAAW,MAAM;AAE3B,aAAO,MAAM;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,MAAA,CACX;AACD,cAAQ,IAAI;AAAA,OACb,cAAc;AACV,WAAA,OAAO,CAAC,MAAM;AACjB,mBAAa,KAAK;AAClB,cAAQ,MAAM;AAAA,IAAA,CACjB;AACM,WAAA,QAAQ,CAAC,MAAM;AAClB,mBAAa,KAAK;AAClB,cAAQ,IAAI;AAAA,IAAA,CACf;AACM,WAAA,QAAQ,CAAC,MAAM;AAClB,mBAAa,KAAK;AAClB,cAAQ,IAAI;AAAA,IAAA,CACf;AAAA,EAAA,CACJ;AACL;AAEA,SAAS,cAAc,MAAM,MAAM;AAC3B,MAAA;AACO,WAAA;AAAA,MACH;AAAA,MACA,MAAM,WAAW,IAAI;AAAA,IAAA;AAAA,WAGtB,GAAG;AAAA,EAEV;AACO,SAAA;AAAA,IACH;AAAA,IACA,MAAM,CAAC;AAAA,EAAA;AAEf;AACA,SAAS,WAAW,MAAM;AACtB,SAAO,KAAK,IAAI,CAAC,QAAQ,UAAU,GAAG,CAAC;AAC3C;AACA,SAAS,UAAU,KAAK,QAAQ,GAAG;AAC/B,MAAI,SAAS,GAAG;AACL,WAAA;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,IAAA;AAAA,EAEf;AACA,QAAM,OAAO,OAAO;AACpB,UAAQ,MAAM;AAAA,IACV,KAAK;AACD,aAAO,aAAa,GAAG;AAAA,IAC3B,KAAK;AACD,aAAO,aAAa,GAAG;AAAA,IAC3B,KAAK;AACD,aAAO,cAAc,GAAG;AAAA,IAC5B,KAAK;AACM,aAAA,aAAa,KAAK,KAAK;AAAA,IAClC,KAAK;AACD,aAAO,gBAAgB;AAAA,IAC3B,KAAK;AACD,aAAO,eAAe,GAAG;AAAA,IAC7B,KAAK,UACD;AACI,aAAO,aAAa,GAAG;AAAA,IAC3B;AAAA,IACJ,KAAK;AACD,aAAO,aAAa,GAAG;AAAA,EAC/B;AACJ;AACA,SAAS,eAAe,OAAO;AACpB,SAAA;AAAA,IACH,MAAM;AAAA,IACN,OAAO,YAAY,MAAM,IAAI;AAAA,EAAA;AAErC;AACA,SAAS,kBAAkB;AAChB,SAAA;AAAA,IACH,MAAM;AAAA,EAAA;AAEd;AACA,SAAS,cAAc,OAAO;AACnB,SAAA;AAAA,IACH,MAAM;AAAA,IACN,OAAO,OAAO,KAAK;AAAA,EAAA;AAE3B;AACA,SAAS,aAAa,OAAO;AAClB,SAAA;AAAA,IACH,MAAM;AAAA,IACN,OAAO,OAAO,KAAK;AAAA,EAAA;AAE3B;AACA,SAAS,aAAa,OAAO;AAClB,SAAA;AAAA,IACH,MAAM;AAAA,IACN,OAAO,OAAO,KAAK;AAAA,EAAA;AAE3B;AACA,SAAS,aAAa,OAAO;AAClB,SAAA;AAAA,IACH,MAAM;AAAA,IACN;AAAA,EAAA;AAER;AACA,SAAS,aAAa,OAAO;AAClB,SAAA;AAAA,IACH,MAAM;AAAA,IACN,OAAO,MAAM;AAAA,EAAA;AAErB;AACA,SAAS,aAAa,OAAO,OAAO;AAChC,MAAI,UAAU,MAAM;AACT,WAAA;AAAA,MACH,MAAM;AAAA,IAAA;AAAA,EAEd;AACA;AACQ,QAAA,0BAA0B,KAAK,GAAG;AAC3B,aAAA,8BAA8B,OAAO,KAAK;AAAA,IACrD;AACI,QAAA,4BAA4B,KAAK,GAAG;AAC7B,aAAA,gCAAgC,OAAO,KAAK;AAAA,IACvD;AACI,QAAA,aAAa,KAAK,GAAG;AACd,aAAA,iBAAiB,OAAO,KAAK;AAAA,IACxC;AACI,QAAA,sBAAsB,KAAK,GAAG;AACvB,aAAA,0BAA0B,OAAO,KAAK;AAAA,IACjD;AAAA,EACJ;AACI,MAAA,MAAM,QAAQ,KAAK,GAAG;AACf,WAAA;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,QACH,YAAY,MAAM,IAAI,CAAC,GAAG,MAAM,mBAAmB,GAAG,GAAG,QAAQ,CAAC,CAAC;AAAA,MACvE;AAAA,IAAA;AAAA,EAER;AACA,MAAI,iBAAiB,KAAK;AACf,WAAA;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,aAAa,OAAO,MAAM,IAAI;AAAA,MAC9B,OAAO;AAAA,QACH,SAAS,MAAM,KAAK,KAAK,EAAE,IAAI,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC;AAAA,MACtE;AAAA,IAAA;AAAA,EAER;AACA,MAAI,iBAAiB,KAAK;AACf,WAAA;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,aAAa,OAAO,MAAM,IAAI;AAAA,MAC9B,OAAO;AAAA,QACH,SAAS,MAAM,KAAK,MAAM,SAAS,EAAE,IAAI,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC;AAAA,MAChF;AAAA,IAAA;AAAA,EAER;AACA,MAAI,iBAAiB,SAAS;AACnB,WAAA;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,QACH,YAAY,CAAC;AAAA,MACjB;AAAA,IAAA;AAAA,EAER;AACA,MAAI,iBAAiB,QAAQ;AAClB,WAAA;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO,OAAO,KAAK;AAAA,MACnB,WAAW;AAAA,IAAA;AAAA,EAEnB;AACA,MAAI,iBAAiB,MAAM;AAChB,WAAA;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO,OAAO,KAAK;AAAA,MACnB,WAAW;AAAA,IAAA;AAAA,EAEnB;AACA,MAAI,iBAAiB,OAAO;AACjB,WAAA;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO,MAAM,WAAW,OAAO,KAAK;AAAA,MACpC,WAAW,MAAM,QAAQ;AAAA,IAAA;AAAA,EAEjC;AACA,MAAI,YAAY;AAChB;AACI,UAAM,cAAc,MAAM;AAC1B,QAAI,aAAa;AAEb,UAAI,YAAY,kBAAkB;AAElB,oBAAA,YAAY,iBAAmB,EAAA;AAAA,MAC/C;AAAA,IACJ;AAAA,EACJ;AACO,SAAA;AAAA,IACH,MAAM;AAAA,IACN;AAAA,IACA,OAAO;AAAA,MACH,YAAY,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,UAAU,qBAAqB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC;AAAA,IACxG;AAAA,EAAA;AAER;AACA,SAAS,0BAA0B,OAAO;AACtC,SAAO,MAAM,KAAK,4BAA4B,MAAM,CAAC;AACzD;AACA,SAAS,4BAA4B,OAAO;AACxC,SAAO,MAAM,QAAQ,MAAM,OAAO,QAAQ,MAAM;AACpD;AACA,SAAS,8BAA8B,OAAO,OAAO;AAC1C,SAAA;AAAA,IACH,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,MACH,YAAY,OAAO,QAAQ,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,MAAMC,MAAK,MAAM,qBAAqB,MAAMA,QAAO,QAAQ,CAAC,CAAC;AAAA,IAChH;AAAA,EAAA;AAER;AACA,SAAS,gCAAgC,OAAO,OAAO;AAC5C,SAAA;AAAA,IACH,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,MACH,YAAY,OAAO,QAAQ,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC,MAAMA,MAAK,MAAM,qBAAqB,MAAMA,QAAO,QAAQ,CAAC,CAAC;AAAA,IAC9G;AAAA,EAAA;AAER;AACA,SAAS,aAAa,OAAO;AACzB,SAAO,MAAM,SAAS,MAAM,WAAW,QAAQ,MAAM,YAAY;AACrE;AACA,SAAS,iBAAiB,OAAO,OAAO;AAC7B,SAAA;AAAA,IACH,MAAM;AAAA;AAAA;AAAA,IAGN,OAAO;AAAA,MACH,YAAY,OAAO,QAAQ,KAAK,EAC3B,OAAO,CAAC,CAAC,IAAI,MAAM;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACF,SAAS,IAAI,CAAC,EACX,IAAI,CAAC,CAAC,MAAMA,MAAK,MAAM,qBAAqB,MAAMA,QAAO,QAAQ,CAAC,CAAC;AAAA,IAC5E;AAAA,EAAA;AAER;AACA,SAAS,sBAAsB,OAAO;AAC1B,SAAA,OAAO,MAAM,qBAAqB,cACtC,OAAO,MAAM,gBAAgB,cAC7B,MAAM;AACd;AACA,SAAS,0BAA0B,OAAO,OAAO;AACtC,SAAA;AAAA,IACH,MAAM;AAAA,IACN,OAAO;AAAA,MACH,YAAY,OAAO,QAAQ,MAAM,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,qBAAqB,MAAM,OAAO,QAAQ,CAAC,CAAC;AAAA,IACjH;AAAA,EAAA;AAER;AACA,SAAS,qBAAqB,MAAM,OAAO,OAAO;AACxC,QAAA,SAAS,UAAU,OAAO,KAAK;AACrC,SAAO,OAAO;AACP,SAAA;AACX;AACA,SAAS,mBAAmB,OAAO1B,QAAO,OAAO;AACvC,QAAA,SAAS,UAAU,OAAO,KAAK;AAC9B,SAAA,OAAO,GAAGA,MAAK;AACf,SAAA;AACX;AACA,SAAS,eAAe,OAAO,OAAO;AAC3B,SAAA;AAAA,IACH,OAAO,UAAU,OAAO,KAAK;AAAA,EAAA;AAErC;AACA,SAAS,eAAe,OAAO,OAAO;AAC3B,SAAA;AAAA,IACH,KAAK,UAAU,MAAM,CAAC,GAAG,KAAK;AAAA,IAC9B,OAAO,UAAU,MAAM,CAAC,GAAG,KAAK;AAAA,EAAA;AAExC;AAEA,MAAM,gBAAgB,CAAC,OAAO,QAAQ,SAAS,QAAQ,OAAO;AAC9D,IAAI,cAAc;AAClB,MAAM,eAAe,CAAA;AACrB,MAAM,eAAe,CAAA;AACrB,SAAS,oBAAoB,UAAU;AACnC,MAAI,eAAe,MAAM;AACR,iBAAA,KAAK,GAAG,QAAQ;AAC7B;AAAA,EACJ;AACY,cAAA,KAAK,UAAU,OAAO,OAAO;AAAA,IACrC,MAAM;AAAA,IACN,MAAM;AAAA,EAAA,GACP,YAAY,CAAC,CAAC;AACrB;AACA,SAAS,eAAe,OAAO,QAAQ,IAAI;AACzB,gBAAA;AACP,SAAA,OAAO,cAAc,KAAK;AACjC,MAAI,SAAS,QAAQ,aAAa,SAAS,GAAG;AACpC,UAAA,WAAW,aAAa;AAC9B,iBAAa,SAAS;AACtB,wBAAoB,QAAQ;AAAA,EAChC;AACJ;AACA,MAAM,kBAAgC,8BAAc,OAAO,CAAC,SAAS,SAAS;AAC1E,UAAQ,IAAI,IAAI,QAAQ,IAAI,EAAE,KAAK,OAAO;AACnC,SAAA;AACX,GAAG,CAAE,CAAA;AACL,MAAM,cAAc;AACpB,SAAS,iBAAiB;AACtB,WAAS,YAAY,MAAM;AACvB,WAAO,YAAa,MAAM;AAChB,YAAA,eAAe,CAAC,GAAG,IAAI;AAC7B,UAAI,aAAa,QAAQ;AACrB,cAAM,cAAc,aAAa,aAAa,SAAS,CAAC;AAExD,YAAI,OAAO,gBAAgB,YAAY,YAAY,KAAK,WAAW,GAAG;AAClE,uBAAa,IAAI;AAAA,QACrB;AAAA,MACJ;AAC2C;AACvB,wBAAA,IAAI,EAAE,GAAG,YAAY;AAAA,MACzC;AACA,0BAAoB,CAAC,cAAc,MAAM,IAAI,CAAC,CAAC;AAAA,IAAA;AAAA,EAEvD;AAEA,MAAI,qBAAqB;AACP,kBAAA,QAAQ,CAAC,SAAS;AACpB,cAAA,IAAI,IAAI,YAAY,IAAI;AAAA,IAAA,CACnC;AACD,WAAO,SAAS,iBAAiB;AACf,oBAAA,QAAQ,CAAC,SAAS;AACpB,gBAAA,IAAI,IAAI,gBAAgB,IAAI;AAAA,MAAA,CACvC;AAAA,IAAA;AAAA,EACL,OAEC;AACD;AACI,UAAI,OAAOa,UAAQ,eAAeA,MAAI,OAAO;AACzC,cAAM,SAASA,MAAI;AACnB,YAAI,QAAQ;AAEJA,gBAAA,QAAQ,YAAa,MAAM;AAC3B,kBAAM,CAAC,MAAM,UAAU,GAAG,IAAI,IAAI;AAE3B,mBAAA,MAAM,IAAI,GAAG,IAAI;AACJ,gCAAA,CAAC,cAAc,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC;AAAA,UAAA;AAElE,iBAAO,SAAS,iBAAiB;AAC7BA,kBAAI,QAAQ;AAAA,UAAA;AAAA,QAEpB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,SAAS,iBAAiB;AAAA,EAAA;AACrC;AACA,SAAS,oBAAoB;AACzB,QAAM,QAAQ,QAAQ;AACtB,QAAM,MAAM;AACR,MAAA;AAEA,YAAQ,MAAM;AAAA,WAEX,IAAI;AACA,WAAA;AAAA,EACX;AAEM,QAAA,aAAa,QAAQ,QAAQ;AACnC,UAAQ,MAAM;AACP,SAAA;AACX;AAEA,IAAI,YAAY;AAKhB,MAAM,iCAAiB;AACvB,MAAM,aAAa,CAAA;AACnB,SAAS,kBAAkB,QAAQ;AAC/B,MAAI,aAAa,MAAM;AACZ,WAAA,QAAQ,CAAC,UAAU;AACtB,iBAAW,IAAI,KAAK;AAAA,IAAA,CACvB;AACD;AAAA,EACJ;AACA,QAAM,OAAO,OACR,IAAI,CAAC,QAAQ;AACd,UAAM,qBAAqB,OAAO,aAAa,OAAO,YAAY;AAC5D,UAAA,SAAS,qBAAqB,gCAAgC;AACpE,QAAI,oBAAoB;AACpB,YAAM,IAAI;AAAA,IACd;AACI,QAAA,eAAe,SAAS,IAAI,OAAO;AAC/B,UAAA,IAAI,WAAW,CAAC,IAAI,MAAM,SAAS,IAAI,OAAO,GAAG;AACjD,eAAO,GAAG,MAAM,GAAG,IAAI,OAAO;AAAA,EAC5C,IAAI,KAAK;AAAA,MACC;AACA,aAAO,GAAG,MAAM,GAAG,IAAI,KAAK;AAAA,IAChC;AACA,QAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AACrC,UAAA;AACO,eAAA,SAAS,KAAK,UAAU,GAAG;AAAA,eAE/Bc,MAAK;AACD,eAAA,SAAS,OAAOA,IAAG;AAAA,MAC9B;AAAA,IACJ;AACO,WAAA,SAAS,OAAO,GAAG;AAAA,EAAA,CAC7B,EACI,OAAO,OAAO;AACf,MAAA,KAAK,SAAS,GAAG;AACP,cAAA,KAAK,UAAU,OAAO,OAAO;AAAA,MACnC,MAAM;AAAA,MACN;AAAA,IAAA,GACD,UAAU,CAAC,CAAC;AAAA,EACnB;AACJ;AACA,SAAS,aAAa,OAAO,QAAQ,IAAI;AACzB,cAAA;AACL,SAAA,OAAO,YAAY,KAAK;AAC/B,MAAI,SAAS,QAAQ,WAAW,OAAO,GAAG;AAChC,UAAA,SAAS,MAAM,KAAK,UAAU;AACpC,eAAW,MAAM;AACjB,sBAAkB,MAAM;AAAA,EAC5B;AACJ;AACA,SAAS,cAAc;AACnB,WAASC,SAAQ,OAAO;AAChB,QAAA;AAIA,UAAI,OAAO,0BAA0B,eACjC,iBAAiB,yBACjB,MAAM,kBAAkB,SACxB,MAAM,OAAO,WACb,MAAM,OAAO,QAAQ,SAAS,mDAAmD,GAAG;AACpF;AAAA,MACJ;AACA,UAAI,MAAuC;AACvC,wBAAgB,MAAM,KAAK;AAAA,MAC/B;AACkB,wBAAA,CAAC,KAAK,CAAC;AAAA,aAEtB,KAAK;AACR,sBAAgB,MAAM,GAAG;AAAA,IAC7B;AAAA,EACJ;AACI,MAAA,OAAOf,MAAI,YAAY,YAAY;AACnCA,UAAI,QAAQe,QAAO;AAAA,EACvB;AACI,MAAA,OAAOf,MAAI,yBAAyB,YAAY;AAChDA,UAAI,qBAAqBe,QAAO;AAAA,EACpC;AACA,SAAO,SAASC,YAAW;AACnB,QAAA,OAAOhB,MAAI,aAAa,YAAY;AACpCA,YAAI,SAASe,QAAO;AAAA,IACxB;AACI,QAAA,OAAOf,MAAI,0BAA0B,YAAY;AACjDA,YAAI,sBAAsBe,QAAO;AAAA,IACrC;AAAA,EAAA;AAER;AAEA,SAAS,2BAA2B;AAChC,QAAM,QAAQ;AACd,QAAM,OAAO;AACb,QAAM,KAAK;AAIL,QAAA,OAAO,OAAO,SAAS;AAEzB,MAAA,eAAe,OAAO,MAAM;AAAA,MAAM,YAAY;AAC9C,MAAA,iBAAiB,OAAO,MAAM;AAAA,MAAM,eAAe;AAEvD,SAAO,QAAQ,UAAU,KAAK,MAAM;AAChC,QAAI,MAAM;AACN,qBAAe,YAAY;AAC3B,uBAAiB,eAAe;AAAA,IACpC;AACA,WAAO,kBAAkB,OAAO,MAAM,EAAE,EAAE,KAAK,CAAC,WAAW;AACvD,UAAI,CAAC,QAAQ;AACI;AACE;AACC,wBAAA,MAAM,UAAU,0BAA0B,CAAC;AAC3C,wBAAA,MAAM,UAAU,wBAAwB,CAAC;AACzC,wBAAA,MAAM,UAAU,0BAA0B,CAAC;AACpD,eAAA;AAAA,MACX;AAC0B;AAC1B,aAAO,QAAQ,MAAM;AAID,wBAAA,MAAM,UAAU,2CAA2C,CAAC;AAC/D;AACE;MAAA,CAClB;AACD,qBAAe,CAAC,SAAS;AAIrB,eAAO,KAAK;AAAA,UACR;AAAA,QAAA,CACH;AAAA,MAAA,CACJ;AACD,mBAAa,CAAC,SAAS;AAInB,eAAO,KAAK;AAAA,UACR;AAAA,QAAA,CACH;AAAA,MAAA,CACJ;AACM,aAAA;AAAA,IAAA,CACV;AAAA,EAAA,CACJ;AACL;AACA,MAAM,aAAa;AACnB,SAAS,UAAU,OAAO;AACtB,SAAO,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU;AAC7C;AACA,SAAS,4BAA4B;AAC7B,MAAA,OAAOE,SAAO,aAAa;AAE3BA,SAAG,kBAAkB;AAAA,EAAA,WAGhB,OAAO,OAAO,aAAa;AAEhC,OAAG,kBAAkB;AAAA,EAAA,WAEhB,OAAO,OAAO,aAAa;AAChC,OAAG,kBAAkB;AAAA,EAAA,WAEhB,OAAO,SAAS,aAAa;AAClC,SAAK,kBAAkB;AAAA,EAAA,WAElB,OAAO,OAAO,aAAa;AAChC,OAAG,kBAAkB;AAAA,EAAA,WAEhB,OAAO,OAAO,aAAa;AAChC,OAAG,kBAAkB;AAAA,EAAA,WAEhB,OAAO,OAAO,aAAa;AAChC,OAAG,kBAAkB;AAAA,EAAA,WAEhB,OAAO,QAAQ,aAAa;AACjC,QAAI,kBAAkB;AAAA,EAAA,WAEjB,OAAO,QAAQ,aAAa;AACjC,QAAI,kBAAkB;AAAA,EAAA,WAEjB,OAAO,OAAO,aAAa;AAChC,OAAG,kBAAkB;AAAA,EACzB;AACJ;AACA,yBAAyB;;;;;;;;ACnlBzB,SAAS,WAAW,QAAQ,YAAY;AACpC,MAAI,CAAC,QAAQ;AACT;AAAA,EACJ;AACM,QAAA,MAAM,OAAO,MAAM,GAAG;AAC5B,QAAM,MAAM,IAAI;AAChB,MAAI,QAAQ,GAAG;AACA,eAAA,UAAU,IAAI,CAAC;AAAA,EAAA,WAErB,QAAQ,GAAG;AACL,eAAA,UAAU,IAAI,CAAC;AACf,eAAA,WAAW,IAAI,CAAC;AAAA,EAC/B;AACJ;AACA,MAAM,SAAS,CAAC,iBAAiB;AACjC,SAAS,iBAAiB,6BAA6B,YAAY;AACxD,SAAA,QAAQ,CAAC,SAAS;AACjB,QAAA,OAAO,YAAY,IAAI,GAAG;AACE,kCAAA,IAAI,IAAI,WAAW,IAAI;AAAA,IACvD;AAAA,EAAA,CACH;AACL;AACA,MAAM,aAAa;AACnB,SAAS,mBAAmB,WAAW,YAAY;AAC/C,MAAI,YAAY;AACZ,WAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,SAAS;AAChC,YAAA,UAAU,KAAK,MAAM,UAAU;AACrC,UAAI,SAAS;AACH,cAAA,cAAc,QAAQ,CAAC;AACnB,kBAAA,IAAI,IAAI,WAAW,IAAI;AACvB,kBAAA,WAAW,IAAI,WAAW,WAAW;AAAA,MACnD;AAAA,IAAA,CACH;AAAA,EACL;AACJ;AACA,SAAS,mBAAmB,SAAS,gBAAgB;AAC7C,MAAA,CAAC,QAAQ,cAAc,GAAG;AAC1B;AAAA,EACJ;AACe,iBAAA,QAAQ,CAAC,eAAe;AAC3B,YAAA,UAAU,IAAI,SAAU,MAAM;AAClC,aAAO,KAAK,IAAI,UAAU,EAAE,IAAI;AAAA,IAAA;AAAA,EACpC,CACH;AACL;AACA,SAAS,oBAAoB,YAAY,UAAU,OAAO;AAChD,QAAA,aAAa,WAAW,oBAAoB,QAAQ;AAC/C,aAAA,QAAQ,CAAC,cAAc;AACxB3B,UAAAA,OAAM,UAAU,WAAW;AAC3BA,UAAAA,IAAG,IAAI,UAAU,OAAO;AAAA,EAAA,CACjC;AACL;AACA,SAAS,SAAS,UAAU,YAAY;AAC7B,SAAA,eAAe,UAAU,QAAQ;AAAA,IACpC,MAAM;AACF,YAAM,QAAQ,CAAA;AACM,0BAAA,YAAY,MAAM,KAAK;AACrC,YAAA,gBAAgB,WAAW,oBAAoB,QAAQ;AAC/C,oBAAA,QAAQ,CAAC,cAAc;AAC3BA,cAAAA,OAAM,UAAU,WAAW;AACjC,YAAI,CAACA,MAAK;AACN;AAAA,QACJ;AACI,YAAA,CAAC,MAAMA,IAAG,GAAG;AACPA,gBAAAA,IAAG,IAAI;QACjB;AACA,cAAMA,IAAG,EAAE,KAAK,UAAU,OAAO,SAAS;AAAA,MAAA,CAC7C;AACM,aAAA;AAAA,IACX;AAAA,EAAA,CACH;AACL;AACA,SAAS,cAAc,UAAU,QAAQ;AAErC,QAAM,YAAY,SAAS;AAE3B,WAAS,IAAI,UAAU,SAAS,GAAG,KAAK,GAAG,KAAK;AACtC,UAAA,UAAU,UAAU,CAAC;AACvB,QAAA,QAAQ,OAAO,YAAY,QAAQ;AAC5B,aAAA;AAAA,IACX;AAAA,EACJ;AAEI,MAAA;AACJ,WAAS,IAAI,UAAU,SAAS,GAAG,KAAK,GAAG,KAAK;AAC5C,eAAW,cAAc,UAAU,CAAC,GAAG,MAAM;AAC7C,QAAI,UAAU;AACH,aAAA;AAAA,IACX;AAAA,EACJ;AACJ;AACA,SAAS,oBAAoB;AACzB,MAAI,iBAAiB;AACrB;AACU,UAAA,cAAc,GAAG;AACvB,UAAM,WAAW,eAAe,YAAY,WAAW,YAAY,WAAW;AAC7D,qBAAA,gBAAgB,QAAQ,KAAK;AAAA,EAClD;AACO,SAAA;AACX;AAEA,MAAM,aAAa;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACA,SAAS,aAAa,SAAS,KAAK;AACzB,SAAA,SAASC,MAAK,UAAU,MAAM;AACjC,UAAM,QAAQ,IAAI;AAClB,QAAI,SAAS,OAAO;AACV,YAAA,SAAS,EAAE,UAAU;AAC3B;AACU,cAAA,aAAa,OAAO,MAAM;AAAA,MACpC;AAAA,IACJ;AACA,WAAO,QAAQ,MAAM,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AAAA,EAAA;AAEnD;AACA,SAAS,iBAAiB,UAAU,SAAS;AACzC,QAAM,MAAM,SAAS;AAErB,MAAI,SAAS,QAAQ;AACrB,MAAI,UAAU,QAAQ;AACtB,MAAI,cAAc;AAClB,MAAI,SAAS,QAAQ;AACrB;AAEI,WAAO,iBAAiB,KAAK;AAAA;AAAA,MAEzB,CAAC,eAAe,GAAG;AAAA,QACf,MAAM;AACF,gBAAM,KAAK,KAAK,OAAO,KAAK,eAAe;AAEpC,iBAAA,OAAO,SAAY,KAAK;AAAA,QACnC;AAAA,MACJ;AAAA,IAAA,CACH;AAAA,EACL;AAEA,MAAI,MAAM;AACe;AACrB,QAAI,QAAQ;EAChB;AAEA,WAAS,QAAQ;AACjB,MAAI,QAAQ,QAAQ,KAAK,KAAK,QAAQ,MAAM,QAAQ;AACxC,YAAA,MAAM,QAAQ,CAAC,SAAS;AACnB,eAAA,MAAM,IAAI,IAAI;AAAA,IAAA,CAC1B;AACG,QAAA,SAAS,MAAM,iBAAiB,GAAG;AACnC,eAAS,MAAM,UAAU;AAAA,IAC7B;AAAA,EACJ;AACA,MAAI,wBAAwB,WAAY;AAEpC;AACW,aAAA,QAAQ,WAAW;IAC9B;AAAA,EAAA;AAEJ,MAAI,WAAW;AACf,MAAI,YAAY;AAEhB,WAAS,OAAO,aAAa,SAAS,MAAM,GAAG;AACnD;AACA,SAAS,sBAAsB,UAAU,SAAS;AAC9C,mBAAiB,UAAU,OAAO;AAClC,QAAM,MAAM,SAAS;AACV,aAAA,QAAQ,CAAC,WAAW;AACvB,QAAA,MAAM,IAAI,YAAa,MAAM;AAC7B,YAAM,aAAa,IAAI;AACnB,UAAA,cAAc,WAAW,MAAM,GAAG;AAClC,eAAO,WAAW,MAAM,EAAE,MAAM,YAAY,IAAI;AAAA,MACpD;AAAA,IAAA;AAAA,EACJ,CACH;AACL;AACA,SAAS,UAAU,UAAU,YAAYoB,QAAO;AAC5C,QAAM,MAAM,SAAS;AACrBA,SAAM,QAAQ,CAAC,SAAS;AAChB,QAAA,OAAO,YAAY,IAAI,GAAG;AAC1B,eAAS,IAAI,IAAI,IAAI,IAAI,IAAI,WAAW,IAAI;AAAA,IAChD;AAAA,EAAA,CACH;AACL;AACA,SAAS,QAAQ,MAAM;AACb,QAAA,QAAQ,KAAK,EAAE,IAAI;AACrB,MAAA,SAAS,MAAM,QAAQ;AAChB,WAAA;AAAA,EACX;AACO,SAAA;AACX;AACA,SAAS,SAAS,MAAM,MAAM;AAC1B,MAAI,SAAS,WAAW;AACX,aAAA,KAAK,MAAM,IAAI;AACxB,SAAK,EAAE,YAAY;AACZ,WAAA;AAAA,EACX;AACM,QAAA,QAAQ,KAAK,EAAE,IAAI;AAClB,SAAA,SAAS,eAAe,OAAO,IAAI;AAC9C;AAEA,MAAM,kBAAkB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAKJ;AACA,SAAS,UAAU,YAAY,QAAQ,oBAAI,OAAO;AAC9C,MAAI,YAAY;AACZ,WAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,SAAS;AACtC,UAAI,mBAAmB,MAAM,WAAW,IAAI,CAAC,GAAG;AAC5C,cAAM,IAAI,IAAI;AAAA,MAClB;AAAA,IAAA,CACH;AACwB;AACrB,YAAM,EAAE,SAAS,gBAAgB,OAAA,IAAW;AAC5C,UAAI,QAAQ;AACR,eAAO,QAAQ,CAAC,UAAU,UAAU,OAAO,KAAK,CAAC;AAAA,MACrD;AACA,UAAI,gBAAgB;AAChB,kBAAU,gBAAgB,KAAK;AAAA,MACnC;AAAA,IACJ;AAAA,EACJ;AACO,SAAA;AACX;AACA,SAAS,SAAS,WAAW,MAAM,UAAU;AACrC,MAAA,SAAS,QAAQ,IAAI,MAAM,MAAM,CAAC,OAAO,WAAW,IAAI,GAAG;AACjD,cAAA,IAAI,IAAI,SAAU,MAAM;AAC9B,aAAO,KAAK,OAAO,KAAK,IAAI,UAAU,MAAM,IAAI;AAAA,IAAA;AAAA,EAExD;AACJ;AACA,MAAM,gBAAgB,CAAC,QAAQ;AAC/B,SAAS,UAAU,WAAW,OAAO,WAAW,eAAe;AAC3D,QAAM,QAAQ,CAAC,SAAS,SAAS,WAAW,MAAM,QAAQ,CAAC;AAC/D;AACA,SAAS,iBAAiB,WAAW,YAAY,WAAW,eAAe;AAC7D,YAAA,UAAU,EAAE,QAAQ,CAAC,SAAS,SAAS,WAAW,MAAM,QAAQ,CAAC;AAC/E;AACA,SAAS,iBAAiB,WAAW,cAAc;AAC/C,MAAI,CAAC,cAAc;AACf;AAAA,EACJ;AACM,QAAA,QAAQ,OAAO,KAAK,+BAA+B;AACnD,QAAA,QAAQ,CAAC,SAAS;AAChB,QAAA,eAAe,gCAAgC,IAAI,GAAG;AAC7C,eAAA,WAAW,MAAM,CAAA,CAAE;AAAA,IAChC;AAAA,EAAA,CACH;AACL;AACA,MAAM,6CAA2C,MAAM;AACnD,QAAM,eAAe,CAAA;AACf,QAAA,MAAM,WAAW,MAAM,KAAK,OAAO,EAAE,cAAc,MAAM;AAC/D,MAAI,OAAO,IAAI,OAAO,IAAI,IAAI,GAAG;AAC7B,UAAM,SAAS,IAAI,IAAI,EAAE,WAAW;AAChC,QAAA,QAAQ,MAAM,GAAG;AACX,YAAA,QAAQ,OAAO,KAAK,+BAA+B;AAClD,aAAA,QAAQ,CAAC,UAAU;AAChB,cAAA,QAAQ,CAAC,SAAS;AAChB,cAAA,OAAO,OAAO,IAAI,KAAK,CAAC,aAAa,SAAS,IAAI,GAAG;AACrD,yBAAa,KAAK,IAAI;AAAA,UAC1B;AAAA,QAAA,CACH;AAAA,MAAA,CACJ;AAAA,IACL;AAAA,EACJ;AACO,SAAA;AACX,CAAC;AACD,SAAS,sBAAsB,WAAW;AAC5B,YAAA,WAAW,uBAAuB;AAChD;AAEA,MAAM,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACA,SAAS,SAAS,UAAU,iBAAiB;AACzC,QAAM,mBAAmB,SAAS;AASlC,QAAM,aAAa;AAAA,IACf,YAAa,SAAS,YAAY,SAAS,SAAS,cAAe,CAAC;AAAA,IACpE,KAAK;AAAA;AAAA,IACL,SAAS,SAAS;AACd,WAAK,MAAM;AACX,YAAM,MAAM,iBAAiB;AAC7B,UAAI,KAAK,OAAO,IAAI,UAAU,IAAI,WAAW;AAGzC;AAAA,MACJ;AACA,uBAAiB,kBAAkB;AAAA,QAC/B,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,OAAO,CAAC;AAAA,MAAA,CACX;AACD,UAAI,aAAa,KAAK;AACb,eAAA,UAAU,WAAW,OAAO;AAAA,IACzC;AAAA,EAAA;AAEJ,QAAM,kBAAkB,GAAG;AAC3B,MAAI,iBAAiB;AACD,oBAAA,QAAQ,CAAC,OAAO;AACjB,iBAAA,UAAU,IAAI,gBAAgB;AAAA,IAAA,CAC5C;AACD,oBAAgB,SAAS;AAAA,EAC7B;AACA,aAAW,QAAQ;AACb,QAAA,aAAa,SAAS,EAAE;AAC9B,YAAU,YAAY,KAAK;AAC3B,mBAAiB,YAAY,UAAU;AACd;AACrB,UAAM,UAAU,WAAW;AAChB,eAAA,OAAO,YAAY,OAAO;AAAA,EACzC;AACO,SAAA;AACX;AACA,SAAS,cAAc,iBAAiB;AAC7B,SAAA,SAAS7C,WAAU,IAAI;AACnB,WAAA,IAAI,SAAS,EAAE,CAAC;AAAA,EAAA;AAE/B;AACA,SAAS,wBAAwB,iBAAiB;AACvC,SAAA,SAASA,WAAU,IAAI;AACpB,UAAA,aAAa,SAAS,EAAE;AAC9B,UAAM,MAAM,WAAW,MAAM,KACzB,OAAO;AAAA,MACH,cAAc;AAAA,IAAA,CACjB;AACL,QAAI,CAAC;AACD;AACD,OAAA,EAAE,IAAI,SAAS;AAClB,UAAM,aAAa,IAAI;AACvB,QAAI,YAAY;AACZ,aAAO,KAAK,WAAW,UAAU,EAAE,QAAQ,CAAC,SAAS;AACjD,YAAI,CAAC,OAAO,YAAY,IAAI,GAAG;AAC3B,qBAAW,IAAI,IAAI,WAAW,WAAW,IAAI;AAAA,QACjD;AAAA,MAAA,CACH;AAAA,IACL;AACA,WAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,SAAS;AACtC,UAAI,CAAC,OAAO,KAAK,IAAI,GAAG;AAChB,YAAA,IAAI,IAAI,WAAW,IAAI;AAAA,MAC/B;AAAA,IAAA,CACH;AACD,qBAAiB,YAAY,EAAE;AAAA,EAK/B;AAER;AACA,SAAS,iBAAiB,YAAY,IAAI;AAClC,MAAA,WAAW,WAAW,QAAQ,GAAG;AACjC,UAAM,OAAO,GAAG,wBAAwB,GAAG,qBAAqB;AAChE,eAAW,SAAS,IAAI;AAAA,EAC5B;AACA,MAAI,WAAW,WAAW,MAAM,KAAK,GAAG,WAAW;AAC5C,OAAA,UAAU,CAAC,SAAS;AAChB,SAAA,UAAU,UAAU,IAAI;AAAA,IAAA,CAC9B;AAAA,EACL;AACA,MAAI,WAAW,WAAW,MAAM,KAAK,GAAG,WAAW;AAC5C,OAAA,UAAU,CAAC,SAAS;AAChB,SAAA,UAAU,UAAU,IAAI;AAAA,IAAA,CAC9B;AAAA,EACL;AACJ;AACA,SAAS,WAAW,OAAO;AACjB,QAAA,SAAS,IAAI,kBAAA,CAAmB;AAC/B,SAAA,eAAe,OAAO,WAAW;AAAA,IACpC,MAAM;AACF,aAAO,OAAO;AAAA,IAClB;AAAA,IACA,IAAI,GAAG;AACH,aAAO,QAAQ;AAAA,IACnB;AAAA,EAAA,CACH;AACL;AAEA,MAAM,eAAe;AAAA;AAAA;AAAA,EAGjB;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AACJ;AACA,SAAS,iBAAiB,SAAS,aAAa,OAAO;AACnD,QAAM,aAAa,CAAA;AACnB,MAAI,CAAC,YAAY;AASJ,QAAA,gBAAT,SAAuB,QAAQ;AACrB,YAAA,SAAgB,uBAAA,OAAO,IAAI;AAE7B,gBAAA,OAAO,QAAQ,CAAC,aAAa;AACzB,eAAO,QAAQ,IAAI;AAAA,MAAA,CACtB;AACL,WAAK,QAAQ;AAAA,QACT;AAAA,MAAA,CACH;AAAA,IAAA;AAfQ,iBAAA,QAAQ,CAAC,SAAS;AAC3B,iBAAW,IAAI,IAAI;AAAA,QACf,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACX,CACH;AAYD,eAAW,KAAK;AAAA,MACZ,MAAM;AAAA,MACN,OAAO,CAAC;AAAA,IAAA;AAEZ;AACI,iBAAW,GAAG,WAAW;AAAA,IAC7B;AAAA,EACJ;AACA,MAAI,QAAQ,WAAW;AAEnB,QAAI,QAAQ,UAAU,SAAS,iBAAsB,GAAG;AACpD,UAAI,CAAC,QAAQ,cAAc,CAAC,QAAQ,WAAW,MAAM;AACjD,mBAAW,OAAO;AAAA,UACd,MAAM;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,MAEf;AACA,UAAI,CAAC,QAAQ,cAAc,CAAC,QAAQ,WAAW,OAAO;AAClD,mBAAW,QAAQ;AAAA,UACf,MAAM;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,MAEf;AAAA,IACJ;AAAA,EACJ;AACO,SAAA;AACX;AACA,SAAS,qBAAqB,SAAS;AACnC,QAAM,aAAa,CAAA;AACnB;AACS,QAAA,WAAW,QAAQ,aAAc;AAClC,iBAAW,kBAAkB,IAAI;AAAA,QAC7B,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAEX,iBAAW,kBAAkB,IAAI;AAAA,QAC7B,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAEX,iBAAW,mBAAmB,IAAI;AAAA,QAC9B,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAEX,iBAAW,eAAe,IAAI;AAAA,QAC1B,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IAEf;AAAA,EACJ;AACO,SAAA;AACX;AAMA,SAAS,UAAU,oBAAoB;AAC/B,MAAA,CAAC,mBAAmB,YAAY;AAChC,uBAAmB,aAAa;EACpC;AACO,SAAA,mBAAmB,YAAY,iBAAiB,kBAAkB,GAAG,qBAAqB,mBAAmB,OAAO,CAAC;AAChI;AACA,MAAM,aAAa,CAAC,QAAQ,QAAQ,SAAS,QAAQ,OAAO,IAAI;AAChE,SAAS,cAAc,MAAM,cAAc;AAEvC,MAAI,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AACpC,WAAO,KAAK,CAAC;AAAA,EACjB;AACO,SAAA;AACX;AACA,SAAS,kBAAkB,MAAM,cAAc;AACrC,QAAA,MAAM,cAAc,IAAI;AAC9B,SAAO,WAAW,QAAQ,GAAG,MAAM,KAAK,MAAM;AAClD;AAMA,SAAS,cAAc,EAAE,WAAW,GAAG,UAAU;AACzC,MAAA,QAAQ,QAAQ,GAAG;AACV,aAAA,QAAQ,CAAC,QAAQ;AACtB,iBAAW,GAAG,IAAI;AAAA,QACd,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACX,CACH;AAAA,EAAA,WAEI,cAAc,QAAQ,GAAG;AAC9B,WAAO,KAAK,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC7B,YAAA,OAAO,SAAS,GAAG;AACrB,UAAA,cAAc,IAAI,GAAG;AAErB,YAAI,QAAQ,KAAK;AACb,YAAA,WAAW,KAAK,GAAG;AACnB,kBAAQ,MAAM;AAAA,QAClB;AACA,cAAM,OAAO,KAAK;AACb,aAAA,OAAO,kBAAkB,IAAI;AAClC,mBAAW,GAAG,IAAI;AAAA,UACd,MAAM,KAAK;AAAA,UACX;AAAA,QAAA;AAAA,MACJ,OAEC;AAED,mBAAW,GAAG,IAAI;AAAA,UACd,MAAM,kBAAkB,IAAI;AAAA,QAAA;AAAA,MAEpC;AAAA,IAAA,CACH;AAAA,EACL;AACJ;AACA,SAAS,cAAc,YAAYoD,SAAQ;AAC9BA,UAAAA,UACH,kBAAkB,UAAU,IAC5B,uBAAuB,iBAAiB,WAAW,EAAE,CAAC,MAAM;AACtE;AACA,SAAS,kBAAkB,YAAY;AACnC,QAAM,YAAY,CAAA;AACd,MAAA,cAAc,UAAU,GAAG;AAC3B,WAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,SAAS;AACtC,UAAI,aAAa,QAAQ,IAAI,MAAM,IAAI;AACnC,kBAAU,IAAI,IAAI,iBAAiB,WAAW,IAAI,CAAC;AAAA,MACvD;AAAA,IAAA,CACH;AAAA,EACL;AACO,SAAA;AACX;AACA,SAAS,cAAc,IAAI;AAEvB,QAAM,aAAa,GAAG;AAClB,MAAA,QAAQ,WAAW,SAAS,KAC5B,WAAW,UAAU,SAAS,kBAAkB,GAAG;AAChD,OAAA,OAAO,cAAc,MAAM;AACvB,SAAA,UACC,GAAG,OAAO,QAAQ;AAAA,QACd,MAAM,GAAG;AAAA,QACT,OAAO,GAAG;AAAA,MAAA,CACb;AAAA,IAAA,GACN;AAAA,MACC,WAAW;AAAA,IAAA,CACd;AAAA,EACL;AACJ;AACA,SAAS,iBAAiB,MAAM;AACrB,SAAA;AACX;AAEA,SAAS,SAAS,GAAG;AACjB,SAAO;AACX;AACA,SAAS,kBAAkB,kBAAkB;AACnC,QAAA,UAAU,SAASC,WAAU;AACzB,UAAA,KAAK,KAAK,WAAW;AAC3B,QAAI,CAAC,IAAI;AACL;AAAA,IACJ;AACA,QAAI,KAAK,KAAK;AACV,2BAAqB,iBAAiB,EAAE,GAAG,KAAK,IAAI,CAAC;AAAA,IAAA,WAEhD,iBAAiB,KAAK,WAAW,EAAE,MAAM,KAAK;AAEd,2CAAA,iBAAiB,EAAE,GAAG,IAAI;AAAA,IACnE;AAAA,EAAA;AAEJ;AACQ,QAAA,CAAC,iBAAiB,WAAW;AAC7B,uBAAiB,YAAY;IACjC;AACA,qBAAiB,UAAU,KAAK;AAAA,EACpC;AACJ;AACA,SAAS,qCAAqC,IAAI,YAAY;AAC1D,QAAM,YAAY,WAAW;AAC7B,QAAM,YAAY,uBAAuB,EAAE,KAAK,CAAA;AAChD,MAAI,gBAAgB,WAAW,WAAW,KAAK,GAAG;AAC9C,eAAW,QAAQ,SAAS;AAAA,EAChC;AACJ;AACA,SAAS,qBAAqB,IAAI,UAAU;AAClC,QAAA,YAAY,MAAM,SAAS,KAAK;AACtC,QAAM,YAAY,uBAAuB,EAAE,KAAK,CAAA;AAC5C,MAAA,gBAAgB,WAAW,SAAS,GAAG;AAC3B,gBAAA,UAAU,WAAW,WAAW,KAAK;AAC7C,QAAA,YAAY,SAAS,MAAM,GAAG;AAC9B,oBAAc,SAAS,MAAM;AAAA,IACjC;AACA;AACI,eAAS,OAAO;AAAA,IACpB;AAAA,EACJ;AACJ;AACA,SAAS,gBAAgB,WAAW,WAAW,WAAW,MAAM;AACtD,QAAA,WAAW,OAAO,KAAK,SAAS;AACtC,MAAI,YAAY,SAAS,WAAW,OAAO,KAAK,SAAS,EAAE,QAAQ;AACxD,WAAA;AAAA,EACX;AACA,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AAChC,UAAA,MAAM,SAAS,CAAC;AACtB,QAAI,UAAU,GAAG,MAAM,UAAU,GAAG,GAAG;AAC5B,aAAA;AAAA,IACX;AAAA,EACJ;AACO,SAAA;AACX;AACA,SAAS,cAAc,YAAY;AAC/B,QAAM,eAAe,WAAW;AAChC,MAAI,WAAW,WAAW;AAC1B,MAAI,CAAC,UAAU;AACA,eAAA,QAAQ,WAAW;EAClC;AACA,QAAM,YAAY,CAAA;AACd,MAAA,QAAQ,YAAY,GAAG;AACV,iBAAA,QAAQ,CAAC,aAAa;AAE/B,gBAAU,KAAK,SAAS,QAAQ,UAAU,OAAY,CAAC;AACvD,UAAI,aAAa,oBAAoB;AAC7B,YAAA,QAAQ,QAAQ,GAAG;AACnB,mBAAS,KAAK,MAAM;AACpB,mBAAS,KAAK,YAAY;AAAA,QAAA,OAEzB;AACD,mBAAS,OAAO;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,UAAA;AAEb,mBAAS,aAAa;AAAA,YAClB,MAAM,CAAC,QAAQ,QAAQ,SAAS,OAAO,QAAQ,IAAI;AAAA,YACnD,SAAS;AAAA,UAAA;AAAA,QAEjB;AAAA,MACJ;AAAA,IAAA,CACH;AAAA,EACL;AACO,SAAA;AACX;AACA,SAAS,aAAa,kBAAkB,YAAY;AAChD,mBAAiB,OAAO;AACP,mBAAA,YAAY,cAAc,UAAU;AACzD;AAEA,SAAS,eAAe,YAAY,EAAE,OAAO,OAAAR,QAAO,QAAAO,SAAQ,iBAAiB,cAAAE,eAAc,YAAAC,aAAY,eAAAC,kBAAkB;AACrH,eAAa,WAAW,WAAW;AACnC,QAAM,UAAU;AAAA,IACZ,eAAe;AAAA;AAAA,IAEf,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,EAAA;AAEjB,MAAA,QAAQ,WAAW,MAAM,GAAG;AACjB,eAAA,OAAO,QAAQ,CAAC,SAAS;AAC5B,UAAA,SAAS,KAAK,OAAO,GAAG;AACjB,eAAA,SAAS,KAAK,OAAO;AAAA,MAChC;AAAA,IAAA,CACH;AAAA,EACL;AACA,MAAI,WAAW,SAAS;AACb,WAAA,SAAS,WAAW,OAAO;AAAA,EACtC;AACA,QAAM,qBAAqB;AAAA,IACvB;AAAA,IACA,WAAWA,eAAc,EAAE,OAAAX,QAAO,QAAAO,SAAQ,cAAAE,eAAc,YAAY;AAAA,IACpE,eAAe;AAAA,MACX,OAAO;AAIH,aAAK,OAAO,KAAK,IAAI,UAAU,YAAY;AAAA,MAC/C;AAAA,MACA,OAAO;AACH,aAAK,OAAO,KAAK,IAAI,UAAU,YAAY;AAAA,MAC/C;AAAA,MACA,OAAOG,OAAM;AACT,aAAK,OAAO,KAAK,IAAI,UAAU,gBAAgBA,KAAI;AAAA,MACvD;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL,KAAKF;AAAAA,IACT;AAAA,EAAA;AAEqB;AACrB,iBAAa,oBAAoB,UAAU;AAAA,EAC/C;AACA,YAAU,kBAAkB;AAC5B,oBAAkB,kBAAkB;AACpC,mBAAiB,oBAAoB,UAAU;AAC5B,qBAAA,mBAAmB,SAAS,WAAW,cAAc;AACxE;AACuB,uBAAA,mBAAmB,SAAS,WAAW,OAAO;AAAA,EACrE;AACA,MAAI,OAAO;AACP,UAAM,oBAAoB,EAAE,YAAAA,YAAY,CAAA;AAAA,EAC5C;AACO,SAAA;AACX;AACA,SAAS,oBAAoBG,eAAc;AAChC,SAAA,SAAS5B,iBAAgB,qBAAqB;AACjD,WAAO,UAAU,eAAe,qBAAqB4B,aAAY,CAAC;AAAA,EAAA;AAE1E;AACA,IAAI;AACJ,IAAI;AACJ,SAAS,WAAW;AAOhB,SAAO,OAAS,EAAA;AACpB;AACA,SAAS,iBAAiB,cAAc,SAAS;AAC7C,MAAI,CAAC,oBAAoB;AACrB,yBAAqB,SAAW,EAAA;AAAA,EACpC;AACM,QAAA,QAAQ,mBAAmB,cAAc,OAAO;AAC/C,SAAA,eAAe,MAAM,CAAC,KAAK;AACtC;AACA,SAAS,kBAAkB,UAAU;AACjC,MAAI,CAAC,qBAAqB;AACtB,0BAAsB,SAAW,EAAA;AAAA,EACrC;AACA,SAAO,oBAAoB,QAAQ;AACvC;AAEA,SAAS,UAAU,YAAYA,eAAc;AACzC,QAAM,EAAE,OAAO,OAAAb,QAAO,QAAAO,SAAQ,cAAAE,eAAc,YAAAC,aAAY,eAAAC,eAAAA,IAAkBE;AACpE,QAAA,yBAAyB,eAAe,YAAY;AAAA,IACtD,OAAAb;AAAAA,IACA,QAAAO;AAAAA,IACA,iBAAiB;AAAA,IACjB,cAAAE;AAAAA,IACA,YAAAC;AAAAA,IACA,eAAAC;AAAAA,EAAA,CACH;AACD,gBAAc,yBAAyB,WAAW,WAAW,YAAY,KAAK;AAC9E,QAAM,UAAU,uBAAuB;AAC/B,UAAA,SAAS,SAAU,OAAO;AAC9B;AACI,WAAK,UAAU;AAAA,IACnB;AACA,SAAK,QAAQ;AAAA,MACT,UAAU,gBAAgB,KAAK,QAAQ,eAAe,KAAK,CAAC;AAAA,IAAA;AAEhE,WAAO,KAAK,OAAO,KAAK,IAAI,UAAU,SAAS,KAAK;AAAA,EAAA;AAExD,YAAU,SAAS,eAAe;AAClC;AACI,qBAAiB,SAAS,UAAU;AAAA,EACxC;AACiB,mBAAA,SAAS,WAAW,cAAc;AACnD,wBAAsB,OAAO;AAC7B,WAAS,MAAM,wBAAwB,EAAE,YAAAD,YAAY,CAAA;AAC9C,SAAA;AACX;AACA,SAAS,eAAeG,eAAc;AAC3B,SAAA,SAASC,YAAW,gBAAgB;AACvC,WAAO,UAAU,UAAU,gBAAgBD,aAAY,CAAC;AAAA,EAAA;AAEhE;AAEA,SAAS,oBAAoB,iBAAiB;AACnC,SAAA,SAAS1D,WAAU,IAAI;AACT,qBAAA,SAAS,EAAE,GAAG,EAAE;AAAA,EAGjC;AAER;AAEA,MAAM,SAAS;AACf,MAAM,cAAc;AACpB,SAAS,iBAAiB,YAAY;AAClC,QAAM,kBAAkB,WAAW;AAC7B,QAAA,kBAAkB,SAAU,UAAU,MAAM;AACvC,WAAA,gBAAgB,MAAM,YAAY;AAAA,MACrC,eAAe,KAAK;AAAA,MACpB,GAAG;AAAA,IAAA,CACN;AAAA,EAAA;AAGD,MAAA;AACA,eAAW,eAAe;AAAA,WAEvB,OAAO;AACV,eAAW,gBAAgB;AAAA,EAC/B;AACJ;AACA,SAAS,oBAAoB,MAAM,SAAS,aAAa;AAC/C,QAAA,UAAU,QAAQ,IAAI;AAC5B,MAAI,CAAC,SAAS;AACF,YAAA,IAAI,IAAI,WAAY;AACxB,uBAAiB,IAAI;AAAA,IAAA;AAAA,EACzB,OAEC;AACO,YAAA,IAAI,IAAI,YAAa,MAAM;AAC/B,uBAAiB,IAAI;AACd,aAAA,QAAQ,MAAM,MAAM,IAAI;AAAA,IAAA;AAAA,EAEvC;AACJ;AACA,OAAO,SAAU,SAAS;AACtB,sBAAoB,SAAS,OAAO;AACpC,SAAO,OAAO,OAAO;AACzB;AACA,YAAY,SAAU,SAAS;AAC3B,sBAAoB,WAAW,OAAO;AAEtC,QAAM,iBAAiB,QAAQ,cAAc,QAAQ,WAAW;AAChE,MAAI,CAAC,gBAAgB;AACjB,cAAU,OAAO;AACjB,sBAAkB,OAAO;AAAA,EAC7B;AACA,SAAO,YAAY,OAAO;AAC9B;AAGA,SAAS,cAAc,EAAE,OAAA6C,QAAO,QAAAO,SAAQ,cAAAE,eAAc,cAAe;AAC1D,SAAA;AAAA,IACH,WAAW;AACP,UAAI,aAAa,KAAK;AACX,iBAAA,WAAW,IAAI,IAAI;AAC9B,YAAM,kBAAkB;AAAA,QACpB,QAAQ,KAAK;AAAA,MAAA;AAGjBA,oBAAa,MAAM,eAAe;AAElC,YAAM,aAAa;AACb,YAAA,oBAAoBF,QAAO,UAAU;AAC3C,UAAI,YAAY;AAChB,WAAK,MAAM,iBAAiB;AAAA,QACxB,MAAM;AAAA,QACN,OAAO,cAAc,WAAW,iBAAiB;AAAA,MAAA,GAClD;AAAA,QACC,QAAQ,oBAAoB,SAAS;AAAA,QACrC;AAAA,QACA,OAAO,WAAW,MAAM,CAAC;AAAA;AAAA,QACzB,iBAAiB,gBAAgB,UAAU,gBAAgB,OAAO;AAAA,QAClE,cAAc,UAAU,SAAS;AAC7B,mBAAS,UAAU,UAAU;AACnB,oBAAA,UAAU,YAAYP,MAAK;AACrC,gCAAsB,UAAU,OAAO;AAAA,QAC3C;AAAA,MAAA,CACH;AAUD,UAAI,CAAC,mBAAmB;AACpB,sBAAc,KAAK,GAAG;AAAA,MAC1B;AAAA,IACJ;AAAA,IACA,QAAQ;AAMJ,UAAI,KAAK,KAAK;AACV;AACS,eAAA,IAAI,UAAU,SAAS;AACvB,eAAA,IAAI,UAAU,QAAQ;AAAA,QAC/B;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,WAAW;AACP,UAAI,KAAK,KAAK;AACe,iCAAA,KAAK,IAAI,EAAE,GAAG;AACvC,0BAAkB,KAAK,GAAG;AAAA,MAC9B;AAAA,IACJ;AAAA,EAAA;AAER;AAEA,MAAM,QAAQ,CAAC,aAAa,wBAAwB,iBAAiB;AACrE,SAAS,OAAO,YAAY;AACjB,SAAA,CAAC,CAAC,WAAW;AACxB;AACA,SAAS,aAAa,YAAY,QAAQ;AAC3B,aAAA,aAAa,OAAO,MAAM;AACzC;AACA,SAAS,WAAW,OAAO;AAEjB,QAAA,SAAU,MAAM,UAClB,MAAM;AACV,QAAM,SAAS,OAAO;AAClB,MAAA;AACJ,MAAI,QAAQ;AACG,eAAA,cAAc,KAAK,KAAK,MAAM;AAAA,EAC7C;AACA,MAAI,CAAC,UAAU;AACX,eAAW,KAAK;AAAA,EACpB;AACA,SAAO,SAAS;AACpB;AAEA,IAAI,sCAAmC,OAAO;AAAA,EAC5C,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,MAAM,YAAY,cAAc;AAChC,MAAM,aAAa,eAAe,YAAY;AAC9C,MAAM,kBAAkB,oBAAoB,YAAY;AACxD,MAAM,kBAAkB,oBAAoB;AAC5C,MAAM,sBAAsB,wBAAwB;AACpD;AACO,KAAA,YAAY,OAAO,YAAY;AAClC,KAAG,aAAa;AAChB,KAAG,kBAAkB;AAClB,KAAA,kBAAkB,OAAO,kBACxB;AACD,KAAA,sBAAsB,OAAO,sBAC5B;AACR;AC/3BA,MAAM,aAAa,CAAC,cAAc,CAAC,MAAM,SAAS,mBAAkB,MAAO;AAEvE,GAAC,yBAAyB,WAAW,WAAW,MAAM,MAAM;AAChE;AAkBK,MAAC,UAAwB,2BAAW,QAAQ;;;;;;;;;","x_google_ignoreList":[0,1,2,3,4,5,6,7]} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/index.js.map deleted file mode 100644 index 15a6951..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map deleted file mode 100644 index 71eab5f..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["pages/index/index.vue?type=page"],"sourcesContent":["import MiniProgramPage from '/Users/sunmeng/Desktop/canvas/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["MiniProgramPage"],"mappings":";;AACA,GAAG,WAAWA,MAAe,eAAA;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index2.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index2.js.map deleted file mode 100644 index 9b2cc2d..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index2.js","sources":["/Users/sunmeng/Desktop/canvas/pages/index/index.vue?type=page"],"sourcesContent":["import MiniProgramPage from '/Users/sunmeng/Desktop/canvas/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["MiniProgramPage"],"mappings":";;AACA,GAAG,WAAWA,MAAe,eAAA;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/indexFu.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/indexFu.js.map deleted file mode 100644 index 800d0bd..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/indexFu.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"indexFu.js","sources":["pages/index/indexFu.vue","../../HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXhGdS52dWU"],"sourcesContent":["<template>\r\n\t<view>\r\n\t<indexZi></indexZi>\r\n\t</view>\r\n</template>\r\n\r\n<script setup>\r\n\timport indexZi from \"./index.vue\" \r\n\timport {\r\n\t\tref\r\n\t} from 'vue'\r\n\r\n</script>\r\n\r\n<style scoped>\r\n\r\n</style>","import MiniProgramPage from 'C:/Users/hp/Desktop/app/canvas/pages/index/indexFu.vue'\nwx.createPage(MiniProgramPage)"],"names":["MiniProgramPage"],"mappings":";;;;;AAOC,MAAM,UAAU,MAAW;;;;;;;;;ACN5B,GAAG,WAAWA,SAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index_step4.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index_step4.js.map deleted file mode 100644 index 530d150..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index_step4.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index_step4.js","sources":["pages/index/index_step4.vue?type=page"],"sourcesContent":["import MiniProgramPage from '/Users/sunmeng/Desktop/canvas/pages/index/index_step4.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/step2.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/step2.js.map deleted file mode 100644 index 461ca25..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/step2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"step2.js","sources":["pages/index/step2.vue?type=page"],"sourcesContent":["import MiniProgramPage from '/Users/sunmeng/Desktop/canvas/pages/index/step2.vue'\nwx.createPage(MiniProgramPage)"],"names":["MiniProgramPage"],"mappings":";;;;;;;;;;;;;;AACA,GAAG,WAAWA,SAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/static/canvas.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/static/canvas.js.map deleted file mode 100644 index fdea23c..0000000 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/static/canvas.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"canvas.js","sources":["static/canvas.jpg"],"sourcesContent":["export default \"__VITE_ASSET__72ea9485__\""],"names":[],"mappings":";;AAAA,MAAe,SAAA;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/app.js b/unpackage/dist/dev/mp-weixin/app.js deleted file mode 100644 index 38a674c..0000000 --- a/unpackage/dist/dev/mp-weixin/app.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); -const common_vendor = require("./common/vendor.js"); -if (!Math) { - "./pages/index/index_step4.js"; - "./pages/index/step2.js"; - "./pages/index/index.js"; -} -const _sfc_main = { - onLaunch: function() { - common_vendor.index.__f__("log", "at App.vue:4", "App Launch"); - }, - onShow: function() { - common_vendor.index.__f__("log", "at App.vue:7", "App Show"); - }, - onHide: function() { - common_vendor.index.__f__("log", "at App.vue:10", "App Hide"); - } -}; -function createApp() { - const app = common_vendor.createSSRApp(_sfc_main); - return { - app - }; -} -createApp().app.mount("#app"); -exports.createApp = createApp; -//# sourceMappingURL=../.sourcemap/mp-weixin/app.js.map diff --git a/unpackage/dist/dev/mp-weixin/app.json b/unpackage/dist/dev/mp-weixin/app.json deleted file mode 100644 index d4646dd..0000000 --- a/unpackage/dist/dev/mp-weixin/app.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "pages": [ - "pages/index/index_step4", - "pages/index/step2", - "pages/index/index" - ], - "window": { - "navigationBarTextStyle": "black", - "navigationBarTitleText": "uni-app", - "navigationBarBackgroundColor": "#F8F8F8", - "backgroundColor": "#F8F8F8" - }, - "usingComponents": {} -} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/app.wxss b/unpackage/dist/dev/mp-weixin/app.wxss deleted file mode 100644 index d4f3237..0000000 --- a/unpackage/dist/dev/mp-weixin/app.wxss +++ /dev/null @@ -1,3 +0,0 @@ - - /*每个页面公共css */ -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/dev/mp-weixin/common/vendor.js b/unpackage/dist/dev/mp-weixin/common/vendor.js deleted file mode 100644 index 69564f1..0000000 --- a/unpackage/dist/dev/mp-weixin/common/vendor.js +++ /dev/null @@ -1,7743 +0,0 @@ -"use strict"; -/** -* @vue/shared v3.4.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/ -function makeMap(str, expectsLowerCase) { - const set2 = new Set(str.split(",")); - return expectsLowerCase ? (val) => set2.has(val.toLowerCase()) : (val) => set2.has(val); -} -const EMPTY_OBJ = Object.freeze({}); -const EMPTY_ARR = Object.freeze([]); -const NOOP = () => { -}; -const NO = () => false; -const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter -(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); -const isModelListener = (key) => key.startsWith("onUpdate:"); -const extend = Object.assign; -const remove = (arr, el) => { - const i = arr.indexOf(el); - if (i > -1) { - arr.splice(i, 1); - } -}; -const hasOwnProperty$1 = Object.prototype.hasOwnProperty; -const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); -const isArray = Array.isArray; -const isMap = (val) => toTypeString(val) === "[object Map]"; -const isSet = (val) => toTypeString(val) === "[object Set]"; -const isFunction = (val) => typeof val === "function"; -const isString = (val) => typeof val === "string"; -const isSymbol = (val) => typeof val === "symbol"; -const isObject = (val) => val !== null && typeof val === "object"; -const isPromise = (val) => { - return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); -}; -const objectToString = Object.prototype.toString; -const toTypeString = (value) => objectToString.call(value); -const toRawType = (value) => { - return toTypeString(value).slice(8, -1); -}; -const isPlainObject = (val) => toTypeString(val) === "[object Object]"; -const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; -const isReservedProp = /* @__PURE__ */ makeMap( - // the leading comma is intentional so empty string "" is also included - ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" -); -const isBuiltInDirective = /* @__PURE__ */ makeMap( - "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" -); -const cacheStringFunction = (fn) => { - const cache = /* @__PURE__ */ Object.create(null); - return (str) => { - const hit = cache[str]; - return hit || (cache[str] = fn(str)); - }; -}; -const camelizeRE = /-(\w)/g; -const camelize = cacheStringFunction((str) => { - return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); -}); -const hyphenateRE = /\B([A-Z])/g; -const hyphenate = cacheStringFunction( - (str) => str.replace(hyphenateRE, "-$1").toLowerCase() -); -const capitalize = cacheStringFunction((str) => { - return str.charAt(0).toUpperCase() + str.slice(1); -}); -const toHandlerKey = cacheStringFunction((str) => { - const s = str ? `on${capitalize(str)}` : ``; - return s; -}); -const hasChanged = (value, oldValue) => !Object.is(value, oldValue); -const invokeArrayFns$1 = (fns, arg) => { - for (let i = 0; i < fns.length; i++) { - fns[i](arg); - } -}; -const def = (obj, key, value) => { - Object.defineProperty(obj, key, { - configurable: true, - enumerable: false, - value - }); -}; -const looseToNumber = (val) => { - const n = parseFloat(val); - return isNaN(n) ? val : n; -}; -const LOCALE_ZH_HANS = "zh-Hans"; -const LOCALE_ZH_HANT = "zh-Hant"; -const LOCALE_EN = "en"; -const LOCALE_FR = "fr"; -const LOCALE_ES = "es"; -function include(str, parts) { - return !!parts.find((part) => str.indexOf(part) !== -1); -} -function startsWith(str, parts) { - return parts.find((part) => str.indexOf(part) === 0); -} -function normalizeLocale(locale, messages) { - if (!locale) { - return; - } - locale = locale.trim().replace(/_/g, "-"); - if (messages && messages[locale]) { - return locale; - } - locale = locale.toLowerCase(); - if (locale === "chinese") { - return LOCALE_ZH_HANS; - } - if (locale.indexOf("zh") === 0) { - if (locale.indexOf("-hans") > -1) { - return LOCALE_ZH_HANS; - } - if (locale.indexOf("-hant") > -1) { - return LOCALE_ZH_HANT; - } - if (include(locale, ["-tw", "-hk", "-mo", "-cht"])) { - return LOCALE_ZH_HANT; - } - return LOCALE_ZH_HANS; - } - let locales = [LOCALE_EN, LOCALE_FR, LOCALE_ES]; - if (messages && Object.keys(messages).length > 0) { - locales = Object.keys(messages); - } - const lang = startsWith(locale, locales); - if (lang) { - return lang; - } -} -const SLOT_DEFAULT_NAME = "d"; -const ON_SHOW = "onShow"; -const ON_HIDE = "onHide"; -const ON_LAUNCH = "onLaunch"; -const ON_ERROR = "onError"; -const ON_THEME_CHANGE = "onThemeChange"; -const ON_PAGE_NOT_FOUND = "onPageNotFound"; -const ON_UNHANDLE_REJECTION = "onUnhandledRejection"; -const ON_EXIT = "onExit"; -const ON_LOAD = "onLoad"; -const ON_READY = "onReady"; -const ON_UNLOAD = "onUnload"; -const ON_INIT = "onInit"; -const ON_SAVE_EXIT_STATE = "onSaveExitState"; -const ON_RESIZE = "onResize"; -const ON_BACK_PRESS = "onBackPress"; -const ON_PAGE_SCROLL = "onPageScroll"; -const ON_TAB_ITEM_TAP = "onTabItemTap"; -const ON_REACH_BOTTOM = "onReachBottom"; -const ON_PULL_DOWN_REFRESH = "onPullDownRefresh"; -const ON_SHARE_TIMELINE = "onShareTimeline"; -const ON_SHARE_CHAT = "onShareChat"; -const ON_ADD_TO_FAVORITES = "onAddToFavorites"; -const ON_SHARE_APP_MESSAGE = "onShareAppMessage"; -const ON_NAVIGATION_BAR_BUTTON_TAP = "onNavigationBarButtonTap"; -const ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED = "onNavigationBarSearchInputClicked"; -const ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED = "onNavigationBarSearchInputChanged"; -const ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED = "onNavigationBarSearchInputConfirmed"; -const ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED = "onNavigationBarSearchInputFocusChanged"; -const VIRTUAL_HOST_STYLE = "virtualHostStyle"; -const VIRTUAL_HOST_CLASS = "virtualHostClass"; -const VIRTUAL_HOST_HIDDEN = "virtualHostHidden"; -const VIRTUAL_HOST_ID = "virtualHostId"; -function hasLeadingSlash(str) { - return str.indexOf("/") === 0; -} -function addLeadingSlash(str) { - return hasLeadingSlash(str) ? str : "/" + str; -} -const invokeArrayFns = (fns, arg) => { - let ret; - for (let i = 0; i < fns.length; i++) { - ret = fns[i](arg); - } - return ret; -}; -function once(fn, ctx = null) { - let res; - return (...args) => { - if (fn) { - res = fn.apply(ctx, args); - fn = null; - } - return res; - }; -} -function getValueByDataPath(obj, path) { - if (!isString(path)) { - return; - } - path = path.replace(/\[(\d+)\]/g, ".$1"); - const parts = path.split("."); - let key = parts[0]; - if (!obj) { - obj = {}; - } - if (parts.length === 1) { - return obj[key]; - } - return getValueByDataPath(obj[key], parts.slice(1).join(".")); -} -function sortObject(obj) { - let sortObj = {}; - if (isPlainObject(obj)) { - Object.keys(obj).sort().forEach((key) => { - const _key = key; - sortObj[_key] = obj[_key]; - }); - } - return !Object.keys(sortObj) ? obj : sortObj; -} -const customizeRE = /:/g; -function customizeEvent(str) { - return camelize(str.replace(customizeRE, "-")); -} -const encode = encodeURIComponent; -function stringifyQuery(obj, encodeStr = encode) { - const res = obj ? Object.keys(obj).map((key) => { - let val = obj[key]; - if (typeof val === void 0 || val === null) { - val = ""; - } else if (isPlainObject(val)) { - val = JSON.stringify(val); - } - return encodeStr(key) + "=" + encodeStr(val); - }).filter((x) => x.length > 0).join("&") : null; - return res ? `?${res}` : ""; -} -const PAGE_HOOKS = [ - ON_INIT, - ON_LOAD, - ON_SHOW, - ON_HIDE, - ON_UNLOAD, - ON_BACK_PRESS, - ON_PAGE_SCROLL, - ON_TAB_ITEM_TAP, - ON_REACH_BOTTOM, - ON_PULL_DOWN_REFRESH, - ON_SHARE_TIMELINE, - ON_SHARE_APP_MESSAGE, - ON_SHARE_CHAT, - ON_ADD_TO_FAVORITES, - ON_SAVE_EXIT_STATE, - ON_NAVIGATION_BAR_BUTTON_TAP, - ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, - ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, - ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, - ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED -]; -function isRootHook(name) { - return PAGE_HOOKS.indexOf(name) > -1; -} -const UniLifecycleHooks = [ - ON_SHOW, - ON_HIDE, - ON_LAUNCH, - ON_ERROR, - ON_THEME_CHANGE, - ON_PAGE_NOT_FOUND, - ON_UNHANDLE_REJECTION, - ON_EXIT, - ON_INIT, - ON_LOAD, - ON_READY, - ON_UNLOAD, - ON_RESIZE, - ON_BACK_PRESS, - ON_PAGE_SCROLL, - ON_TAB_ITEM_TAP, - ON_REACH_BOTTOM, - ON_PULL_DOWN_REFRESH, - ON_SHARE_TIMELINE, - ON_ADD_TO_FAVORITES, - ON_SHARE_APP_MESSAGE, - ON_SHARE_CHAT, - ON_SAVE_EXIT_STATE, - ON_NAVIGATION_BAR_BUTTON_TAP, - ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, - ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, - ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, - ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED -]; -const MINI_PROGRAM_PAGE_RUNTIME_HOOKS = /* @__PURE__ */ (() => { - return { - onPageScroll: 1, - onShareAppMessage: 1 << 1, - onShareTimeline: 1 << 2 - }; -})(); -function isUniLifecycleHook(name, value, checkType = true) { - if (checkType && !isFunction(value)) { - return false; - } - if (UniLifecycleHooks.indexOf(name) > -1) { - return true; - } else if (name.indexOf("on") === 0) { - return true; - } - return false; -} -let vueApp; -const createVueAppHooks = []; -function onCreateVueApp(hook) { - if (vueApp) { - return hook(vueApp); - } - createVueAppHooks.push(hook); -} -function invokeCreateVueAppHook(app) { - vueApp = app; - createVueAppHooks.forEach((hook) => hook(app)); -} -const invokeCreateErrorHandler = once((app, createErrorHandler2) => { - return createErrorHandler2(app); -}); -const E = function() { -}; -E.prototype = { - _id: 1, - on: function(name, callback, ctx) { - var e = this.e || (this.e = {}); - (e[name] || (e[name] = [])).push({ - fn: callback, - ctx, - _id: this._id - }); - return this._id++; - }, - once: function(name, callback, ctx) { - var self2 = this; - function listener() { - self2.off(name, listener); - callback.apply(ctx, arguments); - } - listener._ = callback; - return this.on(name, listener, ctx); - }, - emit: function(name) { - var data = [].slice.call(arguments, 1); - var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); - var i = 0; - var len = evtArr.length; - for (i; i < len; i++) { - evtArr[i].fn.apply(evtArr[i].ctx, data); - } - return this; - }, - off: function(name, event) { - var e = this.e || (this.e = {}); - var evts = e[name]; - var liveEvents = []; - if (evts && event) { - for (var i = evts.length - 1; i >= 0; i--) { - if (evts[i].fn === event || evts[i].fn._ === event || evts[i]._id === event) { - evts.splice(i, 1); - break; - } - } - liveEvents = evts; - } - liveEvents.length ? e[name] = liveEvents : delete e[name]; - return this; - } -}; -var E$1 = E; -/** -* @dcloudio/uni-mp-vue v3.4.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/ -function warn$2(msg, ...args) { - console.warn(`[Vue warn] ${msg}`, ...args); -} -let activeEffectScope; -class EffectScope { - constructor(detached = false) { - this.detached = detached; - this._active = true; - this.effects = []; - this.cleanups = []; - this.parent = activeEffectScope; - if (!detached && activeEffectScope) { - this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( - this - ) - 1; - } - } - get active() { - return this._active; - } - run(fn) { - if (this._active) { - const currentEffectScope = activeEffectScope; - try { - activeEffectScope = this; - return fn(); - } finally { - activeEffectScope = currentEffectScope; - } - } else { - warn$2(`cannot run an inactive effect scope.`); - } - } - /** - * This should only be called on non-detached scopes - * @internal - */ - on() { - activeEffectScope = this; - } - /** - * This should only be called on non-detached scopes - * @internal - */ - off() { - activeEffectScope = this.parent; - } - stop(fromParent) { - if (this._active) { - let i, l; - for (i = 0, l = this.effects.length; i < l; i++) { - this.effects[i].stop(); - } - for (i = 0, l = this.cleanups.length; i < l; i++) { - this.cleanups[i](); - } - if (this.scopes) { - for (i = 0, l = this.scopes.length; i < l; i++) { - this.scopes[i].stop(true); - } - } - if (!this.detached && this.parent && !fromParent) { - const last = this.parent.scopes.pop(); - if (last && last !== this) { - this.parent.scopes[this.index] = last; - last.index = this.index; - } - } - this.parent = void 0; - this._active = false; - } - } -} -function recordEffectScope(effect2, scope = activeEffectScope) { - if (scope && scope.active) { - scope.effects.push(effect2); - } -} -function getCurrentScope() { - return activeEffectScope; -} -let activeEffect; -class ReactiveEffect { - constructor(fn, trigger2, scheduler, scope) { - this.fn = fn; - this.trigger = trigger2; - this.scheduler = scheduler; - this.active = true; - this.deps = []; - this._dirtyLevel = 4; - this._trackId = 0; - this._runnings = 0; - this._shouldSchedule = false; - this._depsLength = 0; - recordEffectScope(this, scope); - } - get dirty() { - if (this._dirtyLevel === 2 || this._dirtyLevel === 3) { - this._dirtyLevel = 1; - pauseTracking(); - for (let i = 0; i < this._depsLength; i++) { - const dep = this.deps[i]; - if (dep.computed) { - triggerComputed(dep.computed); - if (this._dirtyLevel >= 4) { - break; - } - } - } - if (this._dirtyLevel === 1) { - this._dirtyLevel = 0; - } - resetTracking(); - } - return this._dirtyLevel >= 4; - } - set dirty(v) { - this._dirtyLevel = v ? 4 : 0; - } - run() { - this._dirtyLevel = 0; - if (!this.active) { - return this.fn(); - } - let lastShouldTrack = shouldTrack; - let lastEffect = activeEffect; - try { - shouldTrack = true; - activeEffect = this; - this._runnings++; - preCleanupEffect(this); - return this.fn(); - } finally { - postCleanupEffect(this); - this._runnings--; - activeEffect = lastEffect; - shouldTrack = lastShouldTrack; - } - } - stop() { - var _a; - if (this.active) { - preCleanupEffect(this); - postCleanupEffect(this); - (_a = this.onStop) == null ? void 0 : _a.call(this); - this.active = false; - } - } -} -function triggerComputed(computed2) { - return computed2.value; -} -function preCleanupEffect(effect2) { - effect2._trackId++; - effect2._depsLength = 0; -} -function postCleanupEffect(effect2) { - if (effect2.deps.length > effect2._depsLength) { - for (let i = effect2._depsLength; i < effect2.deps.length; i++) { - cleanupDepEffect(effect2.deps[i], effect2); - } - effect2.deps.length = effect2._depsLength; - } -} -function cleanupDepEffect(dep, effect2) { - const trackId = dep.get(effect2); - if (trackId !== void 0 && effect2._trackId !== trackId) { - dep.delete(effect2); - if (dep.size === 0) { - dep.cleanup(); - } - } -} -let shouldTrack = true; -let pauseScheduleStack = 0; -const trackStack = []; -function pauseTracking() { - trackStack.push(shouldTrack); - shouldTrack = false; -} -function resetTracking() { - const last = trackStack.pop(); - shouldTrack = last === void 0 ? true : last; -} -function pauseScheduling() { - pauseScheduleStack++; -} -function resetScheduling() { - pauseScheduleStack--; - while (!pauseScheduleStack && queueEffectSchedulers.length) { - queueEffectSchedulers.shift()(); - } -} -function trackEffect(effect2, dep, debuggerEventExtraInfo) { - var _a; - if (dep.get(effect2) !== effect2._trackId) { - dep.set(effect2, effect2._trackId); - const oldDep = effect2.deps[effect2._depsLength]; - if (oldDep !== dep) { - if (oldDep) { - cleanupDepEffect(oldDep, effect2); - } - effect2.deps[effect2._depsLength++] = dep; - } else { - effect2._depsLength++; - } - { - (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); - } - } -} -const queueEffectSchedulers = []; -function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) { - var _a; - pauseScheduling(); - for (const effect2 of dep.keys()) { - let tracking; - if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { - effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0); - effect2._dirtyLevel = dirtyLevel; - } - if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { - { - (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); - } - effect2.trigger(); - if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) { - effect2._shouldSchedule = false; - if (effect2.scheduler) { - queueEffectSchedulers.push(effect2.scheduler); - } - } - } - } - resetScheduling(); -} -const createDep = (cleanup, computed2) => { - const dep = /* @__PURE__ */ new Map(); - dep.cleanup = cleanup; - dep.computed = computed2; - return dep; -}; -const targetMap = /* @__PURE__ */ new WeakMap(); -const ITERATE_KEY = Symbol("iterate"); -const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate"); -function track(target, type, key) { - if (shouldTrack && activeEffect) { - let depsMap = targetMap.get(target); - if (!depsMap) { - targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); - } - let dep = depsMap.get(key); - if (!dep) { - depsMap.set(key, dep = createDep(() => depsMap.delete(key))); - } - trackEffect( - activeEffect, - dep, - { - target, - type, - key - } - ); - } -} -function trigger(target, type, key, newValue, oldValue, oldTarget) { - const depsMap = targetMap.get(target); - if (!depsMap) { - return; - } - let deps = []; - if (type === "clear") { - deps = [...depsMap.values()]; - } else if (key === "length" && isArray(target)) { - const newLength = Number(newValue); - depsMap.forEach((dep, key2) => { - if (key2 === "length" || !isSymbol(key2) && key2 >= newLength) { - deps.push(dep); - } - }); - } else { - if (key !== void 0) { - deps.push(depsMap.get(key)); - } - switch (type) { - case "add": - if (!isArray(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - if (isMap(target)) { - deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } else if (isIntegerKey(key)) { - deps.push(depsMap.get("length")); - } - break; - case "delete": - if (!isArray(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - if (isMap(target)) { - deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } - break; - case "set": - if (isMap(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - } - break; - } - } - pauseScheduling(); - for (const dep of deps) { - if (dep) { - triggerEffects( - dep, - 4, - { - target, - type, - key, - newValue, - oldValue, - oldTarget - } - ); - } - } - resetScheduling(); -} -const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); -const builtInSymbols = new Set( - /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) -); -const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); -function createArrayInstrumentations() { - const instrumentations = {}; - ["includes", "indexOf", "lastIndexOf"].forEach((key) => { - instrumentations[key] = function(...args) { - const arr = toRaw(this); - for (let i = 0, l = this.length; i < l; i++) { - track(arr, "get", i + ""); - } - const res = arr[key](...args); - if (res === -1 || res === false) { - return arr[key](...args.map(toRaw)); - } else { - return res; - } - }; - }); - ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { - instrumentations[key] = function(...args) { - pauseTracking(); - pauseScheduling(); - const res = toRaw(this)[key].apply(this, args); - resetScheduling(); - resetTracking(); - return res; - }; - }); - return instrumentations; -} -function hasOwnProperty(key) { - const obj = toRaw(this); - track(obj, "has", key); - return obj.hasOwnProperty(key); -} -class BaseReactiveHandler { - constructor(_isReadonly = false, _isShallow = false) { - this._isReadonly = _isReadonly; - this._isShallow = _isShallow; - } - get(target, key, receiver) { - const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; - if (key === "__v_isReactive") { - return !isReadonly2; - } else if (key === "__v_isReadonly") { - return isReadonly2; - } else if (key === "__v_isShallow") { - return isShallow2; - } else if (key === "__v_raw") { - if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype - // this means the reciever is a user proxy of the reactive proxy - Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { - return target; - } - return; - } - const targetIsArray = isArray(target); - if (!isReadonly2) { - if (targetIsArray && hasOwn(arrayInstrumentations, key)) { - return Reflect.get(arrayInstrumentations, key, receiver); - } - if (key === "hasOwnProperty") { - return hasOwnProperty; - } - } - const res = Reflect.get(target, key, receiver); - if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { - return res; - } - if (!isReadonly2) { - track(target, "get", key); - } - if (isShallow2) { - return res; - } - if (isRef(res)) { - return targetIsArray && isIntegerKey(key) ? res : res.value; - } - if (isObject(res)) { - return isReadonly2 ? readonly(res) : reactive(res); - } - return res; - } -} -class MutableReactiveHandler extends BaseReactiveHandler { - constructor(isShallow2 = false) { - super(false, isShallow2); - } - set(target, key, value, receiver) { - let oldValue = target[key]; - if (!this._isShallow) { - const isOldValueReadonly = isReadonly(oldValue); - if (!isShallow(value) && !isReadonly(value)) { - oldValue = toRaw(oldValue); - value = toRaw(value); - } - if (!isArray(target) && isRef(oldValue) && !isRef(value)) { - if (isOldValueReadonly) { - return false; - } else { - oldValue.value = value; - return true; - } - } - } - const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); - const result = Reflect.set(target, key, value, receiver); - if (target === toRaw(receiver)) { - if (!hadKey) { - trigger(target, "add", key, value); - } else if (hasChanged(value, oldValue)) { - trigger(target, "set", key, value, oldValue); - } - } - return result; - } - deleteProperty(target, key) { - const hadKey = hasOwn(target, key); - const oldValue = target[key]; - const result = Reflect.deleteProperty(target, key); - if (result && hadKey) { - trigger(target, "delete", key, void 0, oldValue); - } - return result; - } - has(target, key) { - const result = Reflect.has(target, key); - if (!isSymbol(key) || !builtInSymbols.has(key)) { - track(target, "has", key); - } - return result; - } - ownKeys(target) { - track( - target, - "iterate", - isArray(target) ? "length" : ITERATE_KEY - ); - return Reflect.ownKeys(target); - } -} -class ReadonlyReactiveHandler extends BaseReactiveHandler { - constructor(isShallow2 = false) { - super(true, isShallow2); - } - set(target, key) { - { - warn$2( - `Set operation on key "${String(key)}" failed: target is readonly.`, - target - ); - } - return true; - } - deleteProperty(target, key) { - { - warn$2( - `Delete operation on key "${String(key)}" failed: target is readonly.`, - target - ); - } - return true; - } -} -const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); -const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); -const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler( - true -); -const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); -const toShallow = (value) => value; -const getProto = (v) => Reflect.getPrototypeOf(v); -function get(target, key, isReadonly2 = false, isShallow2 = false) { - target = target["__v_raw"]; - const rawTarget = toRaw(target); - const rawKey = toRaw(key); - if (!isReadonly2) { - if (hasChanged(key, rawKey)) { - track(rawTarget, "get", key); - } - track(rawTarget, "get", rawKey); - } - const { has: has2 } = getProto(rawTarget); - const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; - if (has2.call(rawTarget, key)) { - return wrap(target.get(key)); - } else if (has2.call(rawTarget, rawKey)) { - return wrap(target.get(rawKey)); - } else if (target !== rawTarget) { - target.get(key); - } -} -function has$1(key, isReadonly2 = false) { - const target = this["__v_raw"]; - const rawTarget = toRaw(target); - const rawKey = toRaw(key); - if (!isReadonly2) { - if (hasChanged(key, rawKey)) { - track(rawTarget, "has", key); - } - track(rawTarget, "has", rawKey); - } - return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); -} -function size(target, isReadonly2 = false) { - target = target["__v_raw"]; - !isReadonly2 && track(toRaw(target), "iterate", ITERATE_KEY); - return Reflect.get(target, "size", target); -} -function add(value) { - value = toRaw(value); - const target = toRaw(this); - const proto = getProto(target); - const hadKey = proto.has.call(target, value); - if (!hadKey) { - target.add(value); - trigger(target, "add", value, value); - } - return this; -} -function set$1(key, value) { - value = toRaw(value); - const target = toRaw(this); - const { has: has2, get: get2 } = getProto(target); - let hadKey = has2.call(target, key); - if (!hadKey) { - key = toRaw(key); - hadKey = has2.call(target, key); - } else { - checkIdentityKeys(target, has2, key); - } - const oldValue = get2.call(target, key); - target.set(key, value); - if (!hadKey) { - trigger(target, "add", key, value); - } else if (hasChanged(value, oldValue)) { - trigger(target, "set", key, value, oldValue); - } - return this; -} -function deleteEntry(key) { - const target = toRaw(this); - const { has: has2, get: get2 } = getProto(target); - let hadKey = has2.call(target, key); - if (!hadKey) { - key = toRaw(key); - hadKey = has2.call(target, key); - } else { - checkIdentityKeys(target, has2, key); - } - const oldValue = get2 ? get2.call(target, key) : void 0; - const result = target.delete(key); - if (hadKey) { - trigger(target, "delete", key, void 0, oldValue); - } - return result; -} -function clear() { - const target = toRaw(this); - const hadItems = target.size !== 0; - const oldTarget = isMap(target) ? new Map(target) : new Set(target); - const result = target.clear(); - if (hadItems) { - trigger(target, "clear", void 0, void 0, oldTarget); - } - return result; -} -function createForEach(isReadonly2, isShallow2) { - return function forEach(callback, thisArg) { - const observed = this; - const target = observed["__v_raw"]; - const rawTarget = toRaw(target); - const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; - !isReadonly2 && track(rawTarget, "iterate", ITERATE_KEY); - return target.forEach((value, key) => { - return callback.call(thisArg, wrap(value), wrap(key), observed); - }); - }; -} -function createIterableMethod(method, isReadonly2, isShallow2) { - return function(...args) { - const target = this["__v_raw"]; - const rawTarget = toRaw(target); - const targetIsMap = isMap(rawTarget); - const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; - const isKeyOnly = method === "keys" && targetIsMap; - const innerIterator = target[method](...args); - const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; - !isReadonly2 && track( - rawTarget, - "iterate", - isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY - ); - return { - // iterator protocol - next() { - const { value, done } = innerIterator.next(); - return done ? { value, done } : { - value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), - done - }; - }, - // iterable protocol - [Symbol.iterator]() { - return this; - } - }; - }; -} -function createReadonlyMethod(type) { - return function(...args) { - { - const key = args[0] ? `on key "${args[0]}" ` : ``; - warn$2( - `${capitalize(type)} operation ${key}failed: target is readonly.`, - toRaw(this) - ); - } - return type === "delete" ? false : type === "clear" ? void 0 : this; - }; -} -function createInstrumentations() { - const mutableInstrumentations2 = { - get(key) { - return get(this, key); - }, - get size() { - return size(this); - }, - has: has$1, - add, - set: set$1, - delete: deleteEntry, - clear, - forEach: createForEach(false, false) - }; - const shallowInstrumentations2 = { - get(key) { - return get(this, key, false, true); - }, - get size() { - return size(this); - }, - has: has$1, - add, - set: set$1, - delete: deleteEntry, - clear, - forEach: createForEach(false, true) - }; - const readonlyInstrumentations2 = { - get(key) { - return get(this, key, true); - }, - get size() { - return size(this, true); - }, - has(key) { - return has$1.call(this, key, true); - }, - add: createReadonlyMethod("add"), - set: createReadonlyMethod("set"), - delete: createReadonlyMethod("delete"), - clear: createReadonlyMethod("clear"), - forEach: createForEach(true, false) - }; - const shallowReadonlyInstrumentations2 = { - get(key) { - return get(this, key, true, true); - }, - get size() { - return size(this, true); - }, - has(key) { - return has$1.call(this, key, true); - }, - add: createReadonlyMethod("add"), - set: createReadonlyMethod("set"), - delete: createReadonlyMethod("delete"), - clear: createReadonlyMethod("clear"), - forEach: createForEach(true, true) - }; - const iteratorMethods = [ - "keys", - "values", - "entries", - Symbol.iterator - ]; - iteratorMethods.forEach((method) => { - mutableInstrumentations2[method] = createIterableMethod(method, false, false); - readonlyInstrumentations2[method] = createIterableMethod(method, true, false); - shallowInstrumentations2[method] = createIterableMethod(method, false, true); - shallowReadonlyInstrumentations2[method] = createIterableMethod( - method, - true, - true - ); - }); - return [ - mutableInstrumentations2, - readonlyInstrumentations2, - shallowInstrumentations2, - shallowReadonlyInstrumentations2 - ]; -} -const [ - mutableInstrumentations, - readonlyInstrumentations, - shallowInstrumentations, - shallowReadonlyInstrumentations -] = /* @__PURE__ */ createInstrumentations(); -function createInstrumentationGetter(isReadonly2, shallow) { - const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations; - return (target, key, receiver) => { - if (key === "__v_isReactive") { - return !isReadonly2; - } else if (key === "__v_isReadonly") { - return isReadonly2; - } else if (key === "__v_raw") { - return target; - } - return Reflect.get( - hasOwn(instrumentations, key) && key in target ? instrumentations : target, - key, - receiver - ); - }; -} -const mutableCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(false, false) -}; -const shallowCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(false, true) -}; -const readonlyCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(true, false) -}; -const shallowReadonlyCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(true, true) -}; -function checkIdentityKeys(target, has2, key) { - const rawKey = toRaw(key); - if (rawKey !== key && has2.call(target, rawKey)) { - const type = toRawType(target); - warn$2( - `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.` - ); - } -} -const reactiveMap = /* @__PURE__ */ new WeakMap(); -const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); -const readonlyMap = /* @__PURE__ */ new WeakMap(); -const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); -function targetTypeMap(rawType) { - switch (rawType) { - case "Object": - case "Array": - return 1; - case "Map": - case "Set": - case "WeakMap": - case "WeakSet": - return 2; - default: - return 0; - } -} -function getTargetType(value) { - return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); -} -function reactive(target) { - if (isReadonly(target)) { - return target; - } - return createReactiveObject( - target, - false, - mutableHandlers, - mutableCollectionHandlers, - reactiveMap - ); -} -function shallowReactive(target) { - return createReactiveObject( - target, - false, - shallowReactiveHandlers, - shallowCollectionHandlers, - shallowReactiveMap - ); -} -function readonly(target) { - return createReactiveObject( - target, - true, - readonlyHandlers, - readonlyCollectionHandlers, - readonlyMap - ); -} -function shallowReadonly(target) { - return createReactiveObject( - target, - true, - shallowReadonlyHandlers, - shallowReadonlyCollectionHandlers, - shallowReadonlyMap - ); -} -function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { - if (!isObject(target)) { - { - warn$2(`value cannot be made reactive: ${String(target)}`); - } - return target; - } - if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { - return target; - } - const existingProxy = proxyMap.get(target); - if (existingProxy) { - return existingProxy; - } - const targetType = getTargetType(target); - if (targetType === 0) { - return target; - } - const proxy = new Proxy( - target, - targetType === 2 ? collectionHandlers : baseHandlers - ); - proxyMap.set(target, proxy); - return proxy; -} -function isReactive(value) { - if (isReadonly(value)) { - return isReactive(value["__v_raw"]); - } - return !!(value && value["__v_isReactive"]); -} -function isReadonly(value) { - return !!(value && value["__v_isReadonly"]); -} -function isShallow(value) { - return !!(value && value["__v_isShallow"]); -} -function toRaw(observed) { - const raw = observed && observed["__v_raw"]; - return raw ? toRaw(raw) : observed; -} -function markRaw(value) { - if (Object.isExtensible(value)) { - def(value, "__v_skip", true); - } - return value; -} -const toReactive = (value) => isObject(value) ? reactive(value) : value; -const toReadonly = (value) => isObject(value) ? readonly(value) : value; -const 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`; -class ComputedRefImpl { - constructor(getter, _setter, isReadonly2, isSSR) { - this.getter = getter; - this._setter = _setter; - this.dep = void 0; - this.__v_isRef = true; - this["__v_isReadonly"] = false; - this.effect = new ReactiveEffect( - () => getter(this._value), - () => triggerRefValue( - this, - this.effect._dirtyLevel === 2 ? 2 : 3 - ) - ); - this.effect.computed = this; - this.effect.active = this._cacheable = !isSSR; - this["__v_isReadonly"] = isReadonly2; - } - get value() { - const self = toRaw(this); - if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) { - triggerRefValue(self, 4); - } - trackRefValue(self); - if (self.effect._dirtyLevel >= 2) { - if (this._warnRecursive) { - warn$2(COMPUTED_SIDE_EFFECT_WARN, ` - -getter: `, this.getter); - } - triggerRefValue(self, 2); - } - return self._value; - } - set value(newValue) { - this._setter(newValue); - } - // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x - get _dirty() { - return this.effect.dirty; - } - set _dirty(v) { - this.effect.dirty = v; - } - // #endregion -} -function computed$1(getterOrOptions, debugOptions, isSSR = false) { - let getter; - let setter; - const onlyGetter = isFunction(getterOrOptions); - if (onlyGetter) { - getter = getterOrOptions; - setter = () => { - warn$2("Write operation failed: computed value is readonly"); - }; - } else { - getter = getterOrOptions.get; - setter = getterOrOptions.set; - } - const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); - if (debugOptions && !isSSR) { - cRef.effect.onTrack = debugOptions.onTrack; - cRef.effect.onTrigger = debugOptions.onTrigger; - } - return cRef; -} -function trackRefValue(ref2) { - var _a; - if (shouldTrack && activeEffect) { - ref2 = toRaw(ref2); - trackEffect( - activeEffect, - (_a = ref2.dep) != null ? _a : ref2.dep = createDep( - () => ref2.dep = void 0, - ref2 instanceof ComputedRefImpl ? ref2 : void 0 - ), - { - target: ref2, - type: "get", - key: "value" - } - ); - } -} -function triggerRefValue(ref2, dirtyLevel = 4, newVal) { - ref2 = toRaw(ref2); - const dep = ref2.dep; - if (dep) { - triggerEffects( - dep, - dirtyLevel, - { - target: ref2, - type: "set", - key: "value", - newValue: newVal - } - ); - } -} -function isRef(r2) { - return !!(r2 && r2.__v_isRef === true); -} -function ref(value) { - return createRef(value, false); -} -function createRef(rawValue, shallow) { - if (isRef(rawValue)) { - return rawValue; - } - return new RefImpl(rawValue, shallow); -} -class RefImpl { - constructor(value, __v_isShallow) { - this.__v_isShallow = __v_isShallow; - this.dep = void 0; - this.__v_isRef = true; - this._rawValue = __v_isShallow ? value : toRaw(value); - this._value = __v_isShallow ? value : toReactive(value); - } - get value() { - trackRefValue(this); - return this._value; - } - set value(newVal) { - const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); - newVal = useDirectValue ? newVal : toRaw(newVal); - if (hasChanged(newVal, this._rawValue)) { - this._rawValue = newVal; - this._value = useDirectValue ? newVal : toReactive(newVal); - triggerRefValue(this, 4, newVal); - } - } -} -function unref(ref2) { - return isRef(ref2) ? ref2.value : ref2; -} -const shallowUnwrapHandlers = { - get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), - set: (target, key, value, receiver) => { - const oldValue = target[key]; - if (isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; - } else { - return Reflect.set(target, key, value, receiver); - } - } -}; -function proxyRefs(objectWithRefs) { - return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); -} -const stack = []; -function pushWarningContext(vnode) { - stack.push(vnode); -} -function popWarningContext() { - stack.pop(); -} -function warn$1(msg, ...args) { - pauseTracking(); - const instance = stack.length ? stack[stack.length - 1].component : null; - const appWarnHandler = instance && instance.appContext.config.warnHandler; - const trace = getComponentTrace(); - if (appWarnHandler) { - callWithErrorHandling( - appWarnHandler, - instance, - 11, - [ - msg + args.map((a) => { - var _a, _b; - return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); - }).join(""), - instance && instance.proxy, - trace.map( - ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` - ).join("\n"), - trace - ] - ); - } else { - const warnArgs = [`[Vue warn]: ${msg}`, ...args]; - if (trace.length && // avoid spamming console during tests - true) { - warnArgs.push(` -`, ...formatTrace(trace)); - } - console.warn(...warnArgs); - } - resetTracking(); -} -function getComponentTrace() { - let currentVNode = stack[stack.length - 1]; - if (!currentVNode) { - return []; - } - const normalizedStack = []; - while (currentVNode) { - const last = normalizedStack[0]; - if (last && last.vnode === currentVNode) { - last.recurseCount++; - } else { - normalizedStack.push({ - vnode: currentVNode, - recurseCount: 0 - }); - } - const parentInstance = currentVNode.component && currentVNode.component.parent; - currentVNode = parentInstance && parentInstance.vnode; - } - return normalizedStack; -} -function formatTrace(trace) { - const logs = []; - trace.forEach((entry, i) => { - logs.push(...i === 0 ? [] : [` -`], ...formatTraceEntry(entry)); - }); - return logs; -} -function formatTraceEntry({ vnode, recurseCount }) { - const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; - const isRoot = vnode.component ? vnode.component.parent == null : false; - const open = ` at <${formatComponentName( - vnode.component, - vnode.type, - isRoot - )}`; - const close = `>` + postfix; - return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; -} -function formatProps(props) { - const res = []; - const keys = Object.keys(props); - keys.slice(0, 3).forEach((key) => { - res.push(...formatProp(key, props[key])); - }); - if (keys.length > 3) { - res.push(` ...`); - } - return res; -} -function formatProp(key, value, raw) { - if (isString(value)) { - value = JSON.stringify(value); - return raw ? value : [`${key}=${value}`]; - } else if (typeof value === "number" || typeof value === "boolean" || value == null) { - return raw ? value : [`${key}=${value}`]; - } else if (isRef(value)) { - value = formatProp(key, toRaw(value.value), true); - return raw ? value : [`${key}=Ref<`, value, `>`]; - } else if (isFunction(value)) { - return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; - } else { - value = toRaw(value); - return raw ? value : [`${key}=`, value]; - } -} -const ErrorTypeStrings = { - ["sp"]: "serverPrefetch hook", - ["bc"]: "beforeCreate hook", - ["c"]: "created hook", - ["bm"]: "beforeMount hook", - ["m"]: "mounted hook", - ["bu"]: "beforeUpdate hook", - ["u"]: "updated", - ["bum"]: "beforeUnmount hook", - ["um"]: "unmounted hook", - ["a"]: "activated hook", - ["da"]: "deactivated hook", - ["ec"]: "errorCaptured hook", - ["rtc"]: "renderTracked hook", - ["rtg"]: "renderTriggered hook", - [0]: "setup function", - [1]: "render function", - [2]: "watcher getter", - [3]: "watcher callback", - [4]: "watcher cleanup function", - [5]: "native event handler", - [6]: "component event handler", - [7]: "vnode hook", - [8]: "directive hook", - [9]: "transition hook", - [10]: "app errorHandler", - [11]: "app warnHandler", - [12]: "ref function", - [13]: "async component loader", - [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ." -}; -function callWithErrorHandling(fn, instance, type, args) { - try { - return args ? fn(...args) : fn(); - } catch (err) { - handleError(err, instance, type); - } -} -function callWithAsyncErrorHandling(fn, instance, type, args) { - if (isFunction(fn)) { - const res = callWithErrorHandling(fn, instance, type, args); - if (res && isPromise(res)) { - res.catch((err) => { - handleError(err, instance, type); - }); - } - return res; - } - const values = []; - for (let i = 0; i < fn.length; i++) { - values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); - } - return values; -} -function handleError(err, instance, type, throwInDev = true) { - const contextVNode = instance ? instance.vnode : null; - if (instance) { - let cur = instance.parent; - const exposedInstance = instance.proxy; - const errorInfo = ErrorTypeStrings[type] || type; - while (cur) { - const errorCapturedHooks = cur.ec; - if (errorCapturedHooks) { - for (let i = 0; i < errorCapturedHooks.length; i++) { - if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { - return; - } - } - } - cur = cur.parent; - } - const appErrorHandler = instance.appContext.config.errorHandler; - if (appErrorHandler) { - callWithErrorHandling( - appErrorHandler, - null, - 10, - [err, exposedInstance, errorInfo] - ); - return; - } - } - logError(err, type, contextVNode, throwInDev); -} -function logError(err, type, contextVNode, throwInDev = true) { - { - const info = ErrorTypeStrings[type] || type; - if (contextVNode) { - pushWarningContext(contextVNode); - } - warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); - if (contextVNode) { - popWarningContext(); - } - if (throwInDev) { - console.error(err); - } else { - console.error(err); - } - } -} -let isFlushing = false; -let isFlushPending = false; -const queue$1 = []; -let flushIndex = 0; -const pendingPostFlushCbs = []; -let activePostFlushCbs = null; -let postFlushIndex = 0; -const resolvedPromise = /* @__PURE__ */ Promise.resolve(); -let currentFlushPromise = null; -const RECURSION_LIMIT = 100; -function nextTick$1(fn) { - const p2 = currentFlushPromise || resolvedPromise; - return fn ? p2.then(this ? fn.bind(this) : fn) : p2; -} -function findInsertionIndex(id) { - let start = flushIndex + 1; - let end = queue$1.length; - while (start < end) { - const middle = start + end >>> 1; - const middleJob = queue$1[middle]; - const middleJobId = getId(middleJob); - if (middleJobId < id || middleJobId === id && middleJob.pre) { - start = middle + 1; - } else { - end = middle; - } - } - return start; -} -function queueJob(job) { - if (!queue$1.length || !queue$1.includes( - job, - isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex - )) { - if (job.id == null) { - queue$1.push(job); - } else { - queue$1.splice(findInsertionIndex(job.id), 0, job); - } - queueFlush(); - } -} -function queueFlush() { - if (!isFlushing && !isFlushPending) { - isFlushPending = true; - currentFlushPromise = resolvedPromise.then(flushJobs); - } -} -function hasQueueJob(job) { - return queue$1.indexOf(job) > -1; -} -function invalidateJob(job) { - const i = queue$1.indexOf(job); - if (i > flushIndex) { - queue$1.splice(i, 1); - } -} -function queuePostFlushCb(cb) { - if (!isArray(cb)) { - if (!activePostFlushCbs || !activePostFlushCbs.includes( - cb, - cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex - )) { - pendingPostFlushCbs.push(cb); - } - } else { - pendingPostFlushCbs.push(...cb); - } - queueFlush(); -} -function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) { - { - seen = seen || /* @__PURE__ */ new Map(); - } - for (; i < queue$1.length; i++) { - const cb = queue$1[i]; - if (cb && cb.pre) { - if (checkRecursiveUpdates(seen, cb)) { - continue; - } - queue$1.splice(i, 1); - i--; - cb(); - } - } -} -function flushPostFlushCbs(seen) { - if (pendingPostFlushCbs.length) { - const deduped = [...new Set(pendingPostFlushCbs)].sort( - (a, b) => getId(a) - getId(b) - ); - pendingPostFlushCbs.length = 0; - if (activePostFlushCbs) { - activePostFlushCbs.push(...deduped); - return; - } - activePostFlushCbs = deduped; - { - seen = seen || /* @__PURE__ */ new Map(); - } - for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { - if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { - continue; - } - activePostFlushCbs[postFlushIndex](); - } - activePostFlushCbs = null; - postFlushIndex = 0; - } -} -const getId = (job) => job.id == null ? Infinity : job.id; -const comparator = (a, b) => { - const diff2 = getId(a) - getId(b); - if (diff2 === 0) { - if (a.pre && !b.pre) - return -1; - if (b.pre && !a.pre) - return 1; - } - return diff2; -}; -function flushJobs(seen) { - isFlushPending = false; - isFlushing = true; - { - seen = seen || /* @__PURE__ */ new Map(); - } - queue$1.sort(comparator); - const check = (job) => checkRecursiveUpdates(seen, job); - try { - for (flushIndex = 0; flushIndex < queue$1.length; flushIndex++) { - const job = queue$1[flushIndex]; - if (job && job.active !== false) { - if (check(job)) { - continue; - } - callWithErrorHandling(job, null, 14); - } - } - } finally { - flushIndex = 0; - queue$1.length = 0; - flushPostFlushCbs(seen); - isFlushing = false; - currentFlushPromise = null; - if (queue$1.length || pendingPostFlushCbs.length) { - flushJobs(seen); - } - } -} -function checkRecursiveUpdates(seen, fn) { - if (!seen.has(fn)) { - seen.set(fn, 1); - } else { - const count = seen.get(fn); - if (count > RECURSION_LIMIT) { - const instance = fn.ownerInstance; - const componentName = instance && getComponentName(instance.type); - handleError( - `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.`, - null, - 10 - ); - return true; - } else { - seen.set(fn, count + 1); - } - } -} -let devtools; -let buffer = []; -let devtoolsNotInstalled = false; -function emit$1(event, ...args) { - if (devtools) { - devtools.emit(event, ...args); - } else if (!devtoolsNotInstalled) { - buffer.push({ event, args }); - } -} -function setDevtoolsHook(hook, target) { - var _a, _b; - devtools = hook; - if (devtools) { - devtools.enabled = true; - buffer.forEach(({ event, args }) => devtools.emit(event, ...args)); - buffer = []; - } else if ( - // handle late devtools injection - only do this if we are in an actual - // browser environment to avoid the timer handle stalling test runner exit - // (#4815) - typeof window !== "undefined" && // some envs mock window but not fully - window.HTMLElement && // also exclude jsdom - !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) - ) { - const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; - replay.push((newHook) => { - setDevtoolsHook(newHook, target); - }); - setTimeout(() => { - if (!devtools) { - target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; - devtoolsNotInstalled = true; - buffer = []; - } - }, 3e3); - } else { - devtoolsNotInstalled = true; - buffer = []; - } -} -function devtoolsInitApp(app, version2) { - emit$1("app:init", app, version2, { - Fragment, - Text, - Comment, - Static - }); -} -const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook( - "component:added" - /* COMPONENT_ADDED */ -); -const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook( - "component:updated" - /* COMPONENT_UPDATED */ -); -const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( - "component:removed" - /* COMPONENT_REMOVED */ -); -const devtoolsComponentRemoved = (component) => { - if (devtools && typeof devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered - !devtools.cleanupBuffer(component)) { - _devtoolsComponentRemoved(component); - } -}; -/*! #__NO_SIDE_EFFECTS__ */ -// @__NO_SIDE_EFFECTS__ -function createDevtoolsComponentHook(hook) { - return (component) => { - emit$1( - hook, - component.appContext.app, - component.uid, - // fixed by xxxxxx - // 为 0 是 App,无 parent 是 Page 指向 App - component.uid === 0 ? void 0 : component.parent ? component.parent.uid : 0, - component - ); - }; -} -const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook( - "perf:start" - /* PERFORMANCE_START */ -); -const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook( - "perf:end" - /* PERFORMANCE_END */ -); -function createDevtoolsPerformanceHook(hook) { - return (component, type, time) => { - emit$1(hook, component.appContext.app, component.uid, component, type, time); - }; -} -function devtoolsComponentEmit(component, event, params) { - emit$1( - "component:emit", - component.appContext.app, - component, - event, - params - ); -} -function emit(instance, event, ...rawArgs) { - if (instance.isUnmounted) - return; - const props = instance.vnode.props || EMPTY_OBJ; - { - const { - emitsOptions, - propsOptions: [propsOptions] - } = instance; - if (emitsOptions) { - if (!(event in emitsOptions) && true) { - if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { - warn$1( - `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.` - ); - } - } else { - const validator = emitsOptions[event]; - if (isFunction(validator)) { - const isValid = validator(...rawArgs); - if (!isValid) { - warn$1( - `Invalid event arguments: event validation failed for event "${event}".` - ); - } - } - } - } - } - let args = rawArgs; - const isModelListener2 = event.startsWith("update:"); - const modelArg = isModelListener2 && event.slice(7); - if (modelArg && modelArg in props) { - const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; - const { number, trim } = props[modifiersKey] || EMPTY_OBJ; - if (trim) { - args = rawArgs.map((a) => isString(a) ? a.trim() : a); - } - if (number) { - args = rawArgs.map(looseToNumber); - } - } - { - devtoolsComponentEmit(instance, event, args); - } - { - const lowerCaseEvent = event.toLowerCase(); - if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { - warn$1( - `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( - instance, - instance.type - )} 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( - event - )}" instead of "${event}".` - ); - } - } - let handlerName; - let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) - props[handlerName = toHandlerKey(camelize(event))]; - if (!handler && isModelListener2) { - handler = props[handlerName = toHandlerKey(hyphenate(event))]; - } - if (handler) { - callWithAsyncErrorHandling( - handler, - instance, - 6, - args - ); - } - const onceHandler = props[handlerName + `Once`]; - if (onceHandler) { - if (!instance.emitted) { - instance.emitted = {}; - } else if (instance.emitted[handlerName]) { - return; - } - instance.emitted[handlerName] = true; - callWithAsyncErrorHandling( - onceHandler, - instance, - 6, - args - ); - } -} -function normalizeEmitsOptions(comp, appContext, asMixin = false) { - const cache = appContext.emitsCache; - const cached = cache.get(comp); - if (cached !== void 0) { - return cached; - } - const raw = comp.emits; - let normalized = {}; - let hasExtends = false; - if (!isFunction(comp)) { - const extendEmits = (raw2) => { - const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); - if (normalizedFromExtend) { - hasExtends = true; - extend(normalized, normalizedFromExtend); - } - }; - if (!asMixin && appContext.mixins.length) { - appContext.mixins.forEach(extendEmits); - } - if (comp.extends) { - extendEmits(comp.extends); - } - if (comp.mixins) { - comp.mixins.forEach(extendEmits); - } - } - if (!raw && !hasExtends) { - if (isObject(comp)) { - cache.set(comp, null); - } - return null; - } - if (isArray(raw)) { - raw.forEach((key) => normalized[key] = null); - } else { - extend(normalized, raw); - } - if (isObject(comp)) { - cache.set(comp, normalized); - } - return normalized; -} -function isEmitListener(options, key) { - if (!options || !isOn(key)) { - return false; - } - key = key.slice(2).replace(/Once$/, ""); - return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); -} -let currentRenderingInstance = null; -function setCurrentRenderingInstance(instance) { - const prev = currentRenderingInstance; - currentRenderingInstance = instance; - instance && instance.type.__scopeId || null; - return prev; -} -const INITIAL_WATCHER_VALUE = {}; -function watch(source, cb, options) { - if (!isFunction(cb)) { - warn$1( - `\`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.` - ); - } - return doWatch(source, cb, options); -} -function doWatch(source, cb, { - immediate, - deep, - flush, - once: once2, - onTrack, - onTrigger -} = EMPTY_OBJ) { - if (cb && once2) { - const _cb = cb; - cb = (...args) => { - _cb(...args); - unwatch(); - }; - } - if (deep !== void 0 && typeof deep === "number") { - warn$1( - `watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.` - ); - } - if (!cb) { - if (immediate !== void 0) { - warn$1( - `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` - ); - } - if (deep !== void 0) { - warn$1( - `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` - ); - } - if (once2 !== void 0) { - warn$1( - `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` - ); - } - } - const warnInvalidSource = (s2) => { - warn$1( - `Invalid watch source: `, - s2, - `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` - ); - }; - const instance = currentInstance; - const reactiveGetter = (source2) => deep === true ? source2 : ( - // for deep: false, only traverse root-level properties - traverse(source2, deep === false ? 1 : void 0) - ); - let getter; - let forceTrigger = false; - let isMultiSource = false; - if (isRef(source)) { - getter = () => source.value; - forceTrigger = isShallow(source); - } else if (isReactive(source)) { - getter = () => reactiveGetter(source); - forceTrigger = true; - } else if (isArray(source)) { - isMultiSource = true; - forceTrigger = source.some((s2) => isReactive(s2) || isShallow(s2)); - getter = () => source.map((s2) => { - if (isRef(s2)) { - return s2.value; - } else if (isReactive(s2)) { - return reactiveGetter(s2); - } else if (isFunction(s2)) { - return callWithErrorHandling(s2, instance, 2); - } else { - warnInvalidSource(s2); - } - }); - } else if (isFunction(source)) { - if (cb) { - getter = () => callWithErrorHandling(source, instance, 2); - } else { - getter = () => { - if (cleanup) { - cleanup(); - } - return callWithAsyncErrorHandling( - source, - instance, - 3, - [onCleanup] - ); - }; - } - } else { - getter = NOOP; - warnInvalidSource(source); - } - if (cb && deep) { - const baseGetter = getter; - getter = () => traverse(baseGetter()); - } - let cleanup; - let onCleanup = (fn) => { - cleanup = effect2.onStop = () => { - callWithErrorHandling(fn, instance, 4); - cleanup = effect2.onStop = void 0; - }; - }; - let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; - const job = () => { - if (!effect2.active || !effect2.dirty) { - return; - } - if (cb) { - const newValue = effect2.run(); - if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) { - if (cleanup) { - cleanup(); - } - callWithAsyncErrorHandling(cb, instance, 3, [ - newValue, - // pass undefined as the old value when it's changed for the first time - oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, - onCleanup - ]); - oldValue = newValue; - } - } else { - effect2.run(); - } - }; - job.allowRecurse = !!cb; - let scheduler; - if (flush === "sync") { - scheduler = job; - } else if (flush === "post") { - scheduler = () => queuePostRenderEffect$1(job, instance && instance.suspense); - } else { - job.pre = true; - if (instance) - job.id = instance.uid; - scheduler = () => queueJob(job); - } - const effect2 = new ReactiveEffect(getter, NOOP, scheduler); - const scope = getCurrentScope(); - const unwatch = () => { - effect2.stop(); - if (scope) { - remove(scope.effects, effect2); - } - }; - { - effect2.onTrack = onTrack; - effect2.onTrigger = onTrigger; - } - if (cb) { - if (immediate) { - job(); - } else { - oldValue = effect2.run(); - } - } else if (flush === "post") { - queuePostRenderEffect$1( - effect2.run.bind(effect2), - instance && instance.suspense - ); - } else { - effect2.run(); - } - return unwatch; -} -function instanceWatch(source, value, options) { - const publicThis = this.proxy; - const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); - let cb; - if (isFunction(value)) { - cb = value; - } else { - cb = value.handler; - options = value; - } - const reset = setCurrentInstance(this); - const res = doWatch(getter, cb.bind(publicThis), options); - reset(); - return res; -} -function createPathGetter(ctx, path) { - const segments = path.split("."); - return () => { - let cur = ctx; - for (let i = 0; i < segments.length && cur; i++) { - cur = cur[segments[i]]; - } - return cur; - }; -} -function traverse(value, depth, currentDepth = 0, seen) { - if (!isObject(value) || value["__v_skip"]) { - return value; - } - if (depth && depth > 0) { - if (currentDepth >= depth) { - return value; - } - currentDepth++; - } - seen = seen || /* @__PURE__ */ new Set(); - if (seen.has(value)) { - return value; - } - seen.add(value); - if (isRef(value)) { - traverse(value.value, depth, currentDepth, seen); - } else if (isArray(value)) { - for (let i = 0; i < value.length; i++) { - traverse(value[i], depth, currentDepth, seen); - } - } else if (isSet(value) || isMap(value)) { - value.forEach((v) => { - traverse(v, depth, currentDepth, seen); - }); - } else if (isPlainObject(value)) { - for (const key in value) { - traverse(value[key], depth, currentDepth, seen); - } - } - return value; -} -function validateDirectiveName(name) { - if (isBuiltInDirective(name)) { - warn$1("Do not use built-in directive ids as custom directive id: " + name); - } -} -function createAppContext() { - return { - app: null, - config: { - isNativeTag: NO, - performance: false, - globalProperties: {}, - optionMergeStrategies: {}, - errorHandler: void 0, - warnHandler: void 0, - compilerOptions: {} - }, - mixins: [], - components: {}, - directives: {}, - provides: /* @__PURE__ */ Object.create(null), - optionsCache: /* @__PURE__ */ new WeakMap(), - propsCache: /* @__PURE__ */ new WeakMap(), - emitsCache: /* @__PURE__ */ new WeakMap() - }; -} -let uid$1 = 0; -function createAppAPI(render, hydrate) { - return function createApp2(rootComponent, rootProps = null) { - if (!isFunction(rootComponent)) { - rootComponent = extend({}, rootComponent); - } - if (rootProps != null && !isObject(rootProps)) { - warn$1(`root props passed to app.mount() must be an object.`); - rootProps = null; - } - const context = createAppContext(); - const installedPlugins = /* @__PURE__ */ new WeakSet(); - const app = context.app = { - _uid: uid$1++, - _component: rootComponent, - _props: rootProps, - _container: null, - _context: context, - _instance: null, - version, - get config() { - return context.config; - }, - set config(v) { - { - warn$1( - `app.config cannot be replaced. Modify individual options instead.` - ); - } - }, - use(plugin2, ...options) { - if (installedPlugins.has(plugin2)) { - warn$1(`Plugin has already been applied to target app.`); - } else if (plugin2 && isFunction(plugin2.install)) { - installedPlugins.add(plugin2); - plugin2.install(app, ...options); - } else if (isFunction(plugin2)) { - installedPlugins.add(plugin2); - plugin2(app, ...options); - } else { - warn$1( - `A plugin must either be a function or an object with an "install" function.` - ); - } - return app; - }, - mixin(mixin) { - { - if (!context.mixins.includes(mixin)) { - context.mixins.push(mixin); - } else { - warn$1( - "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "") - ); - } - } - return app; - }, - component(name, component) { - { - validateComponentName(name, context.config); - } - if (!component) { - return context.components[name]; - } - if (context.components[name]) { - warn$1(`Component "${name}" has already been registered in target app.`); - } - context.components[name] = component; - return app; - }, - directive(name, directive) { - { - validateDirectiveName(name); - } - if (!directive) { - return context.directives[name]; - } - if (context.directives[name]) { - warn$1(`Directive "${name}" has already been registered in target app.`); - } - context.directives[name] = directive; - return app; - }, - // fixed by xxxxxx - mount() { - }, - // fixed by xxxxxx - unmount() { - }, - provide(key, value) { - if (key in context.provides) { - warn$1( - `App already provides property with key "${String(key)}". It will be overwritten with the new value.` - ); - } - context.provides[key] = value; - return app; - }, - runWithContext(fn) { - const lastApp = currentApp; - currentApp = app; - try { - return fn(); - } finally { - currentApp = lastApp; - } - } - }; - return app; - }; -} -let currentApp = null; -function provide(key, value) { - if (!currentInstance) { - { - warn$1(`provide() can only be used inside setup().`); - } - } else { - let provides = currentInstance.provides; - const parentProvides = currentInstance.parent && currentInstance.parent.provides; - if (parentProvides === provides) { - provides = currentInstance.provides = Object.create(parentProvides); - } - provides[key] = value; - if (currentInstance.type.mpType === "app") { - currentInstance.appContext.app.provide(key, value); - } - } -} -function inject(key, defaultValue, treatDefaultAsFactory = false) { - const instance = currentInstance || currentRenderingInstance; - if (instance || currentApp) { - const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides; - if (provides && key in provides) { - return provides[key]; - } else if (arguments.length > 1) { - return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; - } else { - warn$1(`injection "${String(key)}" not found.`); - } - } else { - warn$1(`inject() can only be used inside setup() or functional components.`); - } -} -const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; -function onActivated(hook, target) { - registerKeepAliveHook(hook, "a", target); -} -function onDeactivated(hook, target) { - registerKeepAliveHook(hook, "da", target); -} -function registerKeepAliveHook(hook, type, target = currentInstance) { - const wrappedHook = hook.__wdc || (hook.__wdc = () => { - let current = target; - while (current) { - if (current.isDeactivated) { - return; - } - current = current.parent; - } - return hook(); - }); - injectHook(type, wrappedHook, target); - if (target) { - let current = target.parent; - while (current && current.parent) { - if (isKeepAlive(current.parent.vnode)) { - injectToKeepAliveRoot(wrappedHook, type, target, current); - } - current = current.parent; - } - } -} -function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { - const injected = injectHook( - type, - hook, - keepAliveRoot, - true - /* prepend */ - ); - onUnmounted(() => { - remove(keepAliveRoot[type], injected); - }, target); -} -function injectHook(type, hook, target = currentInstance, prepend = false) { - if (target) { - if (isRootHook(type)) { - target = target.root; - } - const hooks = target[type] || (target[type] = []); - const wrappedHook = hook.__weh || (hook.__weh = (...args) => { - if (target.isUnmounted) { - return; - } - pauseTracking(); - const reset = setCurrentInstance(target); - const res = callWithAsyncErrorHandling(hook, target, type, args); - reset(); - resetTracking(); - return res; - }); - if (prepend) { - hooks.unshift(wrappedHook); - } else { - hooks.push(wrappedHook); - } - return wrappedHook; - } else { - const apiName = toHandlerKey( - (ErrorTypeStrings[type] || type.replace(/^on/, "")).replace(/ hook$/, "") - ); - warn$1( - `${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().` - ); - } -} -const createHook$1 = (lifecycle) => (hook, target = currentInstance) => ( - // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) - (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) -); -const onBeforeMount = createHook$1("bm"); -const onMounted = createHook$1("m"); -const onBeforeUpdate = createHook$1("bu"); -const onUpdated = createHook$1("u"); -const onBeforeUnmount = createHook$1("bum"); -const onUnmounted = createHook$1("um"); -const onServerPrefetch = createHook$1("sp"); -const onRenderTriggered = createHook$1( - "rtg" -); -const onRenderTracked = createHook$1( - "rtc" -); -function onErrorCaptured(hook, target = currentInstance) { - injectHook("ec", hook, target); -} -const getPublicInstance = (i) => { - if (!i) - return null; - if (isStatefulComponent(i)) - return getExposeProxy(i) || i.proxy; - return getPublicInstance(i.parent); -}; -const publicPropertiesMap = ( - // Move PURE marker to new line to workaround compiler discarding it - // due to type annotation - /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { - $: (i) => i, - // fixed by xxxxxx vue-i18n 在 dev 模式,访问了 $el,故模拟一个假的 - // $el: i => i.vnode.el, - $el: (i) => i.__$el || (i.__$el = {}), - $data: (i) => i.data, - $props: (i) => shallowReadonly(i.props), - $attrs: (i) => shallowReadonly(i.attrs), - $slots: (i) => shallowReadonly(i.slots), - $refs: (i) => shallowReadonly(i.refs), - $parent: (i) => getPublicInstance(i.parent), - $root: (i) => getPublicInstance(i.root), - $emit: (i) => i.emit, - $options: (i) => resolveMergedOptions(i), - $forceUpdate: (i) => i.f || (i.f = () => { - i.effect.dirty = true; - queueJob(i.update); - }), - // $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy!)),// fixed by xxxxxx - $watch: (i) => instanceWatch.bind(i) - }) -); -const isReservedPrefix = (key) => key === "_" || key === "$"; -const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); -const PublicInstanceProxyHandlers = { - get({ _: instance }, key) { - const { ctx, setupState, data, props, accessCache, type, appContext } = instance; - if (key === "__isVue") { - return true; - } - let normalizedProps; - if (key[0] !== "$") { - const n2 = accessCache[key]; - if (n2 !== void 0) { - switch (n2) { - case 1: - return setupState[key]; - case 2: - return data[key]; - case 4: - return ctx[key]; - case 3: - return props[key]; - } - } else if (hasSetupBinding(setupState, key)) { - accessCache[key] = 1; - return setupState[key]; - } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { - accessCache[key] = 2; - return data[key]; - } else if ( - // only cache other properties when instance has declared (thus stable) - // props - (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) - ) { - accessCache[key] = 3; - return props[key]; - } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { - accessCache[key] = 4; - return ctx[key]; - } else if (shouldCacheAccess) { - accessCache[key] = 0; - } - } - const publicGetter = publicPropertiesMap[key]; - let cssModule, globalProperties; - if (publicGetter) { - if (key === "$attrs") { - track(instance, "get", key); - } else if (key === "$slots") { - track(instance, "get", key); - } - return publicGetter(instance); - } else if ( - // css module (injected by vue-loader) - (cssModule = type.__cssModules) && (cssModule = cssModule[key]) - ) { - return cssModule; - } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { - accessCache[key] = 4; - return ctx[key]; - } else if ( - // global properties - globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) - ) { - { - return globalProperties[key]; - } - } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading - // to infinite warning loop - key.indexOf("__v") !== 0)) { - if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { - warn$1( - `Property ${JSON.stringify( - key - )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` - ); - } else if (instance === currentRenderingInstance) { - warn$1( - `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` - ); - } - } - }, - set({ _: instance }, key, value) { - const { data, setupState, ctx } = instance; - if (hasSetupBinding(setupState, key)) { - setupState[key] = value; - return true; - } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { - warn$1(`Cannot mutate <script setup> binding "${key}" from Options API.`); - return false; - } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { - data[key] = value; - return true; - } else if (hasOwn(instance.props, key)) { - warn$1(`Attempting to mutate prop "${key}". Props are readonly.`); - return false; - } - if (key[0] === "$" && key.slice(1) in instance) { - warn$1( - `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.` - ); - return false; - } else { - if (key in instance.appContext.config.globalProperties) { - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - value - }); - } else { - ctx[key] = value; - } - } - return true; - }, - has({ - _: { data, setupState, accessCache, ctx, appContext, propsOptions } - }, key) { - let normalizedProps; - return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key); - }, - defineProperty(target, key, descriptor) { - if (descriptor.get != null) { - target._.accessCache[key] = 0; - } else if (hasOwn(descriptor, "value")) { - this.set(target, key, descriptor.value, null); - } - return Reflect.defineProperty(target, key, descriptor); - } -}; -{ - PublicInstanceProxyHandlers.ownKeys = (target) => { - warn$1( - `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.` - ); - return Reflect.ownKeys(target); - }; -} -function createDevRenderContext(instance) { - const target = {}; - Object.defineProperty(target, `_`, { - configurable: true, - enumerable: false, - get: () => instance - }); - Object.keys(publicPropertiesMap).forEach((key) => { - Object.defineProperty(target, key, { - configurable: true, - enumerable: false, - get: () => publicPropertiesMap[key](instance), - // intercepted by the proxy so no need for implementation, - // but needed to prevent set errors - set: NOOP - }); - }); - return target; -} -function exposePropsOnRenderContext(instance) { - const { - ctx, - propsOptions: [propsOptions] - } = instance; - if (propsOptions) { - Object.keys(propsOptions).forEach((key) => { - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => instance.props[key], - set: NOOP - }); - }); - } -} -function exposeSetupStateOnRenderContext(instance) { - const { ctx, setupState } = instance; - Object.keys(toRaw(setupState)).forEach((key) => { - if (!setupState.__isScriptSetup) { - if (isReservedPrefix(key[0])) { - warn$1( - `setup() return property ${JSON.stringify( - key - )} should not start with "$" or "_" which are reserved prefixes for Vue internals.` - ); - return; - } - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => setupState[key], - set: NOOP - }); - } - }); -} -function normalizePropsOrEmits(props) { - return isArray(props) ? props.reduce( - (normalized, p2) => (normalized[p2] = null, normalized), - {} - ) : props; -} -function createDuplicateChecker() { - const cache = /* @__PURE__ */ Object.create(null); - return (type, key) => { - if (cache[key]) { - warn$1(`${type} property "${key}" is already defined in ${cache[key]}.`); - } else { - cache[key] = type; - } - }; -} -let shouldCacheAccess = true; -function applyOptions$1(instance) { - const options = resolveMergedOptions(instance); - const publicThis = instance.proxy; - const ctx = instance.ctx; - shouldCacheAccess = false; - if (options.beforeCreate) { - callHook$1(options.beforeCreate, instance, "bc"); - } - const { - // state - data: dataOptions, - computed: computedOptions, - methods, - watch: watchOptions, - provide: provideOptions, - inject: injectOptions, - // lifecycle - created, - beforeMount, - mounted, - beforeUpdate, - updated, - activated, - deactivated, - beforeDestroy, - beforeUnmount, - destroyed, - unmounted, - render, - renderTracked, - renderTriggered, - errorCaptured, - serverPrefetch, - // public API - expose, - inheritAttrs, - // assets - components, - directives, - filters - } = options; - const checkDuplicateProperties = createDuplicateChecker(); - { - const [propsOptions] = instance.propsOptions; - if (propsOptions) { - for (const key in propsOptions) { - checkDuplicateProperties("Props", key); - } - } - } - function initInjections() { - if (injectOptions) { - resolveInjections(injectOptions, ctx, checkDuplicateProperties); - } - } - { - initInjections(); - } - if (methods) { - for (const key in methods) { - const methodHandler = methods[key]; - if (isFunction(methodHandler)) { - { - Object.defineProperty(ctx, key, { - value: methodHandler.bind(publicThis), - configurable: true, - enumerable: true, - writable: true - }); - } - { - checkDuplicateProperties("Methods", key); - } - } else { - warn$1( - `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?` - ); - } - } - } - if (dataOptions) { - if (!isFunction(dataOptions)) { - warn$1( - `The data option must be a function. Plain object usage is no longer supported.` - ); - } - const data = dataOptions.call(publicThis, publicThis); - if (isPromise(data)) { - warn$1( - `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.` - ); - } - if (!isObject(data)) { - warn$1(`data() should return an object.`); - } else { - instance.data = reactive(data); - { - for (const key in data) { - checkDuplicateProperties("Data", key); - if (!isReservedPrefix(key[0])) { - Object.defineProperty(ctx, key, { - configurable: true, - enumerable: true, - get: () => data[key], - set: NOOP - }); - } - } - } - } - } - shouldCacheAccess = true; - if (computedOptions) { - for (const key in computedOptions) { - const opt = computedOptions[key]; - const get2 = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP; - if (get2 === NOOP) { - warn$1(`Computed property "${key}" has no getter.`); - } - const set2 = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : () => { - warn$1( - `Write operation failed: computed property "${key}" is readonly.` - ); - }; - const c2 = computed({ - get: get2, - set: set2 - }); - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => c2.value, - set: (v) => c2.value = v - }); - { - checkDuplicateProperties("Computed", key); - } - } - } - if (watchOptions) { - for (const key in watchOptions) { - createWatcher(watchOptions[key], ctx, publicThis, key); - } - } - function initProvides() { - if (provideOptions) { - const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; - Reflect.ownKeys(provides).forEach((key) => { - provide(key, provides[key]); - }); - } - } - { - initProvides(); - } - { - if (created) { - callHook$1(created, instance, "c"); - } - } - function registerLifecycleHook(register, hook) { - if (isArray(hook)) { - hook.forEach((_hook) => register(_hook.bind(publicThis))); - } else if (hook) { - register(hook.bind(publicThis)); - } - } - registerLifecycleHook(onBeforeMount, beforeMount); - registerLifecycleHook(onMounted, mounted); - registerLifecycleHook(onBeforeUpdate, beforeUpdate); - registerLifecycleHook(onUpdated, updated); - registerLifecycleHook(onActivated, activated); - registerLifecycleHook(onDeactivated, deactivated); - registerLifecycleHook(onErrorCaptured, errorCaptured); - registerLifecycleHook(onRenderTracked, renderTracked); - registerLifecycleHook(onRenderTriggered, renderTriggered); - registerLifecycleHook(onBeforeUnmount, beforeUnmount); - registerLifecycleHook(onUnmounted, unmounted); - registerLifecycleHook(onServerPrefetch, serverPrefetch); - if (isArray(expose)) { - if (expose.length) { - const exposed = instance.exposed || (instance.exposed = {}); - expose.forEach((key) => { - Object.defineProperty(exposed, key, { - get: () => publicThis[key], - set: (val) => publicThis[key] = val - }); - }); - } else if (!instance.exposed) { - instance.exposed = {}; - } - } - if (render && instance.render === NOOP) { - instance.render = render; - } - if (inheritAttrs != null) { - instance.inheritAttrs = inheritAttrs; - } - if (components) - instance.components = components; - if (directives) - instance.directives = directives; - if (instance.ctx.$onApplyOptions) { - instance.ctx.$onApplyOptions(options, instance, publicThis); - } -} -function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) { - if (isArray(injectOptions)) { - injectOptions = normalizeInject(injectOptions); - } - for (const key in injectOptions) { - const opt = injectOptions[key]; - let injected; - if (isObject(opt)) { - if ("default" in opt) { - injected = inject( - opt.from || key, - opt.default, - true - ); - } else { - injected = inject(opt.from || key); - } - } else { - injected = inject(opt); - } - if (isRef(injected)) { - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => injected.value, - set: (v) => injected.value = v - }); - } else { - ctx[key] = injected; - } - { - checkDuplicateProperties("Inject", key); - } - } -} -function callHook$1(hook, instance, type) { - callWithAsyncErrorHandling( - isArray(hook) ? hook.map((h2) => h2.bind(instance.proxy)) : hook.bind(instance.proxy), - instance, - type - ); -} -function createWatcher(raw, ctx, publicThis, key) { - const getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; - if (isString(raw)) { - const handler = ctx[raw]; - if (isFunction(handler)) { - watch(getter, handler); - } else { - warn$1(`Invalid watch handler specified by key "${raw}"`, handler); - } - } else if (isFunction(raw)) { - watch(getter, raw.bind(publicThis)); - } else if (isObject(raw)) { - if (isArray(raw)) { - raw.forEach((r2) => createWatcher(r2, ctx, publicThis, key)); - } else { - const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; - if (isFunction(handler)) { - watch(getter, handler, raw); - } else { - warn$1(`Invalid watch handler specified by key "${raw.handler}"`, handler); - } - } - } else { - warn$1(`Invalid watch option: "${key}"`, raw); - } -} -function resolveMergedOptions(instance) { - const base = instance.type; - const { mixins, extends: extendsOptions } = base; - const { - mixins: globalMixins, - optionsCache: cache, - config: { optionMergeStrategies } - } = instance.appContext; - const cached = cache.get(base); - let resolved; - if (cached) { - resolved = cached; - } else if (!globalMixins.length && !mixins && !extendsOptions) { - { - resolved = base; - } - } else { - resolved = {}; - if (globalMixins.length) { - globalMixins.forEach( - (m2) => mergeOptions(resolved, m2, optionMergeStrategies, true) - ); - } - mergeOptions(resolved, base, optionMergeStrategies); - } - if (isObject(base)) { - cache.set(base, resolved); - } - return resolved; -} -function mergeOptions(to, from, strats, asMixin = false) { - const { mixins, extends: extendsOptions } = from; - if (extendsOptions) { - mergeOptions(to, extendsOptions, strats, true); - } - if (mixins) { - mixins.forEach( - (m2) => mergeOptions(to, m2, strats, true) - ); - } - for (const key in from) { - if (asMixin && key === "expose") { - warn$1( - `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.` - ); - } else { - const strat = internalOptionMergeStrats[key] || strats && strats[key]; - to[key] = strat ? strat(to[key], from[key]) : from[key]; - } - } - return to; -} -const internalOptionMergeStrats = { - data: mergeDataFn, - props: mergeEmitsOrPropsOptions, - emits: mergeEmitsOrPropsOptions, - // objects - methods: mergeObjectOptions, - computed: mergeObjectOptions, - // lifecycle - beforeCreate: mergeAsArray$1, - created: mergeAsArray$1, - beforeMount: mergeAsArray$1, - mounted: mergeAsArray$1, - beforeUpdate: mergeAsArray$1, - updated: mergeAsArray$1, - beforeDestroy: mergeAsArray$1, - beforeUnmount: mergeAsArray$1, - destroyed: mergeAsArray$1, - unmounted: mergeAsArray$1, - activated: mergeAsArray$1, - deactivated: mergeAsArray$1, - errorCaptured: mergeAsArray$1, - serverPrefetch: mergeAsArray$1, - // assets - components: mergeObjectOptions, - directives: mergeObjectOptions, - // watch - watch: mergeWatchOptions, - // provide / inject - provide: mergeDataFn, - inject: mergeInject -}; -function mergeDataFn(to, from) { - if (!from) { - return to; - } - if (!to) { - return from; - } - return function mergedDataFn() { - return extend( - isFunction(to) ? to.call(this, this) : to, - isFunction(from) ? from.call(this, this) : from - ); - }; -} -function mergeInject(to, from) { - return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); -} -function normalizeInject(raw) { - if (isArray(raw)) { - const res = {}; - for (let i = 0; i < raw.length; i++) { - res[raw[i]] = raw[i]; - } - return res; - } - return raw; -} -function mergeAsArray$1(to, from) { - return to ? [...new Set([].concat(to, from))] : from; -} -function mergeObjectOptions(to, from) { - return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from; -} -function mergeEmitsOrPropsOptions(to, from) { - if (to) { - if (isArray(to) && isArray(from)) { - return [.../* @__PURE__ */ new Set([...to, ...from])]; - } - return extend( - /* @__PURE__ */ Object.create(null), - normalizePropsOrEmits(to), - normalizePropsOrEmits(from != null ? from : {}) - ); - } else { - return from; - } -} -function mergeWatchOptions(to, from) { - if (!to) - return from; - if (!from) - return to; - const merged = extend(/* @__PURE__ */ Object.create(null), to); - for (const key in from) { - merged[key] = mergeAsArray$1(to[key], from[key]); - } - return merged; -} -function initProps$1(instance, rawProps, isStateful, isSSR = false) { - const props = {}; - const attrs = {}; - instance.propsDefaults = /* @__PURE__ */ Object.create(null); - setFullProps(instance, rawProps, props, attrs); - for (const key in instance.propsOptions[0]) { - if (!(key in props)) { - props[key] = void 0; - } - } - { - validateProps(rawProps || {}, props, instance); - } - if (isStateful) { - instance.props = isSSR ? props : shallowReactive(props); - } else { - if (!instance.type.props) { - instance.props = attrs; - } else { - instance.props = props; - } - } - instance.attrs = attrs; -} -function isInHmrContext(instance) { -} -function updateProps(instance, rawProps, rawPrevProps, optimized) { - const { - props, - attrs, - vnode: { patchFlag } - } = instance; - const rawCurrentProps = toRaw(props); - const [options] = instance.propsOptions; - let hasAttrsChanged = false; - if ( - // always force full diff in dev - // - #1942 if hmr is enabled with sfc component - // - vite#872 non-sfc component used by sfc component - !isInHmrContext() && (optimized || patchFlag > 0) && !(patchFlag & 16) - ) { - if (patchFlag & 8) { - const propsToUpdate = instance.vnode.dynamicProps; - for (let i = 0; i < propsToUpdate.length; i++) { - let key = propsToUpdate[i]; - if (isEmitListener(instance.emitsOptions, key)) { - continue; - } - const value = rawProps[key]; - if (options) { - if (hasOwn(attrs, key)) { - if (value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } else { - const camelizedKey = camelize(key); - props[camelizedKey] = resolvePropValue$1( - options, - rawCurrentProps, - camelizedKey, - value, - instance, - false - ); - } - } else { - if (value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } - } - } - } else { - if (setFullProps(instance, rawProps, props, attrs)) { - hasAttrsChanged = true; - } - let kebabKey; - for (const key in rawCurrentProps) { - if (!rawProps || // for camelCase - !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case - // and converted to camelCase (#955) - ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) { - if (options) { - if (rawPrevProps && // for camelCase - (rawPrevProps[key] !== void 0 || // for kebab-case - rawPrevProps[kebabKey] !== void 0)) { - props[key] = resolvePropValue$1( - options, - rawCurrentProps, - key, - void 0, - instance, - true - ); - } - } else { - delete props[key]; - } - } - } - if (attrs !== rawCurrentProps) { - for (const key in attrs) { - if (!rawProps || !hasOwn(rawProps, key) && true) { - delete attrs[key]; - hasAttrsChanged = true; - } - } - } - } - if (hasAttrsChanged) { - trigger(instance, "set", "$attrs"); - } - { - validateProps(rawProps || {}, props, instance); - } -} -function setFullProps(instance, rawProps, props, attrs) { - const [options, needCastKeys] = instance.propsOptions; - let hasAttrsChanged = false; - let rawCastValues; - if (rawProps) { - for (let key in rawProps) { - if (isReservedProp(key)) { - continue; - } - const value = rawProps[key]; - let camelKey; - if (options && hasOwn(options, camelKey = camelize(key))) { - if (!needCastKeys || !needCastKeys.includes(camelKey)) { - props[camelKey] = value; - } else { - (rawCastValues || (rawCastValues = {}))[camelKey] = value; - } - } else if (!isEmitListener(instance.emitsOptions, key)) { - if (!(key in attrs) || value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } - } - } - if (needCastKeys) { - const rawCurrentProps = toRaw(props); - const castValues = rawCastValues || EMPTY_OBJ; - for (let i = 0; i < needCastKeys.length; i++) { - const key = needCastKeys[i]; - props[key] = resolvePropValue$1( - options, - rawCurrentProps, - key, - castValues[key], - instance, - !hasOwn(castValues, key) - ); - } - } - return hasAttrsChanged; -} -function resolvePropValue$1(options, props, key, value, instance, isAbsent) { - const opt = options[key]; - if (opt != null) { - const hasDefault = hasOwn(opt, "default"); - if (hasDefault && value === void 0) { - const defaultValue = opt.default; - if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) { - const { propsDefaults } = instance; - if (key in propsDefaults) { - value = propsDefaults[key]; - } else { - const reset = setCurrentInstance(instance); - value = propsDefaults[key] = defaultValue.call( - null, - props - ); - reset(); - } - } else { - value = defaultValue; - } - } - if (opt[ - 0 - /* shouldCast */ - ]) { - if (isAbsent && !hasDefault) { - value = false; - } else if (opt[ - 1 - /* shouldCastTrue */ - ] && (value === "" || value === hyphenate(key))) { - value = true; - } - } - } - return value; -} -function normalizePropsOptions(comp, appContext, asMixin = false) { - const cache = appContext.propsCache; - const cached = cache.get(comp); - if (cached) { - return cached; - } - const raw = comp.props; - const normalized = {}; - const needCastKeys = []; - let hasExtends = false; - if (!isFunction(comp)) { - const extendProps = (raw2) => { - hasExtends = true; - const [props, keys] = normalizePropsOptions(raw2, appContext, true); - extend(normalized, props); - if (keys) - needCastKeys.push(...keys); - }; - if (!asMixin && appContext.mixins.length) { - appContext.mixins.forEach(extendProps); - } - if (comp.extends) { - extendProps(comp.extends); - } - if (comp.mixins) { - comp.mixins.forEach(extendProps); - } - } - if (!raw && !hasExtends) { - if (isObject(comp)) { - cache.set(comp, EMPTY_ARR); - } - return EMPTY_ARR; - } - if (isArray(raw)) { - for (let i = 0; i < raw.length; i++) { - if (!isString(raw[i])) { - warn$1(`props must be strings when using array syntax.`, raw[i]); - } - const normalizedKey = camelize(raw[i]); - if (validatePropName(normalizedKey)) { - normalized[normalizedKey] = EMPTY_OBJ; - } - } - } else if (raw) { - if (!isObject(raw)) { - warn$1(`invalid props options`, raw); - } - for (const key in raw) { - const normalizedKey = camelize(key); - if (validatePropName(normalizedKey)) { - const opt = raw[key]; - const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt); - if (prop) { - const booleanIndex = getTypeIndex(Boolean, prop.type); - const stringIndex = getTypeIndex(String, prop.type); - prop[ - 0 - /* shouldCast */ - ] = booleanIndex > -1; - prop[ - 1 - /* shouldCastTrue */ - ] = stringIndex < 0 || booleanIndex < stringIndex; - if (booleanIndex > -1 || hasOwn(prop, "default")) { - needCastKeys.push(normalizedKey); - } - } - } - } - } - const res = [normalized, needCastKeys]; - if (isObject(comp)) { - cache.set(comp, res); - } - return res; -} -function validatePropName(key) { - if (key[0] !== "$" && !isReservedProp(key)) { - return true; - } else { - warn$1(`Invalid prop name: "${key}" is a reserved property.`); - } - return false; -} -function getType$1(ctor) { - if (ctor === null) { - return "null"; - } - if (typeof ctor === "function") { - return ctor.name || ""; - } else if (typeof ctor === "object") { - const name = ctor.constructor && ctor.constructor.name; - return name || ""; - } - return ""; -} -function isSameType(a, b) { - return getType$1(a) === getType$1(b); -} -function getTypeIndex(type, expectedTypes) { - if (isArray(expectedTypes)) { - return expectedTypes.findIndex((t2) => isSameType(t2, type)); - } else if (isFunction(expectedTypes)) { - return isSameType(expectedTypes, type) ? 0 : -1; - } - return -1; -} -function validateProps(rawProps, props, instance) { - const resolvedValues = toRaw(props); - const options = instance.propsOptions[0]; - for (const key in options) { - let opt = options[key]; - if (opt == null) - continue; - validateProp$1( - key, - resolvedValues[key], - opt, - shallowReadonly(resolvedValues), - !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)) - ); - } -} -function validateProp$1(name, value, prop, props, isAbsent) { - const { type, required, validator, skipCheck } = prop; - if (required && isAbsent) { - warn$1('Missing required prop: "' + name + '"'); - return; - } - if (value == null && !required) { - return; - } - if (type != null && type !== true && !skipCheck) { - let isValid = false; - const types = isArray(type) ? type : [type]; - const expectedTypes = []; - for (let i = 0; i < types.length && !isValid; i++) { - const { valid, expectedType } = assertType$1(value, types[i]); - expectedTypes.push(expectedType || ""); - isValid = valid; - } - if (!isValid) { - warn$1(getInvalidTypeMessage$1(name, value, expectedTypes)); - return; - } - } - if (validator && !validator(value, props)) { - warn$1('Invalid prop: custom validator check failed for prop "' + name + '".'); - } -} -const isSimpleType$1 = /* @__PURE__ */ makeMap( - "String,Number,Boolean,Function,Symbol,BigInt" -); -function assertType$1(value, type) { - let valid; - const expectedType = getType$1(type); - if (isSimpleType$1(expectedType)) { - const t2 = typeof value; - valid = t2 === expectedType.toLowerCase(); - if (!valid && t2 === "object") { - valid = value instanceof type; - } - } else if (expectedType === "Object") { - valid = isObject(value); - } else if (expectedType === "Array") { - valid = isArray(value); - } else if (expectedType === "null") { - valid = value === null; - } else { - valid = value instanceof type; - } - return { - valid, - expectedType - }; -} -function getInvalidTypeMessage$1(name, value, expectedTypes) { - if (expectedTypes.length === 0) { - return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`; - } - let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(capitalize).join(" | ")}`; - const expectedType = expectedTypes[0]; - const receivedType = toRawType(value); - const expectedValue = styleValue$1(value, expectedType); - const receivedValue = styleValue$1(value, receivedType); - if (expectedTypes.length === 1 && isExplicable$1(expectedType) && !isBoolean$1(expectedType, receivedType)) { - message += ` with value ${expectedValue}`; - } - message += `, got ${receivedType} `; - if (isExplicable$1(receivedType)) { - message += `with value ${receivedValue}.`; - } - return message; -} -function styleValue$1(value, type) { - if (type === "String") { - return `"${value}"`; - } else if (type === "Number") { - return `${Number(value)}`; - } else { - return `${value}`; - } -} -function isExplicable$1(type) { - const explicitTypes = ["string", "number", "boolean"]; - return explicitTypes.some((elem) => type.toLowerCase() === elem); -} -function isBoolean$1(...args) { - return args.some((elem) => elem.toLowerCase() === "boolean"); -} -let supported; -let perf; -function startMeasure(instance, type) { - if (instance.appContext.config.performance && isSupported()) { - perf.mark(`vue-${type}-${instance.uid}`); - } - { - devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now()); - } -} -function endMeasure(instance, type) { - if (instance.appContext.config.performance && isSupported()) { - const startTag = `vue-${type}-${instance.uid}`; - const endTag = startTag + `:end`; - perf.mark(endTag); - perf.measure( - `<${formatComponentName(instance, instance.type)}> ${type}`, - startTag, - endTag - ); - perf.clearMarks(startTag); - perf.clearMarks(endTag); - } - { - devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now()); - } -} -function isSupported() { - if (supported !== void 0) { - return supported; - } - if (typeof window !== "undefined" && window.performance) { - supported = true; - perf = window.performance; - } else { - supported = false; - } - return supported; -} -const queuePostRenderEffect$1 = queuePostFlushCb; -const Fragment = Symbol.for("v-fgt"); -const Text = Symbol.for("v-txt"); -const Comment = Symbol.for("v-cmt"); -const Static = Symbol.for("v-stc"); -function isVNode(value) { - return value ? value.__v_isVNode === true : false; -} -const emptyAppContext = createAppContext(); -let uid = 0; -function createComponentInstance(vnode, parent, suspense) { - const type = vnode.type; - const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; - const instance = { - uid: uid++, - vnode, - type, - parent, - appContext, - root: null, - // to be immediately set - next: null, - subTree: null, - // will be set synchronously right after creation - effect: null, - update: null, - // will be set synchronously right after creation - scope: new EffectScope( - true - /* detached */ - ), - render: null, - proxy: null, - exposed: null, - exposeProxy: null, - withProxy: null, - provides: parent ? parent.provides : Object.create(appContext.provides), - accessCache: null, - renderCache: [], - // local resolved assets - components: null, - directives: null, - // resolved props and emits options - propsOptions: normalizePropsOptions(type, appContext), - emitsOptions: normalizeEmitsOptions(type, appContext), - // emit - emit: null, - // to be set immediately - emitted: null, - // props default value - propsDefaults: EMPTY_OBJ, - // inheritAttrs - inheritAttrs: type.inheritAttrs, - // state - ctx: EMPTY_OBJ, - data: EMPTY_OBJ, - props: EMPTY_OBJ, - attrs: EMPTY_OBJ, - slots: EMPTY_OBJ, - refs: EMPTY_OBJ, - setupState: EMPTY_OBJ, - setupContext: null, - attrsProxy: null, - slotsProxy: null, - // suspense related - suspense, - suspenseId: suspense ? suspense.pendingId : 0, - asyncDep: null, - asyncResolved: false, - // lifecycle hooks - // not using enums here because it results in computed properties - isMounted: false, - isUnmounted: false, - isDeactivated: false, - 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, - // fixed by xxxxxx 用于存储uni-app的元素缓存 - $uniElements: /* @__PURE__ */ new Map(), - $templateUniElementRefs: [], - $templateUniElementStyles: {}, - $eS: {}, - $eA: {} - }; - { - instance.ctx = createDevRenderContext(instance); - } - instance.root = parent ? parent.root : instance; - instance.emit = emit.bind(null, instance); - if (vnode.ce) { - vnode.ce(instance); - } - return instance; -} -let currentInstance = null; -const getCurrentInstance = () => currentInstance || currentRenderingInstance; -let internalSetCurrentInstance; -let setInSSRSetupState; -{ - internalSetCurrentInstance = (i) => { - currentInstance = i; - }; - setInSSRSetupState = (v) => { - isInSSRComponentSetup = v; - }; -} -const setCurrentInstance = (instance) => { - const prev = currentInstance; - internalSetCurrentInstance(instance); - instance.scope.on(); - return () => { - instance.scope.off(); - internalSetCurrentInstance(prev); - }; -}; -const unsetCurrentInstance = () => { - currentInstance && currentInstance.scope.off(); - internalSetCurrentInstance(null); -}; -const isBuiltInTag = /* @__PURE__ */ makeMap("slot,component"); -function validateComponentName(name, { isNativeTag }) { - if (isBuiltInTag(name) || isNativeTag(name)) { - warn$1( - "Do not use built-in or reserved HTML elements as component id: " + name - ); - } -} -function isStatefulComponent(instance) { - return instance.vnode.shapeFlag & 4; -} -let isInSSRComponentSetup = false; -function setupComponent(instance, isSSR = false) { - isSSR && setInSSRSetupState(isSSR); - const { - props - /*, children*/ - } = instance.vnode; - const isStateful = isStatefulComponent(instance); - initProps$1(instance, props, isStateful, isSSR); - const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; - isSSR && setInSSRSetupState(false); - return setupResult; -} -function setupStatefulComponent(instance, isSSR) { - const Component2 = instance.type; - { - if (Component2.name) { - validateComponentName(Component2.name, instance.appContext.config); - } - if (Component2.components) { - const names = Object.keys(Component2.components); - for (let i = 0; i < names.length; i++) { - validateComponentName(names[i], instance.appContext.config); - } - } - if (Component2.directives) { - const names = Object.keys(Component2.directives); - for (let i = 0; i < names.length; i++) { - validateDirectiveName(names[i]); - } - } - if (Component2.compilerOptions && isRuntimeOnly()) { - warn$1( - `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.` - ); - } - } - instance.accessCache = /* @__PURE__ */ Object.create(null); - instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers)); - { - exposePropsOnRenderContext(instance); - } - const { setup } = Component2; - if (setup) { - const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; - const reset = setCurrentInstance(instance); - pauseTracking(); - const setupResult = callWithErrorHandling( - setup, - instance, - 0, - [ - shallowReadonly(instance.props), - setupContext - ] - ); - resetTracking(); - reset(); - if (isPromise(setupResult)) { - setupResult.then(unsetCurrentInstance, unsetCurrentInstance); - { - warn$1( - `setup() returned a Promise, but the version of Vue you are using does not support it yet.` - ); - } - } else { - handleSetupResult(instance, setupResult, isSSR); - } - } else { - finishComponentSetup(instance, isSSR); - } -} -function handleSetupResult(instance, setupResult, isSSR) { - if (isFunction(setupResult)) { - { - instance.render = setupResult; - } - } else if (isObject(setupResult)) { - if (isVNode(setupResult)) { - warn$1( - `setup() should not return VNodes directly - return a render function instead.` - ); - } - { - instance.devtoolsRawSetupState = setupResult; - } - instance.setupState = proxyRefs(setupResult); - { - exposeSetupStateOnRenderContext(instance); - } - } else if (setupResult !== void 0) { - warn$1( - `setup() should return an object. Received: ${setupResult === null ? "null" : typeof setupResult}` - ); - } - finishComponentSetup(instance, isSSR); -} -let compile; -const isRuntimeOnly = () => !compile; -function finishComponentSetup(instance, isSSR, skipOptions) { - const Component2 = instance.type; - if (!instance.render) { - instance.render = Component2.render || NOOP; - } - { - const reset = setCurrentInstance(instance); - pauseTracking(); - try { - applyOptions$1(instance); - } finally { - resetTracking(); - reset(); - } - } - if (!Component2.render && instance.render === NOOP && !isSSR) { - if (Component2.template) { - warn$1( - `Component provided template option but runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".` - ); - } else { - warn$1(`Component is missing template or render function.`); - } - } -} -function getAttrsProxy(instance) { - return instance.attrsProxy || (instance.attrsProxy = new Proxy( - instance.attrs, - { - get(target, key) { - track(instance, "get", "$attrs"); - return target[key]; - }, - set() { - warn$1(`setupContext.attrs is readonly.`); - return false; - }, - deleteProperty() { - warn$1(`setupContext.attrs is readonly.`); - return false; - } - } - )); -} -function getSlotsProxy(instance) { - return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, { - get(target, key) { - track(instance, "get", "$slots"); - return target[key]; - } - })); -} -function createSetupContext(instance) { - const expose = (exposed) => { - { - if (instance.exposed) { - warn$1(`expose() should be called only once per setup().`); - } - if (exposed != null) { - let exposedType = typeof exposed; - if (exposedType === "object") { - if (isArray(exposed)) { - exposedType = "array"; - } else if (isRef(exposed)) { - exposedType = "ref"; - } - } - if (exposedType !== "object") { - warn$1( - `expose() should be passed a plain object, received ${exposedType}.` - ); - } - } - } - instance.exposed = exposed || {}; - }; - { - return Object.freeze({ - get attrs() { - return getAttrsProxy(instance); - }, - get slots() { - return getSlotsProxy(instance); - }, - get emit() { - return (event, ...args) => instance.emit(event, ...args); - }, - expose - }); - } -} -function getExposeProxy(instance) { - if (instance.exposed) { - return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), { - get(target, key) { - if (key in target) { - return target[key]; - } - return instance.proxy[key]; - }, - has(target, key) { - return key in target || key in publicPropertiesMap; - } - })); - } -} -const classifyRE = /(?:^|[-_])(\w)/g; -const classify = (str) => str.replace(classifyRE, (c2) => c2.toUpperCase()).replace(/[-_]/g, ""); -function getComponentName(Component2, includeInferred = true) { - return isFunction(Component2) ? Component2.displayName || Component2.name : Component2.name || includeInferred && Component2.__name; -} -function formatComponentName(instance, Component2, isRoot = false) { - let name = getComponentName(Component2); - if (!name && Component2.__file) { - const match = Component2.__file.match(/([^/\\]+)\.\w+$/); - if (match) { - name = match[1]; - } - } - if (!name && instance && instance.parent) { - const inferFromRegistry = (registry) => { - for (const key in registry) { - if (registry[key] === Component2) { - return key; - } - } - }; - name = inferFromRegistry( - instance.components || instance.parent.type.components - ) || inferFromRegistry(instance.appContext.components); - } - return name ? classify(name) : isRoot ? `App` : `Anonymous`; -} -const computed = (getterOrOptions, debugOptions) => { - const c2 = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup); - { - const i = getCurrentInstance(); - if (i && i.appContext.config.warnRecursiveComputed) { - c2._warnRecursive = true; - } - } - return c2; -}; -const version = "3.4.21"; -const warn = warn$1; -function unwrapper(target) { - return unref(target); -} -const ARRAYTYPE = "[object Array]"; -const OBJECTTYPE = "[object Object]"; -function diff(current, pre) { - const result = {}; - syncKeys(current, pre); - _diff(current, pre, "", result); - return result; -} -function syncKeys(current, pre) { - current = unwrapper(current); - if (current === pre) - return; - const rootCurrentType = toTypeString(current); - const rootPreType = toTypeString(pre); - if (rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE) { - for (let key in pre) { - const currentValue = current[key]; - if (currentValue === void 0) { - current[key] = null; - } else { - syncKeys(currentValue, pre[key]); - } - } - } else if (rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE) { - if (current.length >= pre.length) { - pre.forEach((item, index2) => { - syncKeys(current[index2], item); - }); - } - } -} -function _diff(current, pre, path, result) { - current = unwrapper(current); - if (current === pre) - return; - const rootCurrentType = toTypeString(current); - const rootPreType = toTypeString(pre); - if (rootCurrentType == OBJECTTYPE) { - if (rootPreType != OBJECTTYPE || Object.keys(current).length < Object.keys(pre).length) { - setResult(result, path, current); - } else { - for (let key in current) { - const currentValue = unwrapper(current[key]); - const preValue = pre[key]; - const currentType = toTypeString(currentValue); - const preType = toTypeString(preValue); - if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) { - if (currentValue != preValue) { - setResult( - result, - (path == "" ? "" : path + ".") + key, - currentValue - ); - } - } else if (currentType == ARRAYTYPE) { - if (preType != ARRAYTYPE) { - setResult( - result, - (path == "" ? "" : path + ".") + key, - currentValue - ); - } else { - if (currentValue.length < preValue.length) { - setResult( - result, - (path == "" ? "" : path + ".") + key, - currentValue - ); - } else { - currentValue.forEach((item, index2) => { - _diff( - item, - preValue[index2], - (path == "" ? "" : path + ".") + key + "[" + index2 + "]", - result - ); - }); - } - } - } else if (currentType == OBJECTTYPE) { - if (preType != OBJECTTYPE || Object.keys(currentValue).length < Object.keys(preValue).length) { - setResult( - result, - (path == "" ? "" : path + ".") + key, - currentValue - ); - } else { - for (let subKey in currentValue) { - _diff( - currentValue[subKey], - preValue[subKey], - (path == "" ? "" : path + ".") + key + "." + subKey, - result - ); - } - } - } - } - } - } else if (rootCurrentType == ARRAYTYPE) { - if (rootPreType != ARRAYTYPE) { - setResult(result, path, current); - } else { - if (current.length < pre.length) { - setResult(result, path, current); - } else { - current.forEach((item, index2) => { - _diff(item, pre[index2], path + "[" + index2 + "]", result); - }); - } - } - } else { - setResult(result, path, current); - } -} -function setResult(result, k, v) { - result[k] = v; -} -function hasComponentEffect(instance) { - return queue$1.includes(instance.update); -} -function flushCallbacks(instance) { - const ctx = instance.ctx; - const callbacks = ctx.__next_tick_callbacks; - if (callbacks && callbacks.length) { - const copies = callbacks.slice(0); - callbacks.length = 0; - for (let i = 0; i < copies.length; i++) { - copies[i](); - } - } -} -function nextTick(instance, fn) { - const ctx = instance.ctx; - if (!ctx.__next_tick_pending && !hasComponentEffect(instance)) { - return nextTick$1(fn && fn.bind(instance.proxy)); - } - let _resolve; - if (!ctx.__next_tick_callbacks) { - ctx.__next_tick_callbacks = []; - } - ctx.__next_tick_callbacks.push(() => { - if (fn) { - callWithErrorHandling( - fn.bind(instance.proxy), - instance, - 14 - ); - } else if (_resolve) { - _resolve(instance.proxy); - } - }); - return new Promise((resolve2) => { - _resolve = resolve2; - }); -} -function clone(src, seen) { - src = unwrapper(src); - const type = typeof src; - if (type === "object" && src !== null) { - let copy = seen.get(src); - if (typeof copy !== "undefined") { - return copy; - } - if (isArray(src)) { - const len = src.length; - copy = new Array(len); - seen.set(src, copy); - for (let i = 0; i < len; i++) { - copy[i] = clone(src[i], seen); - } - } else { - copy = {}; - seen.set(src, copy); - for (const name in src) { - if (hasOwn(src, name)) { - copy[name] = clone(src[name], seen); - } - } - } - return copy; - } - if (type !== "symbol") { - return src; - } -} -function deepCopy(src) { - return clone(src, typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : /* @__PURE__ */ new Map()); -} -function getMPInstanceData(instance, keys) { - const data = instance.data; - const ret = /* @__PURE__ */ Object.create(null); - keys.forEach((key) => { - ret[key] = data[key]; - }); - return ret; -} -function patch(instance, data, oldData) { - if (!data) { - return; - } - data = deepCopy(data); - data.$eS = instance.$eS || {}; - data.$eA = instance.$eA || {}; - const ctx = instance.ctx; - const mpType = ctx.mpType; - if (mpType === "page" || mpType === "component") { - data.r0 = 1; - const mpInstance = ctx.$scope; - const keys = Object.keys(data); - const diffData = diff(data, oldData || getMPInstanceData(mpInstance, keys)); - if (Object.keys(diffData).length) { - ctx.__next_tick_pending = true; - mpInstance.setData(diffData, () => { - ctx.__next_tick_pending = false; - flushCallbacks(instance); - }); - flushPreFlushCbs(); - } else { - flushCallbacks(instance); - } - } -} -function initAppConfig(appConfig) { - appConfig.globalProperties.$nextTick = function $nextTick(fn) { - return nextTick(this.$, fn); - }; -} -function onApplyOptions(options, instance, publicThis) { - instance.appContext.config.globalProperties.$applyOptions( - options, - instance, - publicThis - ); - const computedOptions = options.computed; - if (computedOptions) { - const keys = Object.keys(computedOptions); - if (keys.length) { - const ctx = instance.ctx; - if (!ctx.$computedKeys) { - ctx.$computedKeys = []; - } - ctx.$computedKeys.push(...keys); - } - } - delete instance.ctx.$onApplyOptions; -} -function setRef$1(instance, isUnmount = false) { - const { - setupState, - $templateRefs, - $templateUniElementRefs, - ctx: { $scope, $mpPlatform } - } = instance; - if ($mpPlatform === "mp-alipay") { - return; - } - if (!$scope || !$templateRefs && !$templateUniElementRefs) { - return; - } - if (isUnmount) { - $templateRefs && $templateRefs.forEach( - (templateRef) => setTemplateRef(templateRef, null, setupState) - ); - $templateUniElementRefs && $templateUniElementRefs.forEach( - (templateRef) => setTemplateRef(templateRef, null, setupState) - ); - return; - } - const check = $mpPlatform === "mp-baidu" || $mpPlatform === "mp-toutiao"; - const doSetByRefs = (refs) => { - if (refs.length === 0) { - return []; - } - const mpComponents = ( - // 字节小程序 selectAllComponents 可能返回 null - // https://github.com/dcloudio/uni-app/issues/3954 - ($scope.selectAllComponents(".r") || []).concat( - $scope.selectAllComponents(".r-i-f") || [] - ) - ); - return refs.filter((templateRef) => { - const refValue = findComponentPublicInstance(mpComponents, templateRef.i); - if (check && refValue === null) { - return true; - } - setTemplateRef(templateRef, refValue, setupState); - return false; - }); - }; - const doSet = () => { - if ($templateRefs) { - const refs = doSetByRefs($templateRefs); - if (refs.length && instance.proxy && instance.proxy.$scope) { - instance.proxy.$scope.setData({ r1: 1 }, () => { - doSetByRefs(refs); - }); - } - } - }; - if ($templateUniElementRefs && $templateUniElementRefs.length) { - nextTick(instance, () => { - $templateUniElementRefs.forEach((templateRef) => { - if (isArray(templateRef.v)) { - templateRef.v.forEach((v) => { - setTemplateRef(templateRef, v, setupState); - }); - } else { - setTemplateRef(templateRef, templateRef.v, setupState); - } - }); - }); - } - if ($scope._$setRef) { - $scope._$setRef(doSet); - } else { - nextTick(instance, doSet); - } -} -function toSkip(value) { - if (isObject(value)) { - markRaw(value); - } - return value; -} -function findComponentPublicInstance(mpComponents, id) { - const mpInstance = mpComponents.find( - (com) => com && (com.properties || com.props).uI === id - ); - if (mpInstance) { - const vm = mpInstance.$vm; - if (vm) { - return getExposeProxy(vm.$) || vm; - } - return toSkip(mpInstance); - } - return null; -} -function setTemplateRef({ r: r2, f: f2 }, refValue, setupState) { - if (isFunction(r2)) { - r2(refValue, {}); - } else { - const _isString = isString(r2); - const _isRef = isRef(r2); - if (_isString || _isRef) { - if (f2) { - if (!_isRef) { - return; - } - if (!isArray(r2.value)) { - r2.value = []; - } - const existing = r2.value; - if (existing.indexOf(refValue) === -1) { - existing.push(refValue); - if (!refValue) { - return; - } - if (refValue.$) { - onBeforeUnmount(() => remove(existing, refValue), refValue.$); - } - } - } else if (_isString) { - if (hasOwn(setupState, r2)) { - setupState[r2] = refValue; - } - } else if (isRef(r2)) { - r2.value = refValue; - } else { - warnRef(r2); - } - } else { - warnRef(r2); - } - } -} -function warnRef(ref2) { - warn("Invalid template ref type:", ref2, `(${typeof ref2})`); -} -const queuePostRenderEffect = queuePostFlushCb; -function mountComponent(initialVNode, options) { - const instance = initialVNode.component = createComponentInstance(initialVNode, options.parentComponent, null); - { - instance.ctx.$onApplyOptions = onApplyOptions; - instance.ctx.$children = []; - } - if (options.mpType === "app") { - instance.render = NOOP; - } - if (options.onBeforeSetup) { - options.onBeforeSetup(instance, options); - } - { - pushWarningContext(initialVNode); - startMeasure(instance, `mount`); - } - { - startMeasure(instance, `init`); - } - setupComponent(instance); - { - endMeasure(instance, `init`); - } - { - if (options.parentComponent && instance.proxy) { - options.parentComponent.ctx.$children.push(getExposeProxy(instance) || instance.proxy); - } - } - setupRenderEffect(instance); - { - popWarningContext(); - endMeasure(instance, `mount`); - } - return instance.proxy; -} -const getFunctionalFallthrough = (attrs) => { - let res; - for (const key in attrs) { - if (key === "class" || key === "style" || isOn(key)) { - (res || (res = {}))[key] = attrs[key]; - } - } - return res; -}; -function renderComponentRoot(instance) { - const { - type: Component2, - vnode, - proxy, - withProxy, - props, - propsOptions: [propsOptions], - slots, - attrs, - emit: emit2, - render, - renderCache, - data, - setupState, - ctx, - uid: uid2, - appContext: { - app: { - config: { - globalProperties: { pruneComponentPropsCache: pruneComponentPropsCache2 } - } - } - }, - inheritAttrs - } = instance; - instance.$uniElementIds = /* @__PURE__ */ new Map(); - instance.$templateRefs = []; - instance.$templateUniElementRefs = []; - instance.$templateUniElementStyles = {}; - instance.$ei = 0; - pruneComponentPropsCache2(uid2); - instance.__counter = instance.__counter === 0 ? 1 : 0; - let result; - const prev = setCurrentRenderingInstance(instance); - try { - if (vnode.shapeFlag & 4) { - fallthroughAttrs(inheritAttrs, props, propsOptions, attrs); - const proxyToUse = withProxy || proxy; - result = render.call( - proxyToUse, - proxyToUse, - renderCache, - props, - setupState, - data, - ctx - ); - } else { - fallthroughAttrs( - inheritAttrs, - props, - propsOptions, - Component2.props ? attrs : getFunctionalFallthrough(attrs) - ); - const render2 = Component2; - result = render2.length > 1 ? render2(props, { attrs, slots, emit: emit2 }) : render2( - props, - null - /* we know it doesn't need it */ - ); - } - } catch (err) { - handleError(err, instance, 1); - result = false; - } - setRef$1(instance); - setCurrentRenderingInstance(prev); - return result; -} -function fallthroughAttrs(inheritAttrs, props, propsOptions, fallthroughAttrs2) { - if (props && fallthroughAttrs2 && inheritAttrs !== false) { - const keys = Object.keys(fallthroughAttrs2).filter( - (key) => key !== "class" && key !== "style" - ); - if (!keys.length) { - return; - } - if (propsOptions && keys.some(isModelListener)) { - keys.forEach((key) => { - if (!isModelListener(key) || !(key.slice(9) in propsOptions)) { - props[key] = fallthroughAttrs2[key]; - } - }); - } else { - keys.forEach((key) => props[key] = fallthroughAttrs2[key]); - } - } -} -const updateComponentPreRender = (instance) => { - pauseTracking(); - flushPreFlushCbs(); - resetTracking(); -}; -function componentUpdateScopedSlotsFn() { - const scopedSlotsData = this.$scopedSlotsData; - if (!scopedSlotsData || scopedSlotsData.length === 0) { - return; - } - const mpInstance = this.ctx.$scope; - const oldData = mpInstance.data; - const diffData = /* @__PURE__ */ Object.create(null); - scopedSlotsData.forEach(({ path, index: index2, data }) => { - const oldScopedSlotData = getValueByDataPath(oldData, path); - const diffPath = isString(index2) ? `${path}.${index2}` : `${path}[${index2}]`; - if (typeof oldScopedSlotData === "undefined" || typeof oldScopedSlotData[index2] === "undefined") { - diffData[diffPath] = data; - } else { - const diffScopedSlotData = diff( - data, - oldScopedSlotData[index2] - ); - Object.keys(diffScopedSlotData).forEach((name) => { - diffData[diffPath + "." + name] = diffScopedSlotData[name]; - }); - } - }); - scopedSlotsData.length = 0; - if (Object.keys(diffData).length) { - mpInstance.setData(diffData); - } -} -function toggleRecurse({ effect: effect2, update }, allowed) { - effect2.allowRecurse = update.allowRecurse = allowed; -} -function setupRenderEffect(instance) { - const updateScopedSlots = componentUpdateScopedSlotsFn.bind( - instance - ); - instance.$updateScopedSlots = () => nextTick$1(() => queueJob(updateScopedSlots)); - const componentUpdateFn = () => { - if (!instance.isMounted) { - onBeforeUnmount(() => { - setRef$1(instance, true); - }, instance); - { - startMeasure(instance, `patch`); - } - patch(instance, renderComponentRoot(instance)); - { - endMeasure(instance, `patch`); - } - { - devtoolsComponentAdded(instance); - } - } else { - const { next, bu, u } = instance; - { - pushWarningContext(next || instance.vnode); - } - toggleRecurse(instance, false); - updateComponentPreRender(); - if (bu) { - invokeArrayFns$1(bu); - } - toggleRecurse(instance, true); - { - startMeasure(instance, `patch`); - } - patch(instance, renderComponentRoot(instance)); - { - endMeasure(instance, `patch`); - } - if (u) { - queuePostRenderEffect(u); - } - { - devtoolsComponentUpdated(instance); - } - { - popWarningContext(); - } - } - }; - const effect2 = instance.effect = new ReactiveEffect( - componentUpdateFn, - NOOP, - () => queueJob(update), - instance.scope - // track it in component's effect scope - ); - const update = instance.update = () => { - if (effect2.dirty) { - effect2.run(); - } - }; - update.id = instance.uid; - toggleRecurse(instance, true); - { - effect2.onTrack = instance.rtc ? (e2) => invokeArrayFns$1(instance.rtc, e2) : void 0; - effect2.onTrigger = instance.rtg ? (e2) => invokeArrayFns$1(instance.rtg, e2) : void 0; - update.ownerInstance = instance; - } - { - update(); - } -} -function unmountComponent(instance) { - const { bum, scope, update, um } = instance; - if (bum) { - invokeArrayFns$1(bum); - } - { - const parentInstance = instance.parent; - if (parentInstance) { - const $children = parentInstance.ctx.$children; - const target = getExposeProxy(instance) || instance.proxy; - const index2 = $children.indexOf(target); - if (index2 > -1) { - $children.splice(index2, 1); - } - } - } - scope.stop(); - if (update) { - update.active = false; - } - if (um) { - queuePostRenderEffect(um); - } - queuePostRenderEffect(() => { - instance.isUnmounted = true; - }); - { - devtoolsComponentRemoved(instance); - } -} -const oldCreateApp = createAppAPI(); -function getTarget() { - if (typeof window !== "undefined") { - return window; - } - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof global !== "undefined") { - return global; - } - if (typeof my !== "undefined") { - return my; - } -} -function createVueApp(rootComponent, rootProps = null) { - const target = getTarget(); - target.__VUE__ = true; - { - setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target); - } - const app = oldCreateApp(rootComponent, rootProps); - const appContext = app._context; - initAppConfig(appContext.config); - const createVNode2 = (initialVNode) => { - initialVNode.appContext = appContext; - initialVNode.shapeFlag = 6; - return initialVNode; - }; - const createComponent2 = function createComponent22(initialVNode, options) { - return mountComponent(createVNode2(initialVNode), options); - }; - const destroyComponent = function destroyComponent2(component) { - return component && unmountComponent(component.$); - }; - app.mount = function mount() { - rootComponent.render = NOOP; - const instance = mountComponent( - createVNode2({ type: rootComponent }), - { - mpType: "app", - mpInstance: null, - parentComponent: null, - slots: [], - props: null - } - ); - app._instance = instance.$; - { - devtoolsInitApp(app, version); - } - instance.$app = app; - instance.$createComponent = createComponent2; - instance.$destroyComponent = destroyComponent; - appContext.$appInstance = instance; - return instance; - }; - app.unmount = function unmount() { - warn(`Cannot unmount an app.`); - }; - return app; -} -function injectLifecycleHook(name, hook, publicThis, instance) { - if (isFunction(hook)) { - injectHook(name, hook.bind(publicThis), instance); - } -} -function initHooks$1(options, instance, publicThis) { - const mpType = options.mpType || publicThis.$mpType; - if (!mpType || mpType === "component") { - return; - } - Object.keys(options).forEach((name) => { - if (isUniLifecycleHook(name, options[name], false)) { - const hooks = options[name]; - if (isArray(hooks)) { - hooks.forEach((hook) => injectLifecycleHook(name, hook, publicThis, instance)); - } else { - injectLifecycleHook(name, hooks, publicThis, instance); - } - } - }); -} -function applyOptions$2(options, instance, publicThis) { - initHooks$1(options, instance, publicThis); -} -function set(target, key, val) { - return target[key] = val; -} -function $callMethod(method, ...args) { - const fn = this[method]; - if (fn) { - return fn(...args); - } - console.error(`method ${method} not found`); - return null; -} -function createErrorHandler(app) { - const userErrorHandler = app.config.errorHandler; - return function errorHandler(err, instance, info) { - if (userErrorHandler) { - userErrorHandler(err, instance, info); - } - const appInstance = app._instance; - if (!appInstance || !appInstance.proxy) { - throw err; - } - if (appInstance[ON_ERROR]) { - { - appInstance.proxy.$callHook(ON_ERROR, err); - } - } else { - logError(err, info, instance ? instance.$.vnode : null, false); - } - }; -} -function mergeAsArray(to, from) { - return to ? [...new Set([].concat(to, from))] : from; -} -function initOptionMergeStrategies(optionMergeStrategies) { - UniLifecycleHooks.forEach((name) => { - optionMergeStrategies[name] = mergeAsArray; - }); -} -let realAtob; -const b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; -const b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/; -if (typeof atob !== "function") { - realAtob = function(str) { - str = String(str).replace(/[\t\n\f\r ]+/g, ""); - if (!b64re.test(str)) { - throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded."); - } - str += "==".slice(2 - (str.length & 3)); - var bitmap; - var result = ""; - var r1; - var r2; - var i = 0; - for (; i < str.length; ) { - bitmap = b64.indexOf(str.charAt(i++)) << 18 | b64.indexOf(str.charAt(i++)) << 12 | (r1 = b64.indexOf(str.charAt(i++))) << 6 | (r2 = b64.indexOf(str.charAt(i++))); - result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) : r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) : String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255); - } - return result; - }; -} else { - realAtob = atob; -} -function b64DecodeUnicode(str) { - return decodeURIComponent(realAtob(str).split("").map(function(c2) { - return "%" + ("00" + c2.charCodeAt(0).toString(16)).slice(-2); - }).join("")); -} -function getCurrentUserInfo() { - const token = index.getStorageSync("uni_id_token") || ""; - const tokenArr = token.split("."); - if (!token || tokenArr.length !== 3) { - return { - uid: null, - role: [], - permission: [], - tokenExpired: 0 - }; - } - let userInfo; - try { - userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1])); - } catch (error) { - throw new Error("获取当前用户信息出错,详细错误信息为:" + error.message); - } - userInfo.tokenExpired = userInfo.exp * 1e3; - delete userInfo.exp; - delete userInfo.iat; - return userInfo; -} -function uniIdMixin(globalProperties) { - globalProperties.uniIDHasRole = function(roleId) { - const { role } = getCurrentUserInfo(); - return role.indexOf(roleId) > -1; - }; - globalProperties.uniIDHasPermission = function(permissionId) { - const { permission } = getCurrentUserInfo(); - return this.uniIDHasRole("admin") || permission.indexOf(permissionId) > -1; - }; - globalProperties.uniIDTokenValid = function() { - const { tokenExpired } = getCurrentUserInfo(); - return tokenExpired > Date.now(); - }; -} -function initApp(app) { - const appConfig = app.config; - appConfig.errorHandler = invokeCreateErrorHandler(app, createErrorHandler); - initOptionMergeStrategies(appConfig.optionMergeStrategies); - const globalProperties = appConfig.globalProperties; - { - uniIdMixin(globalProperties); - } - { - globalProperties.$set = set; - globalProperties.$applyOptions = applyOptions$2; - globalProperties.$callMethod = $callMethod; - } - { - index.invokeCreateVueAppHook(app); - } -} -const propsCaches = /* @__PURE__ */ Object.create(null); -function pruneComponentPropsCache(uid2) { - delete propsCaches[uid2]; -} -function findComponentPropsData(up) { - if (!up) { - return; - } - const [uid2, propsId] = up.split(","); - if (!propsCaches[uid2]) { - return; - } - return propsCaches[uid2][parseInt(propsId)]; -} -var plugin = { - install(app) { - initApp(app); - app.config.globalProperties.pruneComponentPropsCache = pruneComponentPropsCache; - const oldMount = app.mount; - app.mount = function mount(rootContainer) { - const instance = oldMount.call(app, rootContainer); - const createApp2 = getCreateApp(); - if (createApp2) { - createApp2(instance); - } else { - if (typeof createMiniProgramApp !== "undefined") { - createMiniProgramApp(instance); - } - } - return instance; - }; - } -}; -function getCreateApp() { - const method = "createApp"; - if (typeof global !== "undefined" && typeof global[method] !== "undefined") { - return global[method]; - } else if (typeof my !== "undefined") { - return my[method]; - } -} -function vOn(value, key) { - const instance = getCurrentInstance(); - const ctx = instance.ctx; - const extraKey = typeof key !== "undefined" && (ctx.$mpPlatform === "mp-weixin" || ctx.$mpPlatform === "mp-qq" || ctx.$mpPlatform === "mp-xhs") && (isString(key) || typeof key === "number") ? "_" + key : ""; - const name = "e" + instance.$ei++ + extraKey; - const mpInstance = ctx.$scope; - if (!value) { - delete mpInstance[name]; - return name; - } - const existingInvoker = mpInstance[name]; - if (existingInvoker) { - existingInvoker.value = value; - } else { - mpInstance[name] = createInvoker(value, instance); - } - return name; -} -function createInvoker(initialValue, instance) { - const invoker = (e2) => { - patchMPEvent(e2); - let args = [e2]; - if (instance && instance.ctx.$getTriggerEventDetail) { - if (typeof e2.detail === "number") { - e2.detail = instance.ctx.$getTriggerEventDetail(e2.detail); - } - } - if (e2.detail && e2.detail.__args__) { - args = e2.detail.__args__; - } - const eventValue = invoker.value; - const invoke = () => callWithAsyncErrorHandling(patchStopImmediatePropagation(e2, eventValue), instance, 5, args); - const eventTarget = e2.target; - const eventSync = eventTarget ? eventTarget.dataset ? String(eventTarget.dataset.eventsync) === "true" : false : false; - if (bubbles.includes(e2.type) && !eventSync) { - setTimeout(invoke); - } else { - const res = invoke(); - if (e2.type === "input" && (isArray(res) || isPromise(res))) { - return; - } - return res; - } - }; - invoker.value = initialValue; - return invoker; -} -const bubbles = [ - // touch事件暂不做延迟,否则在 Android 上会影响性能,比如一些拖拽跟手手势等 - // 'touchstart', - // 'touchmove', - // 'touchcancel', - // 'touchend', - "tap", - "longpress", - "longtap", - "transitionend", - "animationstart", - "animationiteration", - "animationend", - "touchforcechange" -]; -function patchMPEvent(event, instance) { - if (event.type && event.target) { - event.preventDefault = NOOP; - event.stopPropagation = NOOP; - event.stopImmediatePropagation = NOOP; - if (!hasOwn(event, "detail")) { - event.detail = {}; - } - if (hasOwn(event, "markerId")) { - event.detail = typeof event.detail === "object" ? event.detail : {}; - event.detail.markerId = event.markerId; - } - if (isPlainObject(event.detail) && hasOwn(event.detail, "checked") && !hasOwn(event.detail, "value")) { - event.detail.value = event.detail.checked; - } - if (isPlainObject(event.detail)) { - event.target = extend({}, event.target, event.detail); - } - } -} -function patchStopImmediatePropagation(e2, value) { - if (isArray(value)) { - const originalStop = e2.stopImmediatePropagation; - e2.stopImmediatePropagation = () => { - originalStop && originalStop.call(e2); - e2._stopped = true; - }; - return value.map((fn) => (e3) => !e3._stopped && fn(e3)); - } else { - return value; - } -} -const o = (value, key) => vOn(value, key); -function createApp$1(rootComponent, rootProps = null) { - rootComponent && (rootComponent.mpType = "app"); - return createVueApp(rootComponent, rootProps).use(plugin); -} -const createSSRApp = createApp$1; -function getLocaleLanguage$1() { - let localeLanguage = ""; - { - const appBaseInfo = wx.getAppBaseInfo(); - const language = appBaseInfo && appBaseInfo.language ? appBaseInfo.language : LOCALE_EN; - localeLanguage = normalizeLocale(language) || LOCALE_EN; - } - return localeLanguage; -} -function validateProtocolFail(name, msg) { - console.warn(`${name}: ${msg}`); -} -function validateProtocol(name, data, protocol, onFail) { - if (!onFail) { - onFail = validateProtocolFail; - } - for (const key in protocol) { - const errMsg = validateProp(key, data[key], protocol[key], !hasOwn(data, key)); - if (isString(errMsg)) { - onFail(name, errMsg); - } - } -} -function validateProtocols(name, args, protocol, onFail) { - if (!protocol) { - return; - } - if (!isArray(protocol)) { - return validateProtocol(name, args[0] || /* @__PURE__ */ Object.create(null), protocol, onFail); - } - const len = protocol.length; - const argsLen = args.length; - for (let i = 0; i < len; i++) { - const opts = protocol[i]; - const data = /* @__PURE__ */ Object.create(null); - if (argsLen > i) { - data[opts.name] = args[i]; - } - validateProtocol(name, data, { [opts.name]: opts }, onFail); - } -} -function validateProp(name, value, prop, isAbsent) { - if (!isPlainObject(prop)) { - prop = { type: prop }; - } - const { type, required, validator } = prop; - if (required && isAbsent) { - return 'Missing required args: "' + name + '"'; - } - if (value == null && !required) { - return; - } - if (type != null) { - let isValid = false; - const types = isArray(type) ? type : [type]; - const expectedTypes = []; - for (let i = 0; i < types.length && !isValid; i++) { - const { valid, expectedType } = assertType(value, types[i]); - expectedTypes.push(expectedType || ""); - isValid = valid; - } - if (!isValid) { - return getInvalidTypeMessage(name, value, expectedTypes); - } - } - if (validator) { - return validator(value); - } -} -const isSimpleType = /* @__PURE__ */ makeMap("String,Number,Boolean,Function,Symbol"); -function assertType(value, type) { - let valid; - const expectedType = getType(type); - if (isSimpleType(expectedType)) { - const t = typeof value; - valid = t === expectedType.toLowerCase(); - if (!valid && t === "object") { - valid = value instanceof type; - } - } else if (expectedType === "Object") { - valid = isObject(value); - } else if (expectedType === "Array") { - valid = isArray(value); - } else { - { - valid = value instanceof type; - } - } - return { - valid, - expectedType - }; -} -function getInvalidTypeMessage(name, value, expectedTypes) { - let message = `Invalid args: type check failed for args "${name}". Expected ${expectedTypes.map(capitalize).join(", ")}`; - const expectedType = expectedTypes[0]; - const receivedType = toRawType(value); - const expectedValue = styleValue(value, expectedType); - const receivedValue = styleValue(value, receivedType); - if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) { - message += ` with value ${expectedValue}`; - } - message += `, got ${receivedType} `; - if (isExplicable(receivedType)) { - message += `with value ${receivedValue}.`; - } - return message; -} -function getType(ctor) { - const match = ctor && ctor.toString().match(/^\s*function (\w+)/); - return match ? match[1] : ""; -} -function styleValue(value, type) { - if (type === "String") { - return `"${value}"`; - } else if (type === "Number") { - return `${Number(value)}`; - } else { - return `${value}`; - } -} -function isExplicable(type) { - const explicitTypes = ["string", "number", "boolean"]; - return explicitTypes.some((elem) => type.toLowerCase() === elem); -} -function isBoolean(...args) { - return args.some((elem) => elem.toLowerCase() === "boolean"); -} -function tryCatch(fn) { - return function() { - try { - return fn.apply(fn, arguments); - } catch (e) { - console.error(e); - } - }; -} -let invokeCallbackId = 1; -const invokeCallbacks = {}; -function addInvokeCallback(id, name, callback, keepAlive = false) { - invokeCallbacks[id] = { - name, - keepAlive, - callback - }; - return id; -} -function invokeCallback(id, res, extras) { - if (typeof id === "number") { - const opts = invokeCallbacks[id]; - if (opts) { - if (!opts.keepAlive) { - delete invokeCallbacks[id]; - } - return opts.callback(res, extras); - } - } - return res; -} -const API_SUCCESS = "success"; -const API_FAIL = "fail"; -const API_COMPLETE = "complete"; -function getApiCallbacks(args) { - const apiCallbacks = {}; - for (const name in args) { - const fn = args[name]; - if (isFunction(fn)) { - apiCallbacks[name] = tryCatch(fn); - delete args[name]; - } - } - return apiCallbacks; -} -function normalizeErrMsg(errMsg, name) { - if (!errMsg || errMsg.indexOf(":fail") === -1) { - return name + ":ok"; - } - return name + errMsg.substring(errMsg.indexOf(":fail")); -} -function createAsyncApiCallback(name, args = {}, { beforeAll, beforeSuccess } = {}) { - if (!isPlainObject(args)) { - args = {}; - } - const { success, fail, complete } = getApiCallbacks(args); - const hasSuccess = isFunction(success); - const hasFail = isFunction(fail); - const hasComplete = isFunction(complete); - const callbackId = invokeCallbackId++; - addInvokeCallback(callbackId, name, (res) => { - res = res || {}; - res.errMsg = normalizeErrMsg(res.errMsg, name); - isFunction(beforeAll) && beforeAll(res); - if (res.errMsg === name + ":ok") { - isFunction(beforeSuccess) && beforeSuccess(res, args); - hasSuccess && success(res); - } else { - hasFail && fail(res); - } - hasComplete && complete(res); - }); - return callbackId; -} -const HOOK_SUCCESS = "success"; -const HOOK_FAIL = "fail"; -const HOOK_COMPLETE = "complete"; -const globalInterceptors = {}; -const scopedInterceptors = {}; -function wrapperHook(hook, params) { - return function(data) { - return hook(data, params) || data; - }; -} -function queue(hooks, data, params) { - let promise = false; - for (let i = 0; i < hooks.length; i++) { - const hook = hooks[i]; - if (promise) { - promise = Promise.resolve(wrapperHook(hook, params)); - } else { - const res = hook(data, params); - if (isPromise(res)) { - promise = Promise.resolve(res); - } - if (res === false) { - return { - then() { - }, - catch() { - } - }; - } - } - } - return promise || { - then(callback) { - return callback(data); - }, - catch() { - } - }; -} -function wrapperOptions(interceptors2, options = {}) { - [HOOK_SUCCESS, HOOK_FAIL, HOOK_COMPLETE].forEach((name) => { - const hooks = interceptors2[name]; - if (!isArray(hooks)) { - return; - } - const oldCallback = options[name]; - options[name] = function callbackInterceptor(res) { - queue(hooks, res, options).then((res2) => { - return isFunction(oldCallback) && oldCallback(res2) || res2; - }); - }; - }); - return options; -} -function wrapperReturnValue(method, returnValue) { - const returnValueHooks = []; - if (isArray(globalInterceptors.returnValue)) { - returnValueHooks.push(...globalInterceptors.returnValue); - } - const interceptor = scopedInterceptors[method]; - if (interceptor && isArray(interceptor.returnValue)) { - returnValueHooks.push(...interceptor.returnValue); - } - returnValueHooks.forEach((hook) => { - returnValue = hook(returnValue) || returnValue; - }); - return returnValue; -} -function getApiInterceptorHooks(method) { - const interceptor = /* @__PURE__ */ Object.create(null); - Object.keys(globalInterceptors).forEach((hook) => { - if (hook !== "returnValue") { - interceptor[hook] = globalInterceptors[hook].slice(); - } - }); - const scopedInterceptor = scopedInterceptors[method]; - if (scopedInterceptor) { - Object.keys(scopedInterceptor).forEach((hook) => { - if (hook !== "returnValue") { - interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]); - } - }); - } - return interceptor; -} -function invokeApi(method, api, options, params) { - const interceptor = getApiInterceptorHooks(method); - if (interceptor && Object.keys(interceptor).length) { - if (isArray(interceptor.invoke)) { - const res = queue(interceptor.invoke, options); - return res.then((options2) => { - return api(wrapperOptions(getApiInterceptorHooks(method), options2), ...params); - }); - } else { - return api(wrapperOptions(interceptor, options), ...params); - } - } - return api(options, ...params); -} -function hasCallback(args) { - if (isPlainObject(args) && [API_SUCCESS, API_FAIL, API_COMPLETE].find((cb) => isFunction(args[cb]))) { - return true; - } - return false; -} -function handlePromise(promise) { - return promise; -} -function promisify$1(name, fn) { - return (args = {}, ...rest) => { - if (hasCallback(args)) { - return wrapperReturnValue(name, invokeApi(name, fn, args, rest)); - } - return wrapperReturnValue(name, handlePromise(new Promise((resolve, reject) => { - invokeApi(name, fn, extend(args, { success: resolve, fail: reject }), rest); - }))); - }; -} -function formatApiArgs(args, options) { - args[0]; - { - return; - } -} -function invokeSuccess(id, name, res) { - const result = { - errMsg: name + ":ok" - }; - return invokeCallback(id, extend(res || {}, result)); -} -function invokeFail(id, name, errMsg, errRes = {}) { - const errMsgPrefix = name + ":fail"; - let apiErrMsg = ""; - if (!errMsg) { - apiErrMsg = errMsgPrefix; - } else if (errMsg.indexOf(errMsgPrefix) === 0) { - apiErrMsg = errMsg; - } else { - apiErrMsg = errMsgPrefix + " " + errMsg; - } - { - delete errRes.errCode; - } - let res = extend({ errMsg: apiErrMsg }, errRes); - return invokeCallback(id, res); -} -function beforeInvokeApi(name, args, protocol, options) { - { - validateProtocols(name, args, protocol); - } - const errMsg = formatApiArgs(args); - if (errMsg) { - return errMsg; - } -} -function parseErrMsg(errMsg) { - if (!errMsg || isString(errMsg)) { - return errMsg; - } - if (errMsg.stack) { - if (typeof globalThis === "undefined" || !globalThis.harmonyChannel) { - console.error(errMsg.message + "\n" + errMsg.stack); - } - return errMsg.message; - } - return errMsg; -} -function wrapperTaskApi(name, fn, protocol, options) { - return (args) => { - const id = createAsyncApiCallback(name, args, options); - const errMsg = beforeInvokeApi(name, [args], protocol); - if (errMsg) { - return invokeFail(id, name, errMsg); - } - return fn(args, { - resolve: (res) => invokeSuccess(id, name, res), - reject: (errMsg2, errRes) => invokeFail(id, name, parseErrMsg(errMsg2), errRes) - }); - }; -} -function wrapperSyncApi(name, fn, protocol, options) { - return (...args) => { - const errMsg = beforeInvokeApi(name, args, protocol); - if (errMsg) { - throw new Error(errMsg); - } - return fn.apply(null, args); - }; -} -function wrapperAsyncApi(name, fn, protocol, options) { - return wrapperTaskApi(name, fn, protocol, options); -} -function defineSyncApi(name, fn, protocol, options) { - return wrapperSyncApi(name, fn, protocol); -} -function defineAsyncApi(name, fn, protocol, options) { - return promisify$1(name, wrapperAsyncApi(name, fn, protocol, options)); -} -const API_UPX2PX = "upx2px"; -const Upx2pxProtocol = [ - { - name: "upx", - type: [Number, String], - required: true - } -]; -const EPS = 1e-4; -const BASE_DEVICE_WIDTH = 750; -let isIOS = false; -let deviceWidth = 0; -let deviceDPR = 0; -function checkDeviceWidth() { - const { windowWidth, pixelRatio, platform } = Object.assign({}, wx.getWindowInfo(), { - platform: wx.getDeviceInfo().platform - }); - deviceWidth = windowWidth; - deviceDPR = pixelRatio; - isIOS = platform === "ios"; -} -const upx2px = defineSyncApi(API_UPX2PX, (number, newDeviceWidth) => { - if (deviceWidth === 0) { - checkDeviceWidth(); - } - number = Number(number); - if (number === 0) { - return 0; - } - let width = newDeviceWidth || deviceWidth; - let result = number / BASE_DEVICE_WIDTH * width; - if (result < 0) { - result = -result; - } - result = Math.floor(result + EPS); - if (result === 0) { - if (deviceDPR === 1 || !isIOS) { - result = 1; - } else { - result = 0.5; - } - } - return number < 0 ? -result : result; -}, Upx2pxProtocol); -function __f__(type, filename, ...args) { - if (filename) { - args.push(filename); - } - console[type].apply(console, args); -} -const API_ADD_INTERCEPTOR = "addInterceptor"; -const API_REMOVE_INTERCEPTOR = "removeInterceptor"; -const AddInterceptorProtocol = [ - { - name: "method", - type: [String, Object], - required: true - } -]; -const RemoveInterceptorProtocol = AddInterceptorProtocol; -function mergeInterceptorHook(interceptors2, interceptor) { - Object.keys(interceptor).forEach((hook) => { - if (isFunction(interceptor[hook])) { - interceptors2[hook] = mergeHook(interceptors2[hook], interceptor[hook]); - } - }); -} -function removeInterceptorHook(interceptors2, interceptor) { - if (!interceptors2 || !interceptor) { - return; - } - Object.keys(interceptor).forEach((name) => { - const hooks = interceptors2[name]; - const hook = interceptor[name]; - if (isArray(hooks) && isFunction(hook)) { - remove(hooks, hook); - } - }); -} -function mergeHook(parentVal, childVal) { - const res = childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal; - return res ? dedupeHooks(res) : res; -} -function dedupeHooks(hooks) { - const res = []; - for (let i = 0; i < hooks.length; i++) { - if (res.indexOf(hooks[i]) === -1) { - res.push(hooks[i]); - } - } - return res; -} -const addInterceptor = defineSyncApi(API_ADD_INTERCEPTOR, (method, interceptor) => { - if (isString(method) && isPlainObject(interceptor)) { - mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), interceptor); - } else if (isPlainObject(method)) { - mergeInterceptorHook(globalInterceptors, method); - } -}, AddInterceptorProtocol); -const removeInterceptor = defineSyncApi(API_REMOVE_INTERCEPTOR, (method, interceptor) => { - if (isString(method)) { - if (isPlainObject(interceptor)) { - removeInterceptorHook(scopedInterceptors[method], interceptor); - } else { - delete scopedInterceptors[method]; - } - } else if (isPlainObject(method)) { - removeInterceptorHook(globalInterceptors, method); - } -}, RemoveInterceptorProtocol); -const interceptors = {}; -const API_ON = "$on"; -const OnProtocol = [ - { - name: "event", - type: String, - required: true - }, - { - name: "callback", - type: Function, - required: true - } -]; -const API_ONCE = "$once"; -const OnceProtocol = OnProtocol; -const API_OFF = "$off"; -const OffProtocol = [ - { - name: "event", - type: [String, Array] - }, - { - name: "callback", - type: [Function, Number] - } -]; -const API_EMIT = "$emit"; -const EmitProtocol = [ - { - name: "event", - type: String, - required: true - } -]; -class EventBus { - constructor() { - this.$emitter = new E$1(); - } - on(name, callback) { - return this.$emitter.on(name, callback); - } - once(name, callback) { - return this.$emitter.once(name, callback); - } - off(name, callback) { - if (!name) { - this.$emitter.e = {}; - return; - } - this.$emitter.off(name, callback); - } - emit(name, ...args) { - this.$emitter.emit(name, ...args); - } -} -const eventBus = new EventBus(); -const $on = defineSyncApi(API_ON, (name, callback) => { - eventBus.on(name, callback); - return () => eventBus.off(name, callback); -}, OnProtocol); -const $once = defineSyncApi(API_ONCE, (name, callback) => { - eventBus.once(name, callback); - return () => eventBus.off(name, callback); -}, OnceProtocol); -const $off = defineSyncApi(API_OFF, (name, callback) => { - if (!isArray(name)) - name = name ? [name] : []; - name.forEach((n) => { - eventBus.off(n, callback); - }); -}, OffProtocol); -const $emit = defineSyncApi(API_EMIT, (name, ...args) => { - eventBus.emit(name, ...args); -}, EmitProtocol); -let cid; -let cidErrMsg; -let enabled; -function normalizePushMessage(message) { - try { - return JSON.parse(message); - } catch (e) { - } - return message; -} -function invokePushCallback(args) { - if (args.type === "enabled") { - enabled = true; - } else if (args.type === "clientId") { - cid = args.cid; - cidErrMsg = args.errMsg; - invokeGetPushCidCallbacks(cid, args.errMsg); - } else if (args.type === "pushMsg") { - const message = { - type: "receive", - data: normalizePushMessage(args.message) - }; - for (let i = 0; i < onPushMessageCallbacks.length; i++) { - const callback = onPushMessageCallbacks[i]; - callback(message); - if (message.stopped) { - break; - } - } - } else if (args.type === "click") { - onPushMessageCallbacks.forEach((callback) => { - callback({ - type: "click", - data: normalizePushMessage(args.message) - }); - }); - } -} -const getPushCidCallbacks = []; -function invokeGetPushCidCallbacks(cid2, errMsg) { - getPushCidCallbacks.forEach((callback) => { - callback(cid2, errMsg); - }); - getPushCidCallbacks.length = 0; -} -const API_GET_PUSH_CLIENT_ID = "getPushClientId"; -const getPushClientId = defineAsyncApi(API_GET_PUSH_CLIENT_ID, (_, { resolve, reject }) => { - Promise.resolve().then(() => { - if (typeof enabled === "undefined") { - enabled = false; - cid = ""; - cidErrMsg = "uniPush is not enabled"; - } - getPushCidCallbacks.push((cid2, errMsg) => { - if (cid2) { - resolve({ cid: cid2 }); - } else { - reject(errMsg); - } - }); - if (typeof cid !== "undefined") { - invokeGetPushCidCallbacks(cid, cidErrMsg); - } - }); -}); -const onPushMessageCallbacks = []; -const onPushMessage = (fn) => { - if (onPushMessageCallbacks.indexOf(fn) === -1) { - onPushMessageCallbacks.push(fn); - } -}; -const offPushMessage = (fn) => { - if (!fn) { - onPushMessageCallbacks.length = 0; - } else { - const index2 = onPushMessageCallbacks.indexOf(fn); - if (index2 > -1) { - onPushMessageCallbacks.splice(index2, 1); - } - } -}; -const SYNC_API_RE = /^\$|__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/; -const CONTEXT_API_RE = /^create|Manager$/; -const CONTEXT_API_RE_EXC = ["createBLEConnection"]; -const TASK_APIS = ["request", "downloadFile", "uploadFile", "connectSocket"]; -const ASYNC_API = ["createBLEConnection"]; -const CALLBACK_API_RE = /^on|^off/; -function isContextApi(name) { - return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1; -} -function isSyncApi(name) { - return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1; -} -function isCallbackApi(name) { - return CALLBACK_API_RE.test(name) && name !== "onPush"; -} -function isTaskApi(name) { - return TASK_APIS.indexOf(name) !== -1; -} -function shouldPromise(name) { - if (isContextApi(name) || isSyncApi(name) || isCallbackApi(name)) { - return false; - } - return true; -} -if (!Promise.prototype.finally) { - Promise.prototype.finally = function(onfinally) { - const promise = this.constructor; - return this.then((value) => promise.resolve(onfinally && onfinally()).then(() => value), (reason) => promise.resolve(onfinally && onfinally()).then(() => { - throw reason; - })); - }; -} -function promisify(name, api) { - if (!shouldPromise(name)) { - return api; - } - if (!isFunction(api)) { - return api; - } - return function promiseApi(options = {}, ...rest) { - if (isFunction(options.success) || isFunction(options.fail) || isFunction(options.complete)) { - return wrapperReturnValue(name, invokeApi(name, api, options, rest)); - } - return wrapperReturnValue(name, handlePromise(new Promise((resolve, reject) => { - invokeApi(name, api, extend({}, options, { - success: resolve, - fail: reject - }), rest); - }))); - }; -} -const CALLBACKS = ["success", "fail", "cancel", "complete"]; -function initWrapper(protocols2) { - function processCallback(methodName, method, returnValue) { - return function(res) { - return method(processReturnValue(methodName, res, returnValue)); - }; - } - function processArgs(methodName, fromArgs, argsOption = {}, returnValue = {}, keepFromArgs = false) { - if (isPlainObject(fromArgs)) { - const toArgs = keepFromArgs === true ? fromArgs : {}; - if (isFunction(argsOption)) { - argsOption = argsOption(fromArgs, toArgs) || {}; - } - for (const key in fromArgs) { - if (hasOwn(argsOption, key)) { - let keyOption = argsOption[key]; - if (isFunction(keyOption)) { - keyOption = keyOption(fromArgs[key], fromArgs, toArgs); - } - if (!keyOption) { - console.warn(`微信小程序 ${methodName} 暂不支持 ${key}`); - } else if (isString(keyOption)) { - toArgs[keyOption] = fromArgs[key]; - } else if (isPlainObject(keyOption)) { - toArgs[keyOption.name ? keyOption.name : key] = keyOption.value; - } - } else if (CALLBACKS.indexOf(key) !== -1) { - const callback = fromArgs[key]; - if (isFunction(callback)) { - toArgs[key] = processCallback(methodName, callback, returnValue); - } - } else { - if (!keepFromArgs && !hasOwn(toArgs, key)) { - toArgs[key] = fromArgs[key]; - } - } - } - return toArgs; - } else if (isFunction(fromArgs)) { - if (isFunction(argsOption)) { - argsOption(fromArgs, {}); - } - fromArgs = processCallback(methodName, fromArgs, returnValue); - } - return fromArgs; - } - function processReturnValue(methodName, res, returnValue, keepReturnValue = false) { - if (isFunction(protocols2.returnValue)) { - res = protocols2.returnValue(methodName, res); - } - const realKeepReturnValue = keepReturnValue || false; - return processArgs(methodName, res, returnValue, {}, realKeepReturnValue); - } - return function wrapper(methodName, method) { - const hasProtocol = hasOwn(protocols2, methodName); - if (!hasProtocol && typeof wx[methodName] !== "function") { - return method; - } - const needWrapper = hasProtocol || isFunction(protocols2.returnValue) || isContextApi(methodName) || isTaskApi(methodName); - const hasMethod = hasProtocol || isFunction(method); - if (!hasProtocol && !method) { - return function() { - console.error(`微信小程序 暂不支持${methodName}`); - }; - } - if (!needWrapper || !hasMethod) { - return method; - } - const protocol = protocols2[methodName]; - return function(arg1, arg2) { - let options = protocol || {}; - if (isFunction(protocol)) { - options = protocol(arg1); - } - arg1 = processArgs(methodName, arg1, options.args, options.returnValue); - const args = [arg1]; - if (typeof arg2 !== "undefined") { - args.push(arg2); - } - const returnValue = wx[options.name || methodName].apply(wx, args); - if (isContextApi(methodName) || isTaskApi(methodName)) { - if (returnValue && !returnValue.__v_skip) { - returnValue.__v_skip = true; - } - } - if (isSyncApi(methodName)) { - return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName)); - } - return returnValue; - }; - }; -} -const getLocale = () => { - const app = isFunction(getApp) && getApp({ allowDefault: true }); - if (app && app.$vm) { - return app.$vm.$locale; - } - return getLocaleLanguage$1(); -}; -const setLocale = (locale) => { - const app = isFunction(getApp) && getApp(); - if (!app) { - return false; - } - const oldLocale = app.$vm.$locale; - if (oldLocale !== locale) { - app.$vm.$locale = locale; - onLocaleChangeCallbacks.forEach((fn) => fn({ locale })); - return true; - } - return false; -}; -const onLocaleChangeCallbacks = []; -const onLocaleChange = (fn) => { - if (onLocaleChangeCallbacks.indexOf(fn) === -1) { - onLocaleChangeCallbacks.push(fn); - } -}; -if (typeof global !== "undefined") { - global.getLocale = getLocale; -} -const UUID_KEY = "__DC_STAT_UUID"; -let deviceId; -function useDeviceId(global2 = wx) { - return function addDeviceId(_, toRes) { - deviceId = deviceId || global2.getStorageSync(UUID_KEY); - if (!deviceId) { - deviceId = Date.now() + "" + Math.floor(Math.random() * 1e7); - wx.setStorage({ - key: UUID_KEY, - data: deviceId - }); - } - toRes.deviceId = deviceId; - }; -} -function addSafeAreaInsets(fromRes, toRes) { - if (fromRes.safeArea) { - const safeArea = fromRes.safeArea; - toRes.safeAreaInsets = { - top: safeArea.top, - left: safeArea.left, - right: fromRes.windowWidth - safeArea.right, - bottom: fromRes.screenHeight - safeArea.bottom - }; - } -} -function getOSInfo(system, platform) { - let osName = ""; - let osVersion = ""; - if (platform && false) { - osName = platform; - osVersion = system; - } else { - osName = system.split(" ")[0] || ""; - osVersion = system.split(" ")[1] || ""; - } - return { - osName: osName.toLocaleLowerCase(), - osVersion - }; -} -function populateParameters(fromRes, toRes) { - const { brand = "", model = "", system = "", language = "", theme, version: version2, platform, fontSizeSetting, SDKVersion, pixelRatio, deviceOrientation } = fromRes; - const { osName, osVersion } = getOSInfo(system, platform); - let hostVersion = version2; - let deviceType = getGetDeviceType(fromRes, model); - let deviceBrand = getDeviceBrand(brand); - let _hostName = getHostName(fromRes); - let _deviceOrientation = deviceOrientation; - let _devicePixelRatio = pixelRatio; - let _SDKVersion = SDKVersion; - const hostLanguage = (language || "").replace(/_/g, "-"); - const parameters = { - appId: "__UNI__EBE2302", - appName: "canvas", - appVersion: "1.0.0", - appVersionCode: "100", - appLanguage: getAppLanguage(hostLanguage), - uniCompileVersion: "4.57", - uniCompilerVersion: "4.57", - uniRuntimeVersion: "4.57", - uniPlatform: "mp-weixin", - deviceBrand, - deviceModel: model, - deviceType, - devicePixelRatio: _devicePixelRatio, - deviceOrientation: _deviceOrientation, - osName, - osVersion, - hostTheme: theme, - hostVersion, - hostLanguage, - hostName: _hostName, - hostSDKVersion: _SDKVersion, - hostFontSizeSetting: fontSizeSetting, - windowTop: 0, - windowBottom: 0, - // TODO - osLanguage: void 0, - osTheme: void 0, - ua: void 0, - hostPackageName: void 0, - browserName: void 0, - browserVersion: void 0, - isUniAppX: false - }; - extend(toRes, parameters); -} -function getGetDeviceType(fromRes, model) { - let deviceType = fromRes.deviceType || "phone"; - { - const deviceTypeMaps = { - ipad: "pad", - windows: "pc", - mac: "pc" - }; - const deviceTypeMapsKeys = Object.keys(deviceTypeMaps); - const _model = model.toLocaleLowerCase(); - for (let index2 = 0; index2 < deviceTypeMapsKeys.length; index2++) { - const _m = deviceTypeMapsKeys[index2]; - if (_model.indexOf(_m) !== -1) { - deviceType = deviceTypeMaps[_m]; - break; - } - } - } - return deviceType; -} -function getDeviceBrand(brand) { - let deviceBrand = brand; - if (deviceBrand) { - deviceBrand = deviceBrand.toLocaleLowerCase(); - } - return deviceBrand; -} -function getAppLanguage(defaultLanguage) { - return getLocale ? getLocale() : defaultLanguage; -} -function getHostName(fromRes) { - const _platform = "WeChat"; - let _hostName = fromRes.hostName || _platform; - { - if (fromRes.environment) { - _hostName = fromRes.environment; - } else if (fromRes.host && fromRes.host.env) { - _hostName = fromRes.host.env; - } - } - return _hostName; -} -const getSystemInfo = { - returnValue: (fromRes, toRes) => { - addSafeAreaInsets(fromRes, toRes); - useDeviceId()(fromRes, toRes); - populateParameters(fromRes, toRes); - } -}; -const getSystemInfoSync = getSystemInfo; -const redirectTo = {}; -const previewImage = { - args(fromArgs, toArgs) { - let currentIndex = parseInt(fromArgs.current); - if (isNaN(currentIndex)) { - return; - } - const urls = fromArgs.urls; - if (!isArray(urls)) { - return; - } - const len = urls.length; - if (!len) { - return; - } - if (currentIndex < 0) { - currentIndex = 0; - } else if (currentIndex >= len) { - currentIndex = len - 1; - } - if (currentIndex > 0) { - toArgs.current = urls[currentIndex]; - toArgs.urls = urls.filter((item, index2) => index2 < currentIndex ? item !== urls[currentIndex] : true); - } else { - toArgs.current = urls[0]; - } - return { - indicator: false, - loop: false - }; - } -}; -const showActionSheet = { - args(fromArgs, toArgs) { - toArgs.alertText = fromArgs.title; - } -}; -const getDeviceInfo = { - returnValue: (fromRes, toRes) => { - const { brand, model, system = "", platform = "" } = fromRes; - let deviceType = getGetDeviceType(fromRes, model); - let deviceBrand = getDeviceBrand(brand); - useDeviceId()(fromRes, toRes); - const { osName, osVersion } = getOSInfo(system, platform); - toRes = sortObject(extend(toRes, { - deviceType, - deviceBrand, - deviceModel: model, - osName, - osVersion - })); - } -}; -const getAppBaseInfo = { - returnValue: (fromRes, toRes) => { - const { version: version2, language, SDKVersion, theme } = fromRes; - let _hostName = getHostName(fromRes); - let hostLanguage = (language || "").replace(/_/g, "-"); - const parameters = { - hostVersion: version2, - hostLanguage, - hostName: _hostName, - hostSDKVersion: SDKVersion, - hostTheme: theme, - appId: "__UNI__EBE2302", - appName: "canvas", - appVersion: "1.0.0", - appVersionCode: "100", - appLanguage: getAppLanguage(hostLanguage), - isUniAppX: false, - uniPlatform: "mp-weixin", - uniCompileVersion: "4.57", - uniCompilerVersion: "4.57", - uniRuntimeVersion: "4.57" - }; - extend(toRes, parameters); - } -}; -const getWindowInfo = { - returnValue: (fromRes, toRes) => { - addSafeAreaInsets(fromRes, toRes); - toRes = sortObject(extend(toRes, { - windowTop: 0, - windowBottom: 0 - })); - } -}; -const getAppAuthorizeSetting = { - returnValue: function(fromRes, toRes) { - const { locationReducedAccuracy } = fromRes; - toRes.locationAccuracy = "unsupported"; - if (locationReducedAccuracy === true) { - toRes.locationAccuracy = "reduced"; - } else if (locationReducedAccuracy === false) { - toRes.locationAccuracy = "full"; - } - } -}; -const onError = { - args(fromArgs) { - const app = getApp({ allowDefault: true }) || {}; - if (!app.$vm) { - if (!wx.$onErrorHandlers) { - wx.$onErrorHandlers = []; - } - wx.$onErrorHandlers.push(fromArgs); - } else { - injectHook(ON_ERROR, fromArgs, app.$vm.$); - } - } -}; -const offError = { - args(fromArgs) { - const app = getApp({ allowDefault: true }) || {}; - if (!app.$vm) { - if (!wx.$onErrorHandlers) { - return; - } - const index2 = wx.$onErrorHandlers.findIndex((fn) => fn === fromArgs); - if (index2 !== -1) { - wx.$onErrorHandlers.splice(index2, 1); - } - } else if (fromArgs.__weh) { - const onErrors = app.$vm.$[ON_ERROR]; - if (onErrors) { - const index2 = onErrors.indexOf(fromArgs.__weh); - if (index2 > -1) { - onErrors.splice(index2, 1); - } - } - } - } -}; -const onSocketOpen = { - args() { - if (wx.__uni_console__) { - if (wx.__uni_console_warned__) { - return; - } - wx.__uni_console_warned__ = true; - console.warn(`开发模式下小程序日志回显会使用 socket 连接,为了避免冲突,建议使用 SocketTask 的方式去管理 WebSocket 或手动关闭日志回显功能。[详情](https://uniapp.dcloud.net.cn/tutorial/run/mp-log.html)`); - } - } -}; -const onSocketMessage = onSocketOpen; -const baseApis = { - $on, - $off, - $once, - $emit, - upx2px, - rpx2px: upx2px, - interceptors, - addInterceptor, - removeInterceptor, - onCreateVueApp, - invokeCreateVueAppHook, - getLocale, - setLocale, - onLocaleChange, - getPushClientId, - onPushMessage, - offPushMessage, - invokePushCallback, - __f__ -}; -function initUni(api, protocols2, platform = wx) { - const wrapper = initWrapper(protocols2); - const UniProxyHandlers = { - get(target, key) { - if (hasOwn(target, key)) { - return target[key]; - } - if (hasOwn(api, key)) { - return promisify(key, api[key]); - } - if (hasOwn(baseApis, key)) { - return promisify(key, baseApis[key]); - } - return promisify(key, wrapper(key, platform[key])); - } - }; - return new Proxy({}, UniProxyHandlers); -} -function initGetProvider(providers) { - return function getProvider2({ service, success, fail, complete }) { - let res; - if (providers[service]) { - res = { - errMsg: "getProvider:ok", - service, - provider: providers[service] - }; - isFunction(success) && success(res); - } else { - res = { - errMsg: "getProvider:fail:服务[" + service + "]不存在" - }; - isFunction(fail) && fail(res); - } - isFunction(complete) && complete(res); - }; -} -const objectKeys = [ - "qy", - "env", - "error", - "version", - "lanDebug", - "cloud", - "serviceMarket", - "router", - "worklet", - "__webpack_require_UNI_MP_PLUGIN__" -]; -const singlePageDisableKey = ["lanDebug", "router", "worklet"]; -const launchOption = wx.getLaunchOptionsSync ? wx.getLaunchOptionsSync() : null; -function isWxKey(key) { - if (launchOption && launchOption.scene === 1154 && singlePageDisableKey.includes(key)) { - return false; - } - return objectKeys.indexOf(key) > -1 || typeof wx[key] === "function"; -} -function initWx() { - const newWx = {}; - for (const key in wx) { - if (isWxKey(key)) { - newWx[key] = wx[key]; - } - } - if (typeof globalThis !== "undefined" && typeof requireMiniProgram === "undefined") { - globalThis.wx = newWx; - } - return newWx; -} -const mocks$1 = ["__route__", "__wxExparserNodeId__", "__wxWebviewId__"]; -const getProvider = initGetProvider({ - oauth: ["weixin"], - share: ["weixin"], - payment: ["wxpay"], - push: ["weixin"] -}); -function initComponentMocks(component) { - const res = /* @__PURE__ */ Object.create(null); - mocks$1.forEach((name) => { - res[name] = component[name]; - }); - return res; -} -function createSelectorQuery() { - const query = wx$2.createSelectorQuery(); - const oldIn = query.in; - query.in = function newIn(component) { - if (component.$scope) { - return oldIn.call(this, component.$scope); - } - return oldIn.call(this, initComponentMocks(component)); - }; - return query; -} -const wx$2 = initWx(); -if (!wx$2.canIUse("getAppBaseInfo")) { - wx$2.getAppBaseInfo = wx$2.getSystemInfoSync; -} -if (!wx$2.canIUse("getWindowInfo")) { - wx$2.getWindowInfo = wx$2.getSystemInfoSync; -} -if (!wx$2.canIUse("getDeviceInfo")) { - wx$2.getDeviceInfo = wx$2.getSystemInfoSync; -} -let baseInfo = wx$2.getAppBaseInfo && wx$2.getAppBaseInfo(); -if (!baseInfo) { - baseInfo = wx$2.getSystemInfoSync(); -} -const host = baseInfo ? baseInfo.host : null; -const shareVideoMessage = host && host.env === "SAAASDK" ? wx$2.miniapp.shareVideoMessage : wx$2.shareVideoMessage; -var shims = /* @__PURE__ */ Object.freeze({ - __proto__: null, - createSelectorQuery, - getProvider, - shareVideoMessage -}); -const compressImage = { - args(fromArgs, toArgs) { - if (fromArgs.compressedHeight && !toArgs.compressHeight) { - toArgs.compressHeight = fromArgs.compressedHeight; - } - if (fromArgs.compressedWidth && !toArgs.compressWidth) { - toArgs.compressWidth = fromArgs.compressedWidth; - } - } -}; -var protocols = /* @__PURE__ */ Object.freeze({ - __proto__: null, - compressImage, - getAppAuthorizeSetting, - getAppBaseInfo, - getDeviceInfo, - getSystemInfo, - getSystemInfoSync, - getWindowInfo, - offError, - onError, - onSocketMessage, - onSocketOpen, - previewImage, - redirectTo, - showActionSheet -}); -const wx$1 = initWx(); -var index = initUni(shims, protocols, wx$1); -function initRuntimeSocket(hosts, port, id) { - if (hosts == "" || port == "" || id == "") - return Promise.resolve(null); - return hosts.split(",").reduce((promise, host2) => { - return promise.then((socket) => { - if (socket != null) - return Promise.resolve(socket); - return tryConnectSocket(host2, port, id); - }); - }, Promise.resolve(null)); -} -const SOCKET_TIMEOUT = 500; -function tryConnectSocket(host2, port, id) { - return new Promise((resolve, reject) => { - const socket = index.connectSocket({ - url: `ws://${host2}:${port}/${id}`, - multiple: true, - // 支付宝小程序 是否开启多实例 - fail() { - resolve(null); - } - }); - const timer = setTimeout(() => { - socket.close({ - code: 1006, - reason: "connect timeout" - }); - resolve(null); - }, SOCKET_TIMEOUT); - socket.onOpen((e) => { - clearTimeout(timer); - resolve(socket); - }); - socket.onClose((e) => { - clearTimeout(timer); - resolve(null); - }); - socket.onError((e) => { - clearTimeout(timer); - resolve(null); - }); - }); -} -function formatMessage(type, args) { - try { - return { - type, - args: formatArgs(args) - }; - } catch (e) { - } - return { - type, - args: [] - }; -} -function formatArgs(args) { - return args.map((arg) => formatArg(arg)); -} -function formatArg(arg, depth = 0) { - if (depth >= 7) { - return { - type: "object", - value: "[Maximum depth reached]" - }; - } - const type = typeof arg; - switch (type) { - case "string": - return formatString(arg); - case "number": - return formatNumber(arg); - case "boolean": - return formatBoolean(arg); - case "object": - return formatObject(arg, depth); - case "undefined": - return formatUndefined(); - case "function": - return formatFunction(arg); - case "symbol": { - return formatSymbol(arg); - } - case "bigint": - return formatBigInt(arg); - } -} -function formatFunction(value) { - return { - type: "function", - value: `function ${value.name}() {}` - }; -} -function formatUndefined() { - return { - type: "undefined" - }; -} -function formatBoolean(value) { - return { - type: "boolean", - value: String(value) - }; -} -function formatNumber(value) { - return { - type: "number", - value: String(value) - }; -} -function formatBigInt(value) { - return { - type: "bigint", - value: String(value) - }; -} -function formatString(value) { - return { - type: "string", - value - }; -} -function formatSymbol(value) { - return { - type: "symbol", - value: value.description - }; -} -function formatObject(value, depth) { - if (value === null) { - return { - type: "null" - }; - } - { - if (isComponentPublicInstance(value)) { - return formatComponentPublicInstance(value, depth); - } - if (isComponentInternalInstance(value)) { - return formatComponentInternalInstance(value, depth); - } - if (isUniElement(value)) { - return formatUniElement(value, depth); - } - if (isCSSStyleDeclaration(value)) { - return formatCSSStyleDeclaration(value, depth); - } - } - if (Array.isArray(value)) { - return { - type: "object", - subType: "array", - value: { - properties: value.map((v, i) => formatArrayElement(v, i, depth + 1)) - } - }; - } - if (value instanceof Set) { - return { - type: "object", - subType: "set", - className: "Set", - description: `Set(${value.size})`, - value: { - entries: Array.from(value).map((v) => formatSetEntry(v, depth + 1)) - } - }; - } - if (value instanceof Map) { - return { - type: "object", - subType: "map", - className: "Map", - description: `Map(${value.size})`, - value: { - entries: Array.from(value.entries()).map((v) => formatMapEntry(v, depth + 1)) - } - }; - } - if (value instanceof Promise) { - return { - type: "object", - subType: "promise", - value: { - properties: [] - } - }; - } - if (value instanceof RegExp) { - return { - type: "object", - subType: "regexp", - value: String(value), - className: "Regexp" - }; - } - if (value instanceof Date) { - return { - type: "object", - subType: "date", - value: String(value), - className: "Date" - }; - } - if (value instanceof Error) { - return { - type: "object", - subType: "error", - value: value.message || String(value), - className: value.name || "Error" - }; - } - let className = void 0; - { - const constructor = value.constructor; - if (constructor) { - if (constructor.get$UTSMetadata$) { - className = constructor.get$UTSMetadata$().name; - } - } - } - return { - type: "object", - className, - value: { - properties: Object.entries(value).map((entry) => formatObjectProperty(entry[0], entry[1], depth + 1)) - } - }; -} -function isComponentPublicInstance(value) { - return value.$ && isComponentInternalInstance(value.$); -} -function isComponentInternalInstance(value) { - return value.type && value.uid != null && value.appContext; -} -function formatComponentPublicInstance(value, depth) { - return { - type: "object", - className: "ComponentPublicInstance", - value: { - properties: Object.entries(value.$.type).map(([name, value2]) => formatObjectProperty(name, value2, depth + 1)) - } - }; -} -function formatComponentInternalInstance(value, depth) { - return { - type: "object", - className: "ComponentInternalInstance", - value: { - properties: Object.entries(value.type).map(([name, value2]) => formatObjectProperty(name, value2, depth + 1)) - } - }; -} -function isUniElement(value) { - return value.style && value.tagName != null && value.nodeName != null; -} -function formatUniElement(value, depth) { - return { - type: "object", - // 非 x 没有 UniElement 的概念 - // className: 'UniElement', - value: { - properties: Object.entries(value).filter(([name]) => [ - "id", - "tagName", - "nodeName", - "dataset", - "offsetTop", - "offsetLeft", - "style" - ].includes(name)).map(([name, value2]) => formatObjectProperty(name, value2, depth + 1)) - } - }; -} -function isCSSStyleDeclaration(value) { - return typeof value.getPropertyValue === "function" && typeof value.setProperty === "function" && value.$styles; -} -function formatCSSStyleDeclaration(style, depth) { - return { - type: "object", - value: { - properties: Object.entries(style.$styles).map(([name, value]) => formatObjectProperty(name, value, depth + 1)) - } - }; -} -function formatObjectProperty(name, value, depth) { - const result = formatArg(value, depth); - result.name = name; - return result; -} -function formatArrayElement(value, index2, depth) { - const result = formatArg(value, depth); - result.name = `${index2}`; - return result; -} -function formatSetEntry(value, depth) { - return { - value: formatArg(value, depth) - }; -} -function formatMapEntry(value, depth) { - return { - key: formatArg(value[0], depth), - value: formatArg(value[1], depth) - }; -} -const CONSOLE_TYPES = ["log", "warn", "error", "info", "debug"]; -let sendConsole = null; -const messageQueue = []; -const messageExtra = {}; -function sendConsoleMessages(messages) { - if (sendConsole == null) { - messageQueue.push(...messages); - return; - } - sendConsole(JSON.stringify(Object.assign({ - type: "console", - data: messages - }, messageExtra))); -} -function setSendConsole(value, extra = {}) { - sendConsole = value; - Object.assign(messageExtra, extra); - if (value != null && messageQueue.length > 0) { - const messages = messageQueue.slice(); - messageQueue.length = 0; - sendConsoleMessages(messages); - } -} -const originalConsole = /* @__PURE__ */ CONSOLE_TYPES.reduce((methods, type) => { - methods[type] = console[type].bind(console); - return methods; -}, {}); -const atFileRegex = /^\s*at\s+[\w/./-]+:\d+$/; -function rewriteConsole() { - function wrapConsole(type) { - return function(...args) { - const originalArgs = [...args]; - if (originalArgs.length) { - const maybeAtFile = originalArgs[originalArgs.length - 1]; - if (typeof maybeAtFile === "string" && atFileRegex.test(maybeAtFile)) { - originalArgs.pop(); - } - } - { - originalConsole[type](...originalArgs); - } - sendConsoleMessages([formatMessage(type, args)]); - }; - } - if (isConsoleWritable()) { - CONSOLE_TYPES.forEach((type) => { - console[type] = wrapConsole(type); - }); - return function restoreConsole() { - CONSOLE_TYPES.forEach((type) => { - console[type] = originalConsole[type]; - }); - }; - } else { - { - if (typeof index !== "undefined" && index.__f__) { - const oldLog = index.__f__; - if (oldLog) { - index.__f__ = function(...args) { - const [type, filename, ...rest] = args; - oldLog(type, "", ...rest); - sendConsoleMessages([formatMessage(type, [...rest, filename])]); - }; - return function restoreConsole() { - index.__f__ = oldLog; - }; - } - } - } - } - return function restoreConsole() { - }; -} -function isConsoleWritable() { - const value = console.log; - const sym = Symbol(); - try { - console.log = sym; - } catch (ex) { - return false; - } - const isWritable = console.log === sym; - console.log = value; - return isWritable; -} -let sendError = null; -const errorQueue = /* @__PURE__ */ new Set(); -const errorExtra = {}; -function sendErrorMessages(errors) { - if (sendError == null) { - errors.forEach((error) => { - errorQueue.add(error); - }); - return; - } - const data = errors.map((err) => { - const isPromiseRejection = err && "promise" in err && "reason" in err; - const prefix = isPromiseRejection ? "UnhandledPromiseRejection: " : ""; - if (isPromiseRejection) { - err = err.reason; - } - if (err instanceof Error && err.stack) { - if (err.message && !err.stack.includes(err.message)) { - return `${prefix}${err.message} -${err.stack}`; - } - return `${prefix}${err.stack}`; - } - if (typeof err === "object" && err !== null) { - try { - return prefix + JSON.stringify(err); - } catch (err2) { - return prefix + String(err2); - } - } - return prefix + String(err); - }).filter(Boolean); - if (data.length > 0) { - sendError(JSON.stringify(Object.assign({ - type: "error", - data - }, errorExtra))); - } -} -function setSendError(value, extra = {}) { - sendError = value; - Object.assign(errorExtra, extra); - if (value != null && errorQueue.size > 0) { - const errors = Array.from(errorQueue); - errorQueue.clear(); - sendErrorMessages(errors); - } -} -function initOnError() { - function onError2(error) { - try { - if (typeof PromiseRejectionEvent !== "undefined" && error instanceof PromiseRejectionEvent && error.reason instanceof Error && error.reason.message && error.reason.message.includes(`Cannot create property 'errMsg' on string 'taskId`)) { - return; - } - if (true) { - originalConsole.error(error); - } - sendErrorMessages([error]); - } catch (err) { - originalConsole.error(err); - } - } - if (typeof index.onError === "function") { - index.onError(onError2); - } - if (typeof index.onUnhandledRejection === "function") { - index.onUnhandledRejection(onError2); - } - return function offError2() { - if (typeof index.offError === "function") { - index.offError(onError2); - } - if (typeof index.offUnhandledRejection === "function") { - index.offUnhandledRejection(onError2); - } - }; -} -function initRuntimeSocketService() { - const hosts = "127.0.0.1,172.10.0.117"; - const port = "8090"; - const id = "mp-weixin_c9b8fP"; - const lazy = typeof swan !== "undefined"; - let restoreError = lazy ? () => { - } : initOnError(); - let restoreConsole = lazy ? () => { - } : rewriteConsole(); - return Promise.resolve().then(() => { - if (lazy) { - restoreError = initOnError(); - restoreConsole = rewriteConsole(); - } - return initRuntimeSocket(hosts, port, id).then((socket) => { - if (!socket) { - restoreError(); - restoreConsole(); - originalConsole.error(wrapError("开发模式下日志通道建立 socket 连接失败。")); - originalConsole.error(wrapError("如果是小程序平台,请勾选不校验合法域名配置。")); - originalConsole.error(wrapError("如果是运行到真机,请确认手机与电脑处于同一网络。")); - return false; - } - initMiniProgramGlobalFlag(); - socket.onClose(() => { - originalConsole.error(wrapError("开发模式下日志通道 socket 连接关闭,请在 HBuilderX 中重新运行。")); - restoreError(); - restoreConsole(); - }); - setSendConsole((data) => { - socket.send({ - data - }); - }); - setSendError((data) => { - socket.send({ - data - }); - }); - return true; - }); - }); -} -const ERROR_CHAR = ""; -function wrapError(error) { - return `${ERROR_CHAR}${error}${ERROR_CHAR}`; -} -function initMiniProgramGlobalFlag() { - if (typeof wx$1 !== "undefined") { - wx$1.__uni_console__ = true; - } else if (typeof my !== "undefined") { - my.__uni_console__ = true; - } else if (typeof tt !== "undefined") { - tt.__uni_console__ = true; - } else if (typeof swan !== "undefined") { - swan.__uni_console__ = true; - } else if (typeof qq !== "undefined") { - qq.__uni_console__ = true; - } else if (typeof ks !== "undefined") { - ks.__uni_console__ = true; - } else if (typeof jd !== "undefined") { - jd.__uni_console__ = true; - } else if (typeof xhs !== "undefined") { - xhs.__uni_console__ = true; - } else if (typeof has !== "undefined") { - has.__uni_console__ = true; - } else if (typeof qa !== "undefined") { - qa.__uni_console__ = true; - } -} -initRuntimeSocketService(); -const _export_sfc = (sfc, props) => { - const target = sfc.__vccOpts || sfc; - for (const [key, val] of props) { - target[key] = val; - } - return target; -}; -function initVueIds(vueIds, mpInstance) { - if (!vueIds) { - return; - } - const ids = vueIds.split(","); - const len = ids.length; - if (len === 1) { - mpInstance._$vueId = ids[0]; - } else if (len === 2) { - mpInstance._$vueId = ids[0]; - mpInstance._$vuePid = ids[1]; - } -} -const EXTRAS = ["externalClasses"]; -function initExtraOptions(miniProgramComponentOptions, vueOptions) { - EXTRAS.forEach((name) => { - if (hasOwn(vueOptions, name)) { - miniProgramComponentOptions[name] = vueOptions[name]; - } - }); -} -const WORKLET_RE = /_(.*)_worklet_factory_/; -function initWorkletMethods(mpMethods, vueMethods) { - if (vueMethods) { - Object.keys(vueMethods).forEach((name) => { - const matches = name.match(WORKLET_RE); - if (matches) { - const workletName = matches[1]; - mpMethods[name] = vueMethods[name]; - mpMethods[workletName] = vueMethods[workletName]; - } - }); - } -} -function initWxsCallMethods(methods, wxsCallMethods) { - if (!isArray(wxsCallMethods)) { - return; - } - wxsCallMethods.forEach((callMethod) => { - methods[callMethod] = function(args) { - return this.$vm[callMethod](args); - }; - }); -} -function selectAllComponents(mpInstance, selector, $refs) { - const components = mpInstance.selectAllComponents(selector); - components.forEach((component) => { - const ref2 = component.properties.uR; - $refs[ref2] = component.$vm || component; - }); -} -function initRefs(instance, mpInstance) { - Object.defineProperty(instance, "refs", { - get() { - const $refs = {}; - selectAllComponents(mpInstance, ".r", $refs); - const forComponents = mpInstance.selectAllComponents(".r-i-f"); - forComponents.forEach((component) => { - const ref2 = component.properties.uR; - if (!ref2) { - return; - } - if (!$refs[ref2]) { - $refs[ref2] = []; - } - $refs[ref2].push(component.$vm || component); - }); - return $refs; - } - }); -} -function findVmByVueId(instance, vuePid) { - const $children = instance.$children; - for (let i = $children.length - 1; i >= 0; i--) { - const childVm = $children[i]; - if (childVm.$scope._$vueId === vuePid) { - return childVm; - } - } - let parentVm; - for (let i = $children.length - 1; i >= 0; i--) { - parentVm = findVmByVueId($children[i], vuePid); - if (parentVm) { - return parentVm; - } - } -} -function getLocaleLanguage() { - let localeLanguage = ""; - { - const appBaseInfo = wx.getAppBaseInfo(); - const language = appBaseInfo && appBaseInfo.language ? appBaseInfo.language : LOCALE_EN; - localeLanguage = normalizeLocale(language) || LOCALE_EN; - } - return localeLanguage; -} -const MP_METHODS = [ - "createSelectorQuery", - "createIntersectionObserver", - "selectAllComponents", - "selectComponent" -]; -function createEmitFn(oldEmit, ctx) { - return function emit2(event, ...args) { - const scope = ctx.$scope; - if (scope && event) { - const detail = { __args__: args }; - { - scope.triggerEvent(event, detail); - } - } - return oldEmit.apply(this, [event, ...args]); - }; -} -function initBaseInstance(instance, options) { - const ctx = instance.ctx; - ctx.mpType = options.mpType; - ctx.$mpType = options.mpType; - ctx.$mpPlatform = "mp-weixin"; - ctx.$scope = options.mpInstance; - { - Object.defineProperties(ctx, { - // only id - [VIRTUAL_HOST_ID]: { - get() { - const id = this.$scope.data[VIRTUAL_HOST_ID]; - return id === void 0 ? "" : id; - } - } - }); - } - ctx.$mp = {}; - { - ctx._self = {}; - } - instance.slots = {}; - if (isArray(options.slots) && options.slots.length) { - options.slots.forEach((name) => { - instance.slots[name] = true; - }); - if (instance.slots[SLOT_DEFAULT_NAME]) { - instance.slots.default = true; - } - } - ctx.getOpenerEventChannel = function() { - { - return options.mpInstance.getOpenerEventChannel(); - } - }; - ctx.$hasHook = hasHook; - ctx.$callHook = callHook; - instance.emit = createEmitFn(instance.emit, ctx); -} -function initComponentInstance(instance, options) { - initBaseInstance(instance, options); - const ctx = instance.ctx; - MP_METHODS.forEach((method) => { - ctx[method] = function(...args) { - const mpInstance = ctx.$scope; - if (mpInstance && mpInstance[method]) { - return mpInstance[method].apply(mpInstance, args); - } - }; - }); -} -function initMocks(instance, mpInstance, mocks2) { - const ctx = instance.ctx; - mocks2.forEach((mock) => { - if (hasOwn(mpInstance, mock)) { - instance[mock] = ctx[mock] = mpInstance[mock]; - } - }); -} -function hasHook(name) { - const hooks = this.$[name]; - if (hooks && hooks.length) { - return true; - } - return false; -} -function callHook(name, args) { - if (name === "mounted") { - callHook.call(this, "bm"); - this.$.isMounted = true; - name = "m"; - } - const hooks = this.$[name]; - return hooks && invokeArrayFns(hooks, args); -} -const PAGE_INIT_HOOKS = [ - ON_LOAD, - ON_SHOW, - ON_HIDE, - ON_UNLOAD, - ON_RESIZE, - ON_TAB_ITEM_TAP, - ON_REACH_BOTTOM, - ON_PULL_DOWN_REFRESH, - ON_ADD_TO_FAVORITES - // 'onReady', // lifetimes.ready - // 'onPageScroll', // 影响性能,开发者手动注册 - // 'onShareTimeline', // 右上角菜单,开发者手动注册 - // 'onShareAppMessage' // 右上角菜单,开发者手动注册 -]; -function findHooks(vueOptions, hooks = /* @__PURE__ */ new Set()) { - if (vueOptions) { - Object.keys(vueOptions).forEach((name) => { - if (isUniLifecycleHook(name, vueOptions[name])) { - hooks.add(name); - } - }); - { - const { extends: extendsOptions, mixins } = vueOptions; - if (mixins) { - mixins.forEach((mixin) => findHooks(mixin, hooks)); - } - if (extendsOptions) { - findHooks(extendsOptions, hooks); - } - } - } - return hooks; -} -function initHook(mpOptions, hook, excludes) { - if (excludes.indexOf(hook) === -1 && !hasOwn(mpOptions, hook)) { - mpOptions[hook] = function(args) { - return this.$vm && this.$vm.$callHook(hook, args); - }; - } -} -const EXCLUDE_HOOKS = [ON_READY]; -function initHooks(mpOptions, hooks, excludes = EXCLUDE_HOOKS) { - hooks.forEach((hook) => initHook(mpOptions, hook, excludes)); -} -function initUnknownHooks(mpOptions, vueOptions, excludes = EXCLUDE_HOOKS) { - findHooks(vueOptions).forEach((hook) => initHook(mpOptions, hook, excludes)); -} -function initRuntimeHooks(mpOptions, runtimeHooks) { - if (!runtimeHooks) { - return; - } - const hooks = Object.keys(MINI_PROGRAM_PAGE_RUNTIME_HOOKS); - hooks.forEach((hook) => { - if (runtimeHooks & MINI_PROGRAM_PAGE_RUNTIME_HOOKS[hook]) { - initHook(mpOptions, hook, []); - } - }); -} -const findMixinRuntimeHooks = /* @__PURE__ */ once(() => { - const runtimeHooks = []; - const app = isFunction(getApp) && getApp({ allowDefault: true }); - if (app && app.$vm && app.$vm.$) { - const mixins = app.$vm.$.appContext.mixins; - if (isArray(mixins)) { - const hooks = Object.keys(MINI_PROGRAM_PAGE_RUNTIME_HOOKS); - mixins.forEach((mixin) => { - hooks.forEach((hook) => { - if (hasOwn(mixin, hook) && !runtimeHooks.includes(hook)) { - runtimeHooks.push(hook); - } - }); - }); - } - } - return runtimeHooks; -}); -function initMixinRuntimeHooks(mpOptions) { - initHooks(mpOptions, findMixinRuntimeHooks()); -} -const HOOKS = [ - ON_SHOW, - ON_HIDE, - ON_ERROR, - ON_THEME_CHANGE, - ON_PAGE_NOT_FOUND, - ON_UNHANDLE_REJECTION -]; -function parseApp(instance, parseAppOptions) { - const internalInstance = instance.$; - const appOptions = { - globalData: instance.$options && instance.$options.globalData || {}, - $vm: instance, - // mp-alipay 组件 data 初始化比 onLaunch 早,提前挂载 - onLaunch(options) { - this.$vm = instance; - const ctx = internalInstance.ctx; - if (this.$vm && ctx.$scope && ctx.$callHook) { - return; - } - initBaseInstance(internalInstance, { - mpType: "app", - mpInstance: this, - slots: [] - }); - ctx.globalData = this.globalData; - instance.$callHook(ON_LAUNCH, options); - } - }; - const onErrorHandlers = wx.$onErrorHandlers; - if (onErrorHandlers) { - onErrorHandlers.forEach((fn) => { - injectHook(ON_ERROR, fn, internalInstance); - }); - onErrorHandlers.length = 0; - } - initLocale(instance); - const vueOptions = instance.$.type; - initHooks(appOptions, HOOKS); - initUnknownHooks(appOptions, vueOptions); - { - const methods = vueOptions.methods; - methods && extend(appOptions, methods); - } - return appOptions; -} -function initCreateApp(parseAppOptions) { - return function createApp2(vm) { - return App(parseApp(vm)); - }; -} -function initCreateSubpackageApp(parseAppOptions) { - return function createApp2(vm) { - const appOptions = parseApp(vm); - const app = isFunction(getApp) && getApp({ - allowDefault: true - }); - if (!app) - return; - vm.$.ctx.$scope = app; - const globalData = app.globalData; - if (globalData) { - Object.keys(appOptions.globalData).forEach((name) => { - if (!hasOwn(globalData, name)) { - globalData[name] = appOptions.globalData[name]; - } - }); - } - Object.keys(appOptions).forEach((name) => { - if (!hasOwn(app, name)) { - app[name] = appOptions[name]; - } - }); - initAppLifecycle(appOptions, vm); - }; -} -function initAppLifecycle(appOptions, vm) { - if (isFunction(appOptions.onLaunch)) { - const args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync(); - appOptions.onLaunch(args); - } - if (isFunction(appOptions.onShow) && wx.onAppShow) { - wx.onAppShow((args) => { - vm.$callHook("onShow", args); - }); - } - if (isFunction(appOptions.onHide) && wx.onAppHide) { - wx.onAppHide((args) => { - vm.$callHook("onHide", args); - }); - } -} -function initLocale(appVm) { - const locale = ref(getLocaleLanguage()); - Object.defineProperty(appVm, "$locale", { - get() { - return locale.value; - }, - set(v) { - locale.value = v; - } - }); -} -const builtInProps = [ - // 百度小程序,快手小程序自定义组件不支持绑定动态事件,动态dataset,故通过props传递事件信息 - // event-opts - "eO", - // 组件 ref - "uR", - // 组件 ref-in-for - "uRIF", - // 组件 id - "uI", - // 组件类型 m: 小程序组件 - "uT", - // 组件 props - "uP", - // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots - "uS" -]; -function initDefaultProps(options, isBehavior = false) { - const properties = {}; - if (!isBehavior) { - let observerSlots = function(newVal) { - const $slots = /* @__PURE__ */ Object.create(null); - newVal && newVal.forEach((slotName) => { - $slots[slotName] = true; - }); - this.setData({ - $slots - }); - }; - builtInProps.forEach((name) => { - properties[name] = { - type: null, - value: "" - }; - }); - properties.uS = { - type: null, - value: [] - }; - { - properties.uS.observer = observerSlots; - } - } - if (options.behaviors) { - if (options.behaviors.includes("wx://form-field")) { - if (!options.properties || !options.properties.name) { - properties.name = { - type: null, - value: "" - }; - } - if (!options.properties || !options.properties.value) { - properties.value = { - type: null, - value: "" - }; - } - } - } - return properties; -} -function initVirtualHostProps(options) { - const properties = {}; - { - if (options && options.virtualHost) { - properties[VIRTUAL_HOST_STYLE] = { - type: null, - value: "" - }; - properties[VIRTUAL_HOST_CLASS] = { - type: null, - value: "" - }; - properties[VIRTUAL_HOST_HIDDEN] = { - type: null, - value: "" - }; - properties[VIRTUAL_HOST_ID] = { - type: null, - value: "" - }; - } - } - return properties; -} -function initProps(mpComponentOptions) { - if (!mpComponentOptions.properties) { - mpComponentOptions.properties = {}; - } - extend(mpComponentOptions.properties, initDefaultProps(mpComponentOptions), initVirtualHostProps(mpComponentOptions.options)); -} -const PROP_TYPES = [String, Number, Boolean, Object, Array, null]; -function parsePropType(type, defaultValue) { - if (isArray(type) && type.length === 1) { - return type[0]; - } - return type; -} -function normalizePropType(type, defaultValue) { - const res = parsePropType(type); - return PROP_TYPES.indexOf(res) !== -1 ? res : null; -} -function initPageProps({ properties }, rawProps) { - if (isArray(rawProps)) { - rawProps.forEach((key) => { - properties[key] = { - type: String, - value: "" - }; - }); - } else if (isPlainObject(rawProps)) { - Object.keys(rawProps).forEach((key) => { - const opts = rawProps[key]; - if (isPlainObject(opts)) { - let value = opts.default; - if (isFunction(value)) { - value = value(); - } - const type = opts.type; - opts.type = normalizePropType(type); - properties[key] = { - type: opts.type, - value - }; - } else { - properties[key] = { - type: normalizePropType(opts) - }; - } - }); - } -} -function findPropsData(properties, isPage2) { - return (isPage2 ? findPagePropsData(properties) : findComponentPropsData(resolvePropValue(properties.uP))) || {}; -} -function findPagePropsData(properties) { - const propsData = {}; - if (isPlainObject(properties)) { - Object.keys(properties).forEach((name) => { - if (builtInProps.indexOf(name) === -1) { - propsData[name] = resolvePropValue(properties[name]); - } - }); - } - return propsData; -} -function initFormField(vm) { - const vueOptions = vm.$options; - if (isArray(vueOptions.behaviors) && vueOptions.behaviors.includes("uni://form-field")) { - vm.$watch("modelValue", () => { - vm.$scope && vm.$scope.setData({ - name: vm.name, - value: vm.modelValue - }); - }, { - immediate: true - }); - } -} -function resolvePropValue(prop) { - return prop; -} -function initData(_) { - return {}; -} -function initPropsObserver(componentOptions) { - const observe = function observe2() { - const up = this.properties.uP; - if (!up) { - return; - } - if (this.$vm) { - updateComponentProps(resolvePropValue(up), this.$vm.$); - } else if (resolvePropValue(this.properties.uT) === "m") { - updateMiniProgramComponentProperties(resolvePropValue(up), this); - } - }; - { - if (!componentOptions.observers) { - componentOptions.observers = {}; - } - componentOptions.observers.uP = observe; - } -} -function updateMiniProgramComponentProperties(up, mpInstance) { - const prevProps = mpInstance.properties; - const nextProps = findComponentPropsData(up) || {}; - if (hasPropsChanged(prevProps, nextProps, false)) { - mpInstance.setData(nextProps); - } -} -function updateComponentProps(up, instance) { - const prevProps = toRaw(instance.props); - const nextProps = findComponentPropsData(up) || {}; - if (hasPropsChanged(prevProps, nextProps)) { - updateProps(instance, nextProps, prevProps, false); - if (hasQueueJob(instance.update)) { - invalidateJob(instance.update); - } - { - instance.update(); - } - } -} -function hasPropsChanged(prevProps, nextProps, checkLen = true) { - const nextKeys = Object.keys(nextProps); - if (checkLen && nextKeys.length !== Object.keys(prevProps).length) { - return true; - } - for (let i = 0; i < nextKeys.length; i++) { - const key = nextKeys[i]; - if (nextProps[key] !== prevProps[key]) { - return true; - } - } - return false; -} -function initBehaviors(vueOptions) { - const vueBehaviors = vueOptions.behaviors; - let vueProps = vueOptions.props; - if (!vueProps) { - vueOptions.props = vueProps = []; - } - const behaviors = []; - if (isArray(vueBehaviors)) { - vueBehaviors.forEach((behavior) => { - behaviors.push(behavior.replace("uni://", "wx://")); - if (behavior === "uni://form-field") { - if (isArray(vueProps)) { - vueProps.push("name"); - vueProps.push("modelValue"); - } else { - vueProps.name = { - type: String, - default: "" - }; - vueProps.modelValue = { - type: [String, Number, Boolean, Array, Object, Date], - default: "" - }; - } - } - }); - } - return behaviors; -} -function applyOptions(componentOptions, vueOptions) { - componentOptions.data = initData(); - componentOptions.behaviors = initBehaviors(vueOptions); -} -function parseComponent(vueOptions, { parse, mocks: mocks2, isPage: isPage2, isPageInProject, initRelation: initRelation2, handleLink: handleLink2, initLifetimes: initLifetimes2 }) { - vueOptions = vueOptions.default || vueOptions; - const options = { - multipleSlots: true, - // styleIsolation: 'apply-shared', - addGlobalClass: true, - pureDataPattern: /^uP$/ - }; - if (isArray(vueOptions.mixins)) { - vueOptions.mixins.forEach((item) => { - if (isObject(item.options)) { - extend(options, item.options); - } - }); - } - if (vueOptions.options) { - extend(options, vueOptions.options); - } - const mpComponentOptions = { - options, - lifetimes: initLifetimes2({ mocks: mocks2, isPage: isPage2, initRelation: initRelation2, vueOptions }), - pageLifetimes: { - show() { - this.$vm && this.$vm.$callHook("onPageShow"); - }, - hide() { - this.$vm && this.$vm.$callHook("onPageHide"); - }, - resize(size2) { - this.$vm && this.$vm.$callHook("onPageResize", size2); - } - }, - methods: { - __l: handleLink2 - } - }; - { - applyOptions(mpComponentOptions, vueOptions); - } - initProps(mpComponentOptions); - initPropsObserver(mpComponentOptions); - initExtraOptions(mpComponentOptions, vueOptions); - initWxsCallMethods(mpComponentOptions.methods, vueOptions.wxsCallMethods); - { - initWorkletMethods(mpComponentOptions.methods, vueOptions.methods); - } - if (parse) { - parse(mpComponentOptions, { handleLink: handleLink2 }); - } - return mpComponentOptions; -} -function initCreateComponent(parseOptions2) { - return function createComponent2(vueComponentOptions) { - return Component(parseComponent(vueComponentOptions, parseOptions2)); - }; -} -let $createComponentFn; -let $destroyComponentFn; -function getAppVm() { - return getApp().$vm; -} -function $createComponent(initialVNode, options) { - if (!$createComponentFn) { - $createComponentFn = getAppVm().$createComponent; - } - const proxy = $createComponentFn(initialVNode, options); - return getExposeProxy(proxy.$) || proxy; -} -function $destroyComponent(instance) { - if (!$destroyComponentFn) { - $destroyComponentFn = getAppVm().$destroyComponent; - } - return $destroyComponentFn(instance); -} -function parsePage(vueOptions, parseOptions2) { - const { parse, mocks: mocks2, isPage: isPage2, initRelation: initRelation2, handleLink: handleLink2, initLifetimes: initLifetimes2 } = parseOptions2; - const miniProgramPageOptions = parseComponent(vueOptions, { - mocks: mocks2, - isPage: isPage2, - isPageInProject: true, - initRelation: initRelation2, - handleLink: handleLink2, - initLifetimes: initLifetimes2 - }); - initPageProps(miniProgramPageOptions, (vueOptions.default || vueOptions).props); - const methods = miniProgramPageOptions.methods; - methods.onLoad = function(query) { - { - this.options = query; - } - this.$page = { - fullPath: addLeadingSlash(this.route + stringifyQuery(query)) - }; - return this.$vm && this.$vm.$callHook(ON_LOAD, query); - }; - initHooks(methods, PAGE_INIT_HOOKS); - { - initUnknownHooks(methods, vueOptions); - } - initRuntimeHooks(methods, vueOptions.__runtimeHooks); - initMixinRuntimeHooks(methods); - parse && parse(miniProgramPageOptions, { handleLink: handleLink2 }); - return miniProgramPageOptions; -} -function initCreatePage(parseOptions2) { - return function createPage2(vuePageOptions) { - return Component(parsePage(vuePageOptions, parseOptions2)); - }; -} -function initCreatePluginApp(parseAppOptions) { - return function createApp2(vm) { - initAppLifecycle(parseApp(vm), vm); - }; -} -const MPPage = Page; -const MPComponent = Component; -function initTriggerEvent(mpInstance) { - const oldTriggerEvent = mpInstance.triggerEvent; - const newTriggerEvent = function(event, ...args) { - return oldTriggerEvent.apply(mpInstance, [ - customizeEvent(event), - ...args - ]); - }; - try { - mpInstance.triggerEvent = newTriggerEvent; - } catch (error) { - mpInstance._triggerEvent = newTriggerEvent; - } -} -function initMiniProgramHook(name, options, isComponent) { - const oldHook = options[name]; - if (!oldHook) { - options[name] = function() { - initTriggerEvent(this); - }; - } else { - options[name] = function(...args) { - initTriggerEvent(this); - return oldHook.apply(this, args); - }; - } -} -Page = function(options) { - initMiniProgramHook(ON_LOAD, options); - return MPPage(options); -}; -Component = function(options) { - initMiniProgramHook("created", options); - const isVueComponent = options.properties && options.properties.uP; - if (!isVueComponent) { - initProps(options); - initPropsObserver(options); - } - return MPComponent(options); -}; -function initLifetimes({ mocks: mocks2, isPage: isPage2, initRelation: initRelation2, vueOptions }) { - return { - attached() { - let properties = this.properties; - initVueIds(properties.uI, this); - const relationOptions = { - vuePid: this._$vuePid - }; - initRelation2(this, relationOptions); - const mpInstance = this; - const isMiniProgramPage = isPage2(mpInstance); - let propsData = properties; - this.$vm = $createComponent({ - type: vueOptions, - props: findPropsData(propsData, isMiniProgramPage) - }, { - mpType: isMiniProgramPage ? "page" : "component", - mpInstance, - slots: properties.uS || {}, - // vueSlots - parentComponent: relationOptions.parent && relationOptions.parent.$, - onBeforeSetup(instance, options) { - initRefs(instance, mpInstance); - initMocks(instance, mpInstance, mocks2); - initComponentInstance(instance, options); - } - }); - if (!isMiniProgramPage) { - initFormField(this.$vm); - } - }, - ready() { - if (this.$vm) { - { - this.$vm.$callHook("mounted"); - this.$vm.$callHook(ON_READY); - } - } - }, - detached() { - if (this.$vm) { - pruneComponentPropsCache(this.$vm.$.uid); - $destroyComponent(this.$vm); - } - } - }; -} -const mocks = ["__route__", "__wxExparserNodeId__", "__wxWebviewId__"]; -function isPage(mpInstance) { - return !!mpInstance.route; -} -function initRelation(mpInstance, detail) { - mpInstance.triggerEvent("__l", detail); -} -function handleLink(event) { - const detail = event.detail || event.value; - const vuePid = detail.vuePid; - let parentVm; - if (vuePid) { - parentVm = findVmByVueId(this.$vm, vuePid); - } - if (!parentVm) { - parentVm = this.$vm; - } - detail.parent = parentVm; -} -var parseOptions = /* @__PURE__ */ Object.freeze({ - __proto__: null, - handleLink, - initLifetimes, - initRelation, - isPage, - mocks -}); -const createApp = initCreateApp(); -const createPage = initCreatePage(parseOptions); -const createComponent = initCreateComponent(parseOptions); -const createPluginApp = initCreatePluginApp(); -const createSubpackageApp = initCreateSubpackageApp(); -{ - wx.createApp = global.createApp = createApp; - wx.createPage = createPage; - wx.createComponent = createComponent; - wx.createPluginApp = global.createPluginApp = createPluginApp; - wx.createSubpackageApp = global.createSubpackageApp = createSubpackageApp; -} -const createHook = (lifecycle) => (hook, target = getCurrentInstance()) => { - !isInSSRComponentSetup && injectHook(lifecycle, hook, target); -}; -const onReady = /* @__PURE__ */ createHook(ON_READY); -exports._export_sfc = _export_sfc; -exports.createSSRApp = createSSRApp; -exports.getCurrentInstance = getCurrentInstance; -exports.index = index; -exports.o = o; -exports.onMounted = onMounted; -exports.onReady = onReady; -exports.ref = ref; -//# sourceMappingURL=../../.sourcemap/mp-weixin/common/vendor.js.map diff --git a/unpackage/dist/dev/mp-weixin/index.js b/unpackage/dist/dev/mp-weixin/index.js deleted file mode 100644 index 1525d68..0000000 --- a/unpackage/dist/dev/mp-weixin/index.js +++ /dev/null @@ -1,97 +0,0 @@ -"use strict"; -const common_vendor = require("./common/vendor.js"); -const _sfc_main = { - __name: "index", - setup(__props) { - common_vendor.ref(375); - common_vendor.ref(400); - const instance = common_vendor.getCurrentInstance(); - const scale = common_vendor.ref(1); - const offsetX = common_vendor.ref(0); - const offsetY = common_vendor.ref(0); - const lastDistance = common_vendor.ref(-1); - const startX = common_vendor.ref(0); - const startY = common_vendor.ref(0); - const isDragging = common_vendor.ref(false); - const imgUrl = common_vendor.ref("https://assets.sx25.troyrc.com/sx25/images/events/XBDT.jpg"); - async function draw() { - const ctx = common_vendor.index.createCanvasContext("canvas", instance); - ctx.scale(scale.value, scale.value); - const res = await common_vendor.index.getImageInfo({ - src: imgUrl.value - }); - ctx.drawImage(res.path, 0, 0); - ctx.draw(); - } - const handleTouchStart = (e) => { - common_vendor.index.__f__("log", "at pages/index/index.vue:93", "handleTouchStart"); - if (e.touches.length === 1) { - startX.value = e.touches[0].clientX - offsetX.value; - startY.value = e.touches[0].clientY - offsetY.value; - isDragging.value = true; - } else if (e.touches.length === 2) { - const x1 = e.touches[0].clientX; - const y1 = e.touches[0].clientY; - const x2 = e.touches[1].clientX; - const y2 = e.touches[1].clientY; - lastDistance.value = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); - } - }; - const handleTouchMove = (e) => { - common_vendor.index.__f__("log", "at pages/index/index.vue:111", "handleTouchMove"); - if (e.touches.length === 1 && isDragging.value) { - const currentX = e.touches[0].clientX - startX.value; - const currentY = e.touches[0].clientY - startY.value; - offsetX.value = currentX; - offsetY.value = currentY; - } else if (e.touches.length === 2) { - const x1 = e.touches[0].clientX; - const y1 = e.touches[0].clientY; - const x2 = e.touches[1].clientX; - const y2 = e.touches[1].clientY; - const distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); - if (lastDistance.value > 0) { - const newScale = scale.value * (distance / lastDistance.value); - scale.value = Math.min(Math.max(newScale, 0.5), 4); - } - lastDistance.value = distance; - } - }; - const handleTouchEnd = () => { - common_vendor.index.__f__("log", "at pages/index/index.vue:136", "handleTouchEnd"); - lastDistance.value = -1; - isDragging.value = false; - }; - const handleDraw = () => { - draw(); - }; - common_vendor.onReady(() => { - common_vendor.index.__f__("log", "at pages/index/index.vue:153", "onReadyonReady"); - common_vendor.index.downloadFile({ - url: imgUrl.value, - success: function(sres) { - common_vendor.index.__f__("log", "at pages/index/index.vue:157", sres, "sres"); - imgUrl.value = sres.tempFilePath || sres.path; - draw(); - }, - fail: function(fres) { - common_vendor.index.__f__("log", "at pages/index/index.vue:161", "fres", fres); - } - }); - }); - return (_ctx, _cache) => { - return { - a: common_vendor.o(handleTouchStart), - b: common_vendor.o(handleTouchMove), - c: common_vendor.o(handleTouchEnd), - d: "1000px", - e: "800px", - f: `translate(${offsetX.value}px, ${offsetY.value}px) scale(${scale.value})`, - g: common_vendor.o(handleDraw) - }; - }; - } -}; -const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-1cf27b2a"]]); -exports.MiniProgramPage = MiniProgramPage; -//# sourceMappingURL=../.sourcemap/mp-weixin/index.js.map diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.js b/unpackage/dist/dev/mp-weixin/pages/index/index.js deleted file mode 100644 index c5ca0bf..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.js +++ /dev/null @@ -1,4 +0,0 @@ -"use strict"; -const index = require("../../index.js"); -wx.createPage(index.MiniProgramPage); -//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/index/index.js.map diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.json b/unpackage/dist/dev/mp-weixin/pages/index/index.json deleted file mode 100644 index 1ff7531..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "navigationBarTitleText": "uni-app", - "usingComponents": {} -} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.wxml b/unpackage/dist/dev/mp-weixin/pages/index/index.wxml deleted file mode 100644 index 0bd41a7..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.wxml +++ /dev/null @@ -1 +0,0 @@ -<view class="data-v-1cf27b2a"><block wx:if="{{r0}}"><canvas class="data-v-1cf27b2a" bindtouchstart="{{a}}" bindtouchmove="{{b}}" bindtouchend="{{c}}" style="{{'width:' + d + ';' + ('height:' + e) + ';' + ('transform:' + f)}}" canvas-id="canvas" id="canvas"></canvas></block><image class="data-v-1cf27b2a" src="https://assets.sx25.troyrc.com/sx25/images/events/XBDT.jpg"></image><button class="data-v-1cf27b2a" bindtap="{{g}}">点击绘制圆形</button></view> \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.wxss b/unpackage/dist/dev/mp-weixin/pages/index/index.wxss deleted file mode 100644 index 99c7c73..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.wxss +++ /dev/null @@ -1,4 +0,0 @@ - -button.data-v-1cf27b2a { - margin-top: 10px; -} diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index2.js b/unpackage/dist/dev/mp-weixin/pages/index/index2.js deleted file mode 100644 index fbb48ac..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/index2.js +++ /dev/null @@ -1,4 +0,0 @@ -"use strict"; -const index = require("../../index.js"); -wx.createPage(index.MiniProgramPage); -//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/index/index2.js.map diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index_step4.js b/unpackage/dist/dev/mp-weixin/pages/index/index_step4.js deleted file mode 100644 index 200f78c..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/index_step4.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -const common_vendor = require("../../common/vendor.js"); -const _sfc_main = { - __name: "index_step4", - setup(__props) { - const canvasWidth = common_vendor.ref(200); - const canvasHeight = common_vendor.ref(200); - const instance = common_vendor.getCurrentInstance(); - function draw() { - const ctx = common_vendor.index.createCanvasContext("canvas", instance); - common_vendor.index.__f__("log", "at pages/index/index_step4.vue:20", ctx, "12"); - ctx.beginPath(); - ctx.arc(100, 100, 80, 0, Math.PI * 2); - ctx.setFillStyle("rgba(100, 220, 0, 1)"); - ctx.fill(); - ctx.beginPath(); - ctx.arc(100, 100, 75, 0, Math.PI * 2); - ctx.setFillStyle("white"); - ctx.fill(); - ctx.draw(); - } - const handleDraw = () => { - common_vendor.index.navigateTo({ - url: "/pages/index/step2" - }); - draw(); - }; - common_vendor.onMounted(() => { - draw(); - }); - return (_ctx, _cache) => { - return { - a: canvasWidth.value, - b: canvasHeight.value, - c: common_vendor.o(handleDraw) - }; - }; - } -}; -const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-7e4ca425"]]); -wx.createPage(MiniProgramPage); -//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/index/index_step4.js.map diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index_step4.json b/unpackage/dist/dev/mp-weixin/pages/index/index_step4.json deleted file mode 100644 index be3c335..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/index_step4.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "navigationBarTitleText": "step", - "usingComponents": {} -} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index_step4.wxml b/unpackage/dist/dev/mp-weixin/pages/index/index_step4.wxml deleted file mode 100644 index 597add4..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/index_step4.wxml +++ /dev/null @@ -1 +0,0 @@ -<view class="data-v-7e4ca425"><canvas class="data-v-7e4ca425" canvas-id="canvas" id="canvas" style="width:200px;height:200px;border:1px solid red" width="{{a}}" height="{{b}}"></canvas><button class="data-v-7e4ca425" bindtap="{{c}}">跳转step2</button></view> \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index_step4.wxss b/unpackage/dist/dev/mp-weixin/pages/index/index_step4.wxss deleted file mode 100644 index 667b086..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/index_step4.wxss +++ /dev/null @@ -1,4 +0,0 @@ - -button.data-v-7e4ca425 { - margin-top: 10px; -} diff --git a/unpackage/dist/dev/mp-weixin/pages/index/step2.js b/unpackage/dist/dev/mp-weixin/pages/index/step2.js deleted file mode 100644 index 32528f9..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/step2.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; -require("../../common/vendor.js"); -if (!Math) { - indexstep2(); -} -const indexstep2 = () => "./index2.js"; -const _sfc_main = { - __name: "step2", - setup(__props) { - return (_ctx, _cache) => { - return {}; - }; - } -}; -wx.createPage(_sfc_main); -//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/index/step2.js.map diff --git a/unpackage/dist/dev/mp-weixin/pages/index/step2.json b/unpackage/dist/dev/mp-weixin/pages/index/step2.json deleted file mode 100644 index df8d65e..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/step2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "navigationBarTitleText": "fu", - "usingComponents": { - "indexstep2": "./index" - } -} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/step2.wxml b/unpackage/dist/dev/mp-weixin/pages/index/step2.wxml deleted file mode 100644 index f705531..0000000 --- a/unpackage/dist/dev/mp-weixin/pages/index/step2.wxml +++ /dev/null @@ -1 +0,0 @@ -<view><indexstep2 u-i="4f007cb8-0" bind:__l="__l"></indexstep2></view> \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/step2.wxss b/unpackage/dist/dev/mp-weixin/pages/index/step2.wxss deleted file mode 100644 index e69de29..0000000 diff --git a/unpackage/dist/dev/mp-weixin/project.config.json b/unpackage/dist/dev/mp-weixin/project.config.json deleted file mode 100644 index cd73585..0000000 --- a/unpackage/dist/dev/mp-weixin/project.config.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "description": "项目配置文件。", - "packOptions": { - "ignore": [], - "include": [] - }, - "setting": { - "urlCheck": false, - "es6": true, - "postcss": false, - "minified": false, - "newFeature": true, - "bigPackageSizeSupport": true, - "babelSetting": { - "ignore": [], - "disablePlugins": [], - "outputPath": "" - } - }, - "compileType": "miniprogram", - "libVersion": "3.8.3", - "appid": "wx5c9edf82da6032c4", - "projectname": "canvas", - "condition": {}, - "editorSetting": { - "tabIndent": "insertSpaces", - "tabSize": 4 - } -} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/project.private.config.json b/unpackage/dist/dev/mp-weixin/project.private.config.json deleted file mode 100644 index de0e568..0000000 --- a/unpackage/dist/dev/mp-weixin/project.private.config.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", - "projectname": "canvas", - "setting": { - "compileHotReLoad": true, - "urlCheck": false - } -} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/static/canvas.jpg b/unpackage/dist/dev/mp-weixin/static/canvas.jpg deleted file mode 100644 index 204f55d6d8cce7f5fe12d88b59935646d243f653..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195625 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	j)O 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%0A5&H0qutmAwjCYWHI=!8<%;ct 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 H3ZwrYyB3B| diff --git a/unpackage/dist/dev/mp-weixin/static/logo.png b/unpackage/dist/dev/mp-weixin/static/logo.png deleted file mode 100644 index b5771e209bb677e2ebd5ff766ad5ee11790f305a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4023 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�SjDTk8T3ri42iYkQg`=QjjvJ9>!^8wGMR<A37Ip*V;|}H zA-+rT?GM{uwe!HS@HyAE$E<;``C5g`AvqV^S{*ma?o`yiSL*Mr`w(<)Q7}SQO!p%@ zWw!d!kzgmk8q?4vQumke4++v9GF5exVIL~ZgREcVCY-x@ZpX4Id&ZYe_8+`kSNDLA zh|!AMhel8)vY6!lthvmfN0gI?1sjYeo*fvvb^hF#&8Pg1=Y!ANhcYfyEP-awj3eEM zx&W3+Au$h`U&H=%wJ=Baw5)k;#m_J{Yz!CB1W$0v&C5B6Tv#0sPaZ4wEY8h2VSs#_ zG00f4T+i@xvvsTSMs?;INYKAnR-9RBS^PMa;5J`P`370>7*MP@UWP13nuk#~M$mU% z$uszs);TA=a{4!`8Qm`Sn+rdD>w9SLzQ0p-yTPboznqn+ASr#=Td7#J^gVESP9li^ zi{+qONJ8-4_1gZ8&pUnyeZKH;^FF?wIQ-qc-o5j=ix69oFFJQK<>#B|k#6%g^Bx5= zg}8(qIXM{t>6)*e9mylb4~qA6z6x{v$(W(tnHt&{T|3_Cyxupzb2YZJuAEW2NM+wC zy^Cm4Xp*b$U?3N6t(SESgt9ByRYOfRav2BL4L5BTyMExBieFo==ue&BT!*e)T3lo5 zDDLL`TT0PQo#}RDFM1G`iU*85$sTyH1rh6w$KbJ^jI%9xJpkZ2Ot5#RJ6l;IaAcw? zc1uS!m`LHE0YJ|nn1aRm;pt!xyf=Y_gs`91LBIr0B*Y1BrDjDz;e80`5Gvj-<b*vg z#1E(A2{F(I>jfh?28eh%7933UC(#hWNXRd{2+nv*426JysnGq9kiSVeTiJk7WGWsE zSJhI%!8FvtM|D(Ta2<7RO=YmU8cYkSrU`}VsK7K3oKsT`{QH1#yiq;95Ev7)-@Z6A zB*ceKry!uvpr9btAPrSA)tiIW(SfR|L)Fz)I2tN628oUhRw2<8{#Y=<({NM*g-#%o zz*`ov9^?Qz62f8ncL+p^mDN9nNwnXI;-m~3jHN(fs%lUoaVxH0+B7-_|6dyas!g+J zQ1DO;o<<I!;yCs2QuqVr<nDhv+EV1OL70$n0Yp5BZefCia3rdp1W$ySnUSXYQ5gKF z2}%nFGu1XWGtxFeX`33OOf}(ZX0Sh43lfcvCE@UYu!R3&HUB3TfuiEEbTZYRO!og% zJsTe~olNr~Q^1^^3#VFeRXF&d6&6PzZHW(UrT8~vJe3fL_cWuDiQr#3LJ<Cihp~~i znUV2P6o&`=-(&b2>-jJ7|Hhj9zgQ@T40Nl&|EJ)8M4T?#8vfJ1oXI~g0G`C@dMc;A zjqo=rI2*RN7A8ja!Tlbd0QX!*+E1x@K*^ZD{)%J_pe^QRp=+j?jCO1cZ<W;+n{Ip1 za2o_>N?ryPlN&29$7&Ac>xMM*DwQ*NxtIV%NlmI`lJr2JVZ!|SUM)s{m5-r-hrCim zGEunpTX?76P{|0K32-Ym!wnJFjcNAROWZ-AL8+J1F_-(QHNzMCON{8s2|iO0D*vNr zQhflINtwvCi<$Z|n(_I*HbSmD?h6-!bQZ5=hQ8L&m)|I~)%u)gyCW_QRg`w5P~OC1 z%uCbu%`2nB5zR=>{took!+yKEDi`b>pzAf)^KDGtUM8R*t#G@mH2=PKe4(Ipz-y*c zc~Kzl;GA)s+53_RGg-}F1`$4QjX29!BLu$pn{&KmMu86HO}Y2@q{Jb7v=N}{+PQWx zHF2LIb9qiO+DI~r+eb9ubK7oh6KFdUL6e;9wKv_RvXh$HuqHw)inh2kQGM>}%G4V% zmjkEYsw}?{m%gW>#P7wTXwk}cZO--qydYul`!3w~l(JgX@=yG7|6z{6kO^>c^P;zI zAmO}-iEA~6%U7@PbJN4EXW!v;|5owjl2$w4ZZqafWPCshmRxS}7Zwlg(*rDz;hg}s SYs}WS&%*SCNx89m_<sQGK?UOg From a7c06b3a0ea0a8cb956506fd9e85190b59549aa2 Mon Sep 17 00:00:00 2001 From: renyt <renyt@troyrc.com> Date: Fri, 9 May 2025 09:20:07 +0800 Subject: [PATCH 3/4] 1 --- App.vue | 17 +++++++++ index.html | 20 +++++++++++ main.js | 22 ++++++++++++ manifest.json | 72 +++++++++++++++++++++++++++++++++++++ pages.json | 28 +++++++++++++++ pages/.DS_Store | Bin 6148 -> 0 bytes uni.promisify.adaptor.js | 13 +++++++ uni.scss | 76 +++++++++++++++++++++++++++++++++++++++ 8 files changed, 248 insertions(+) create mode 100644 App.vue create mode 100644 index.html create mode 100644 main.js create mode 100644 manifest.json create mode 100644 pages.json delete mode 100644 pages/.DS_Store create mode 100644 uni.promisify.adaptor.js create mode 100644 uni.scss diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..8c2b732 --- /dev/null +++ b/App.vue @@ -0,0 +1,17 @@ +<script> + export default { + onLaunch: function() { + console.log('App Launch') + }, + onShow: function() { + console.log('App Show') + }, + onHide: function() { + console.log('App Hide') + } + } +</script> + +<style> + /*每个页面公共css */ +</style> diff --git a/index.html b/index.html new file mode 100644 index 0000000..c3ff205 --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <script> + var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || + CSS.supports('top: constant(a)')) + document.write( + '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + + (coverSupport ? ', viewport-fit=cover' : '') + '" />') + </script> + <title></title> + <!--preload-links--> + <!--app-context--> + </head> + <body> + <div id="app"><!--app-html--></div> + <script type="module" src="/main.js"></script> + </body> +</html> diff --git a/main.js b/main.js new file mode 100644 index 0000000..c1caf36 --- /dev/null +++ b/main.js @@ -0,0 +1,22 @@ +import App from './App' + +// #ifndef VUE3 +import Vue from 'vue' +import './uni.promisify.adaptor' +Vue.config.productionTip = false +App.mpType = 'app' +const app = new Vue({ + ...App +}) +app.$mount() +// #endif + +// #ifdef VUE3 +import { createSSRApp } from 'vue' +export function createApp() { + const app = createSSRApp(App) + return { + app + } +} +// #endif \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..9c96a3c --- /dev/null +++ b/manifest.json @@ -0,0 +1,72 @@ +{ + "name" : "canvas", + "appid" : "__UNI__EBE2302", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", + "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", + "<uses-permission android:name=\"android.permission.VIBRATE\"/>", + "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", + "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", + "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", + "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", + "<uses-permission android:name=\"android.permission.CAMERA\"/>", + "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", + "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", + "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", + "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", + "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", + "<uses-feature android:name=\"android.hardware.camera\"/>", + "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "wx5c9edf82da6032c4", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "3" +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..aed7ae0 --- /dev/null +++ b/pages.json @@ -0,0 +1,28 @@ +{ + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/index/index_step4", + "style": { + "navigationBarTitleText": "step" + } + },{ + "path": "pages/index/step2", + "style": { + "navigationBarTitleText": "fu" + } + },{ + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "uni-app" + } + } + + ], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + }, + "uniIdRouter": {} +} diff --git a/pages/.DS_Store b/pages/.DS_Store deleted file mode 100644 index c5c001b5c5aa0f10fb585e403e453a094b3e7d82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKI|>3Z5S{S@f{mqRuHX%V=n1@lg(8BiASjkwc`lFUn@_VWc3LQJVDgg5yo9`B zXGcVIdEG5UW+F0y8_L6mzS+Kc&juM$ARK4hZ<|YVIyZ-2?z@0-$8wZLcCzpAZHGn$ zr~nn90#twsd|H95u#@Sh59WDPfC~J)0``3<aKoC|2KuK1gSP;{5yEbmdoKYj768`7 zHV_e*1{D}o%@#w0j(Ewun%D*gT{N2y&6_nl6!qJ2e(`kC8px3fP=T%j!&uI&{;%P0 z`u{G8D=I(*{z?HItv0JAo|Lt<_c*Jy1-^w_&J%8ixl=HBIR<(;#=^?++>;`&*c|&c Vu?=)O;!X$hXTWr!QGstO@B%S!6xIL$ diff --git a/uni.promisify.adaptor.js b/uni.promisify.adaptor.js new file mode 100644 index 0000000..5fec4f3 --- /dev/null +++ b/uni.promisify.adaptor.js @@ -0,0 +1,13 @@ +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) => { + if (!res) return resolve(res) + return res[0] ? reject(res[0]) : resolve(res[1]) + }); + }); + }, +}); \ No newline at end of file diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..b9249e9 --- /dev/null +++ b/uni.scss @@ -0,0 +1,76 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$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; From 2c43a14e38e6cb188d115435ef99b1b1b9f8055b Mon Sep 17 00:00:00 2001 From: renyt <renyt@troyrc.com> Date: Fri, 9 May 2025 11:05:18 +0800 Subject: [PATCH 4/4] 1 --- pages/index/index.vue | 2074 +++++++++++++++++++++++++++++++++++++++++ pages/index/utils.js | 79 ++ 2 files changed, 2153 insertions(+) create mode 100644 pages/index/index.vue create mode 100644 pages/index/utils.js diff --git a/pages/index/index.vue b/pages/index/index.vue new file mode 100644 index 0000000..ece85f2 --- /dev/null +++ b/pages/index/index.vue @@ -0,0 +1,2074 @@ +<template> + <view> + <!-- 定义canvas画布 // 设置canvas大小为200x200像素 --> + <!-- // @touchstart="handleCanvasTouch" --> + <canvas @touchstart="handleTouchStart" @touchmove="handleTouchMove" @touchend="handleTouchEnd" :style="{ + width: 1000 + 'px', + height: 800 + 'px', + transform: `translate(${offsetX}px, ${offsetY}px) scale(${scale})` + }" canvas-id="canvas" id="canvas"></canvas> + <!-- 添加一个按钮,用于触发绘图 --> + <!-- <button @click="handleDraw">点击绘制圆形</button> --> + </view> +</template> + +<script setup> + import { + ref, + onMounted, + getCurrentInstance + } from 'vue' + import { + onReady + } from '@dcloudio/uni-app' + // import { useRafFn } from "./utils.js" + const canvasWidth = ref() // 动态设置Canvas宽度 + const canvasHeight = ref() // 动态设置Canvas高度 + const instance = getCurrentInstance() + const scale = ref(1) + const offsetX = ref(0) + const offsetY = ref(0) + const lastDistance = ref(-1) + + const startX = ref(0) + const startY = ref(0) + const isDragging = ref(false) + const imgUrl = ref('https://assets.sx25.troyrc.com/sx25/images/events/XBDT.jpg'); // 修改为ref + const blocks = ref( + [ + { + "areacode": "ksmj71jukqf7", + "areaname": "B2区", + "polygon": [ + 348, + 193, + 348, + 216, + 348, + 240, + 348, + 263, + 363, + 263, + 377, + 263, + 392, + 263, + 392, + 240, + 392, + 216, + 392, + 193, + 377, + 193, + 363, + 193, + 348, + 193 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "B2区" + }, + { + "areacode": "3ala2e74fet0", + "areaname": "A2区", + "polygon": [ + 488, + 251, + 473, + 262, + 453, + 281, + 455, + 290, + 494, + 290, + 518, + 290, + 542, + 290, + 542, + 273, + 542, + 257, + 536, + 205, + 521, + 207, + 494, + 240, + 488, + 251 + ], + "row_size": 25, + "col_size": 50, + "stage": "2", + "amount": 286, + "hint": "A2区" + }, + { + "areacode": "h4pff5jukqf9", + "areaname": "N3区", + "polygon": [ + 527, + 96, + 519, + 107, + 536, + 140, + 564, + 172, + 596, + 182, + 610, + 176, + 611, + 166, + 594, + 149, + 581, + 138, + 583, + 142, + 567, + 119, + 560, + 114, + 527, + 96 + ], + "row_size": 20, + "col_size": 35, + "stage": "2", + "amount": 0, + "hint": "N3区" + }, + { + "areacode": "8nbhrh2gt604", + "areaname": "H1区", + "polygon": [ + 348, + 144, + 348, + 152, + 348, + 162, + 348, + 170, + 361, + 170, + 374, + 170, + 388, + 169, + 387, + 162, + 387, + 152, + 387, + 144, + 374, + 144, + 361, + 144, + 348, + 144 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "H1区" + }, + { + "areacode": "0kc0kw2gt605", + "areaname": "N20区", + "polygon": [ + 582, + 341, + 582, + 361, + 582, + 381, + 602, + 380, + 600, + 400, + 614, + 401, + 620, + 401, + 622, + 366, + 619, + 360, + 621, + 341, + 614, + 341, + 597, + 341, + 582, + 341 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "N20区" + }, + { + "areacode": "xrc8rwej0jkc", + "areaname": "G区", + "polygon": [ + 113, + 371, + 113, + 397, + 113, + 424, + 113, + 450, + 118, + 450, + 124, + 450, + 129, + 450, + 129, + 424, + 129, + 397, + 129, + 371, + 124, + 371, + 118, + 371, + 113, + 371 + ], + "row_size": 10, + "col_size": 37, + "stage": "2", + "amount": 0, + "hint": "G区" + }, + { + "areacode": "bjhut82gt607", + "areaname": "N11区", + "polygon": [ + 58, + 323, + 58, + 345, + 58, + 367, + 58, + 389, + 71, + 389, + 83, + 389, + 96, + 389, + 96, + 367, + 96, + 345, + 96, + 323, + 83, + 323, + 71, + 323, + 58, + 323 + ], + "row_size": 16, + "col_size": 26, + "stage": "2", + "amount": 0, + "hint": "N11区" + }, + { + "areacode": "xrwmq3sa807n", + "areaname": "L区", + "polygon": [ + 541, + 196, + 554, + 223, + 553, + 252, + 554, + 282, + 555, + 285, + 564, + 285, + 568, + 284, + 567, + 253, + 568, + 222, + 559, + 191, + 564, + 188, + 555, + 188, + 541, + 196 + ], + "row_size": 15, + "col_size": 50, + "stage": "2", + "amount": 0, + "hint": "L区" + }, + { + "areacode": "aekymdjukqf6", + "areaname": "N2区", + "polygon": [ + 577, + 204, + 579, + 216, + 579, + 240, + 602, + 252, + 602, + 267, + 609, + 267, + 618, + 267, + 621, + 240, + 615, + 221, + 611, + 191, + 609, + 189, + 595, + 194, + 577, + 204 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "N2区" + }, + { + "areacode": "g1aynfej0jku", + "areaname": "E区", + "polygon": [ + 114, + 215, + 114, + 236, + 114, + 257, + 114, + 278, + 119, + 278, + 124, + 278, + 129, + 278, + 129, + 257, + 129, + 236, + 129, + 215, + 124, + 215, + 119, + 215, + 114, + 215 + ], + "row_size": 10, + "col_size": 34, + "stage": "2", + "amount": 0, + "hint": "E区" + }, + { + "areacode": "66g4bm74fetb", + "areaname": "N14区", + "polygon": [ + 155, + 529, + 149, + 538, + 148, + 542, + 142, + 551, + 170, + 563, + 192, + 563, + 213, + 563, + 213, + 550, + 213, + 538, + 213, + 525, + 192, + 525, + 170, + 525, + 155, + 529 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "N14区" + }, + { + "areacode": "31q0udej0jkx", + "areaname": "J区", + "polygon": [ + 393, + 137, + 393, + 152, + 393, + 168, + 393, + 183, + 414, + 183, + 434, + 183, + 455, + 183, + 455, + 168, + 455, + 152, + 455, + 137, + 434, + 137, + 414, + 137, + 393, + 137 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "J区" + }, + { + "areacode": "tsew3ejukqfb", + "areaname": "N17区", + "polygon": [ + 445, + 532, + 445, + 544, + 445, + 555, + 445, + 567, + 468, + 567, + 492, + 567, + 515, + 560, + 515, + 555, + 515, + 544, + 503, + 527, + 492, + 532, + 468, + 532, + 445, + 532 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "N17区" + }, + { + "areacode": "t4wshyjukqfc", + "areaname": "G区", + "polygon": [ + 224, + 139, + 224, + 153, + 224, + 169, + 224, + 183, + 245, + 183, + 265, + 183, + 286, + 183, + 286, + 169, + 286, + 153, + 286, + 139, + 265, + 139, + 245, + 139, + 224, + 139 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "G区" + }, + { + "areacode": "bp2jtyjukqfd", + "areaname": "N10区", + "polygon": [ + 60, + 256, + 60, + 276, + 60, + 297, + 60, + 317, + 73, + 317, + 85, + 317, + 98, + 317, + 98, + 297, + 98, + 276, + 98, + 256, + 85, + 256, + 73, + 256, + 60, + 256 + ], + "row_size": 16, + "col_size": 26, + "stage": "2", + "amount": 0, + "hint": "N10区" + }, + { + "areacode": "pee7rxjukqfe", + "areaname": "N9区", + "polygon": [ + 63, + 181, + 63, + 203, + 63, + 224, + 63, + 246, + 76, + 246, + 89, + 246, + 102, + 246, + 102, + 224, + 102, + 203, + 102, + 181, + 89, + 181, + 76, + 181, + 63, + 181 + ], + "row_size": 16, + "col_size": 31, + "stage": "2", + "amount": 0, + "hint": "N9区" + }, + { + "areacode": "ga8mwdsa8081", + "areaname": "N7区", + "polygon": [ + 159, + 87, + 159, + 100, + 159, + 113, + 159, + 126, + 185, + 126, + 212, + 126, + 238, + 126, + 238, + 113, + 238, + 100, + 238, + 87, + 212, + 87, + 185, + 87, + 159, + 87 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "N7区" + }, + { + "areacode": "0trbqk2gt60a", + "areaname": "M区", + "polygon": [ + 552, + 283, + 552, + 309, + 552, + 335, + 552, + 361, + 557, + 361, + 564, + 361, + 569, + 361, + 569, + 335, + 569, + 309, + 569, + 283, + 564, + 283, + 557, + 283, + 552, + 283 + ], + "row_size": 15, + "col_size": 40, + "stage": "2", + "amount": 75, + "hint": "M区" + }, + { + "areacode": "0yup992gt60b", + "areaname": "N4区", + "polygon": [ + 440, + 89, + 440, + 101, + 440, + 113, + 440, + 125, + 471, + 125, + 503, + 125, + 507, + 114, + 512, + 105, + 512, + 99, + 505, + 95, + 492, + 89, + 471, + 89, + 440, + 89 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "N4区" + }, + { + "areacode": "x4uxg3jukqcr", + "areaname": "Q区", + "polygon": [ + 223, + 467, + 223, + 483, + 223, + 499, + 223, + 515, + 257, + 515, + 290, + 515, + 324, + 515, + 324, + 499, + 324, + 483, + 324, + 467, + 290, + 467, + 257, + 467, + 223, + 467 + ], + "row_size": 20, + "col_size": 40, + "stage": "2", + "amount": 0, + "hint": "Q区" + }, + { + "areacode": "j6l96jjukqcg", + "areaname": "O区", + "polygon": [ + 437, + 472, + 437, + 486, + 437, + 501, + 437, + 515, + 465, + 515, + 492, + 515, + 514, + 502, + 523, + 499, + 520, + 486, + 497, + 463, + 476, + 469, + 465, + 472, + 437, + 472 + ], + "row_size": 20, + "col_size": 44, + "stage": "2", + "amount": 0, + "hint": "O区" + }, + { + "areacode": "g4r5lysa8087", + "areaname": "N13区", + "polygon": [ + 89, + 485, + 89, + 499, + 89, + 514, + 89, + 528, + 106, + 528, + 123, + 528, + 140, + 528, + 140, + 514, + 140, + 499, + 140, + 485, + 123, + 485, + 106, + 485, + 89, + 485 + ], + "row_size": 20, + "col_size": 36, + "stage": "2", + "amount": 0, + "hint": "N13区" + }, + { + "areacode": "q6tq75ej0jl0", + "areaname": "N18区", + "polygon": [ + 528, + 486, + 535, + 509, + 535, + 520, + 536, + 527, + 552, + 532, + 540, + 531, + 551, + 544, + 582, + 511, + 595, + 495, + 566, + 480, + 566, + 482, + 540, + 470, + 528, + 486 + ], + "row_size": 20, + "col_size": 36, + "stage": "2", + "amount": 0, + "hint": "N18区" + }, + { + "areacode": "twgl38ej0jl1", + "areaname": "N19区", + "polygon": [ + 583, + 409, + 583, + 435, + 595, + 461, + 589, + 482, + 600, + 484, + 605, + 481, + 610, + 473, + 611, + 463, + 617, + 442, + 619, + 413, + 615, + 409, + 599, + 409, + 583, + 409 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "N19区" + }, + { + "areacode": "mnxkfajukqcl", + "areaname": "D区", + "polygon": [ + 111, + 290, + 111, + 314, + 111, + 339, + 111, + 363, + 116, + 363, + 122, + 363, + 127, + 363, + 127, + 339, + 127, + 314, + 127, + 290, + 122, + 290, + 116, + 290, + 111, + 290 + ], + "row_size": 10, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "D区" + }, + { + "areacode": "5k7ubtej0jl3", + "areaname": "N12区", + "polygon": [ + 57, + 390, + 57, + 419, + 57, + 447, + 57, + 476, + 71, + 476, + 85, + 476, + 99, + 476, + 99, + 447, + 99, + 419, + 99, + 390, + 85, + 390, + 71, + 390, + 57, + 390 + ], + "row_size": 16, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "N12区" + }, + { + "areacode": "bt8yrj74fetj", + "areaname": "D4区", + "polygon": [ + 234, + 412, + 223, + 423, + 215, + 440, + 215, + 463, + 236, + 463, + 256, + 463, + 277, + 463, + 277, + 440, + 277, + 419, + 277, + 396, + 256, + 396, + 242, + 402, + 234, + 412 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "D4区" + }, + { + "areacode": "sm0jwq2gt60m", + "areaname": "P区", + "polygon": [ + 355, + 486, + 355, + 501, + 329, + 500, + 329, + 515, + 365, + 515, + 400, + 515, + 436, + 515, + 436, + 500, + 436, + 484, + 436, + 469, + 400, + 469, + 360, + 469, + 355, + 486 + ], + "row_size": 20, + "col_size": 40, + "stage": "2", + "amount": 0, + "hint": "P区" + }, + { + "areacode": "dn5kn974fetl", + "areaname": "B3区", + "polygon": [ + 286, + 193, + 286, + 216, + 286, + 238, + 286, + 261, + 302, + 261, + 319, + 261, + 335, + 261, + 335, + 238, + 335, + 216, + 335, + 193, + 319, + 193, + 302, + 193, + 286, + 193 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "B3区" + }, + { + "areacode": "32lnp9jukqcs", + "areaname": "D3区", + "polygon": [ + 286, + 398, + 286, + 419, + 286, + 441, + 286, + 462, + 302, + 462, + 317, + 462, + 333, + 462, + 333, + 441, + 333, + 419, + 333, + 398, + 317, + 398, + 302, + 398, + 286, + 398 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "D3区" + }, + { + "areacode": "u1w8mhej0jlk", + "areaname": "D2区", + "polygon": [ + 347, + 396, + 347, + 418, + 347, + 441, + 347, + 463, + 362, + 463, + 376, + 463, + 391, + 463, + 391, + 441, + 391, + 418, + 391, + 396, + 376, + 396, + 362, + 396, + 347, + 396 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "D2区" + }, + { + "areacode": "p42ypdej0jla", + "areaname": "D1区", + "polygon": [ + 404, + 397, + 404, + 419, + 404, + 440, + 404, + 462, + 424, + 462, + 444, + 462, + 464, + 462, + 464, + 440, + 460, + 435, + 457, + 425, + 443, + 411, + 424, + 397, + 404, + 397 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "D1区" + }, + { + "areacode": "0ca4mx2gt615", + "areaname": "H2区", + "polygon": [ + 293, + 144, + 293, + 153, + 293, + 162, + 293, + 171, + 307, + 171, + 321, + 171, + 335, + 171, + 335, + 162, + 335, + 153, + 335, + 144, + 321, + 144, + 307, + 144, + 293, + 144 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "H2区" + }, + { + "areacode": "q4bf4074fets", + "areaname": "F区", + "polygon": [ + 163, + 139, + 163, + 155, + 163, + 170, + 163, + 186, + 181, + 186, + 199, + 186, + 217, + 186, + 217, + 170, + 217, + 155, + 217, + 139, + 199, + 139, + 181, + 139, + 163, + 139 + ], + "row_size": 20, + "col_size": 35, + "stage": "2", + "amount": 0, + "hint": "F区" + }, + { + "areacode": "wpks2e74fett", + "areaname": "N8区", + "polygon": [ + 93, + 121, + 93, + 136, + 93, + 149, + 93, + 164, + 108, + 164, + 123, + 164, + 138, + 164, + 138, + 149, + 138, + 136, + 138, + 121, + 123, + 121, + 108, + 121, + 93, + 121 + ], + "row_size": 20, + "col_size": 35, + "stage": "2", + "amount": 0, + "hint": "N8区" + }, + { + "areacode": "9xnc21jukqd0", + "areaname": "N区", + "polygon": [ + 552, + 372, + 554, + 401, + 553, + 423, + 545, + 459, + 555, + 465, + 558, + 462, + 562, + 453, + 568, + 426, + 569, + 398, + 565, + 367, + 564, + 367, + 561, + 369, + 552, + 372 + ], + "row_size": 15, + "col_size": 40, + "stage": "2", + "amount": 89, + "hint": "N区" + }, + { + "areacode": "ul1nl874fetw", + "areaname": "R区", + "polygon": [ + 157, + 469, + 157, + 484, + 157, + 497, + 157, + 512, + 177, + 512, + 196, + 512, + 216, + 512, + 216, + 497, + 216, + 484, + 216, + 469, + 196, + 469, + 177, + 469, + 157, + 469 + ], + "row_size": 20, + "col_size": 40, + "stage": "2", + "amount": 0, + "hint": "R区" + }, + { + "areacode": "8ejjq6ej0jlg", + "areaname": "B1区", + "polygon": [ + 406, + 193, + 406, + 214, + 406, + 237, + 406, + 258, + 424, + 258, + 442, + 258, + 460, + 257, + 461, + 237, + 461, + 217, + 461, + 193, + 442, + 193, + 424, + 193, + 406, + 193 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "B1区" + }, + { + "areacode": "kt5npejukqd3", + "areaname": "K区", + "polygon": [ + 466, + 140, + 466, + 155, + 466, + 172, + 466, + 187, + 481, + 187, + 494, + 187, + 509, + 187, + 509, + 172, + 509, + 155, + 509, + 140, + 494, + 140, + 481, + 140, + 466, + 140 + ], + "row_size": 20, + "col_size": 40, + "stage": "2", + "amount": 0, + "hint": "K区" + }, + { + "areacode": "w1perrjukqd5", + "areaname": "N15区", + "polygon": [ + 225, + 530, + 225, + 545, + 224, + 565, + 247, + 566, + 247, + 578, + 290, + 582, + 325, + 580, + 326, + 561, + 326, + 545, + 326, + 530, + 292, + 530, + 259, + 530, + 225, + 530 + ], + "row_size": 20, + "col_size": 40, + "stage": "2", + "amount": 0, + "hint": "N15区" + }, + { + "areacode": "c9e74k2gt61e", + "areaname": "C3区", + "polygon": [ + 134, + 364, + 134, + 380, + 134, + 396, + 134, + 412, + 160, + 412, + 185, + 412, + 211, + 412, + 211, + 396, + 211, + 380, + 211, + 364, + 185, + 364, + 160, + 364, + 134, + 364 + ], + "row_size": 24, + "col_size": 43, + "stage": "2", + "amount": 0, + "hint": "C3区" + }, + { + "areacode": "y424tp2gt61f", + "areaname": "A3区", + "polygon": [ + 451, + 364, + 453, + 373, + 470, + 390, + 486, + 399, + 493, + 413, + 516, + 414, + 541, + 414, + 541, + 398, + 541, + 380, + 541, + 364, + 516, + 364, + 493, + 364, + 451, + 364 + ], + "row_size": 30, + "col_size": 60, + "stage": "2", + "amount": 0, + "hint": "A3区" + }, + { + "areacode": "d2ekxysa808x", + "areaname": "C2区", + "polygon": [ + 133, + 241, + 133, + 259, + 133, + 276, + 133, + 294, + 158, + 294, + 185, + 294, + 210, + 294, + 210, + 276, + 210, + 259, + 210, + 241, + 185, + 241, + 158, + 241, + 133, + 241 + ], + "row_size": 24, + "col_size": 40, + "stage": "2", + "amount": 0, + "hint": "C2区" + }, + { + "areacode": "x26ltu2gt61h", + "areaname": "C1区", + "polygon": [ + 134, + 304, + 134, + 318, + 134, + 333, + 134, + 347, + 165, + 347, + 197, + 347, + 228, + 347, + 228, + 333, + 228, + 318, + 228, + 304, + 197, + 304, + 165, + 304, + 134, + 304 + ], + "row_size": 24, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "C1区" + }, + { + "areacode": "02apw92gt618", + "areaname": "N1区", + "polygon": [ + 581, + 276, + 581, + 296, + 581, + 316, + 604, + 321, + 606, + 335, + 607, + 336, + 620, + 335, + 620, + 316, + 620, + 296, + 620, + 276, + 607, + 276, + 594, + 276, + 581, + 276 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "N1区" + }, + { + "areacode": "sgatj4jukqdb", + "areaname": "N5区", + "polygon": [ + 334, + 75, + 334, + 92, + 334, + 109, + 334, + 126, + 367, + 126, + 399, + 126, + 432, + 126, + 432, + 109, + 432, + 92, + 432, + 75, + 399, + 75, + 367, + 75, + 334, + 75 + ], + "row_size": 20, + "col_size": 35, + "stage": "2", + "amount": 0, + "hint": "N5区" + }, + { + "areacode": "c4m1arjukqdc", + "areaname": "B4区", + "polygon": [ + 216, + 193, + 216, + 215, + 216, + 239, + 216, + 261, + 236, + 261, + 256, + 261, + 276, + 261, + 276, + 239, + 276, + 215, + 276, + 193, + 256, + 193, + 236, + 193, + 216, + 193 + ], + "row_size": 20, + "col_size": 30, + "stage": "2", + "amount": 0, + "hint": "B4区" + }, + { + "areacode": "fsp4282gt61b", + "areaname": "N6区", + "polygon": [ + 246, + 74, + 246, + 91, + 246, + 109, + 246, + 126, + 273, + 126, + 299, + 126, + 326, + 126, + 326, + 109, + 326, + 91, + 326, + 74, + 299, + 74, + 273, + 74, + 246, + 74 + ], + "row_size": 20, + "col_size": 35, + "stage": "2", + "amount": 0, + "hint": "N6区" + }, + { + "areacode": "9hw55eej0jlx", + "areaname": "A1区", + "polygon": [ + 454, + 306, + 454, + 320, + 454, + 336, + 454, + 350, + 484, + 350, + 513, + 350, + 543, + 350, + 543, + 336, + 543, + 320, + 543, + 306, + 513, + 306, + 484, + 306, + 454, + 306 + ], + "row_size": 25, + "col_size": 50, + "stage": "2", + "amount": 0, + "hint": "A1区" + }, + { + "areacode": "cddsjlsa8097", + "areaname": "N16区", + "polygon": [ + 335, + 534, + 335, + 550, + 335, + 565, + 335, + 581, + 369, + 581, + 404, + 581, + 438, + 581, + 438, + 565, + 438, + 550, + 438, + 534, + 404, + 534, + 369, + 534, + 335, + 534 + ], + "row_size": 20, + "col_size": 40, + "stage": "2", + "amount": 0, + "hint": "N16区" + } + ] + ); + async function draw() { + const ctx = uni.createCanvasContext('canvas', instance); + ctx.save(); // 保存当前状态 + ctx.translate(offsetX.value, offsetY.value); // 应用偏移 + ctx.scale(scale.value, scale.value); // 应用缩放 + const res = await uni.getImageInfo({ + src: imgUrl.value + }); + ctx.drawImage(res.path, 0, 0, canvasWidth.value, canvasHeight.value); + ctx.restore(); // 恢复之前保存的状态 + // 绘制每个图形 + blocks.value.forEach((block) => { + ctx.beginPath(); + // ctx.fillStyle = block.color; + // 应用缩放 + ctx.scale(scale.value, scale.value); // 应用缩放 + switch (block.hint) { + case block.hint: // 四边形 + for (let i = 0; i < block.polygon.length; i += 2) { + const x = block.polygon[i]; + const y = block.polygon[i + 1]; + if (i === 0) { + ctx.moveTo(x, y); + } else { + ctx.lineTo(x, y); + } + } + ctx.closePath(); + break; + } + + ctx.restore(); // 恢复缩放前的状态,避免影响其他绘制 + + ctx.stroke(); // 绘制边框 + if (block.color) ctx.fill(); // 如果有填充色就填充 + }); + + ctx.draw() + } + + + + // 处理canvas触摸事件 + function handleCanvasTouch(event) { + // 获取触摸点的坐标 + const x = event.touches[0].x; + const y = event.touches[0].y; + console.log(x, y, '12'); + + } + + + // 触摸开始 + const handleTouchStart = (e) => { + console.log('handleTouchStart') + // 获取触摸点的坐标 + const x = e.touches[0].x; + const y = e.touches[0].y; + // 判断点击位置 + blocks.value.forEach((block) => { + if (isPointInQuadrilateral(x, y, block.polygon)) { + uni.showModal({ + title: '提示', + content: block.hint, + showCancel: true, // 显示取消按钮 + success: (res) => { + if (res.confirm) { + console.log('用户点击了“确定”按钮'); + } else if (res.cancel) { + console.log('用户点击了“取消”按钮'); + } + }, + }); + } + }); + if (e.touches.length === 1) { + // 单指拖动 + startX.value = e.touches[0].clientX - offsetX.value + startY.value = e.touches[0].clientY - offsetY.value + isDragging.value = true + } else if (e.touches.length === 2) { + // 双指缩放 + const x1 = e.touches[0].clientX + const y1 = e.touches[0].clientY + const x2 = e.touches[1].clientX + const y2 = e.touches[1].clientY + lastDistance.value = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)) + } + } + + // 触摸移动 + const handleTouchMove = (e) => { + console.log('11111'); + if (e.touches.length === 1 && isDragging.value) { + // 单指移动逻辑... + offsetX.value = e.touches[0].clientX - startX.value; + offsetY.value = e.touches[0].clientY - startY.value; + } else if (e.touches.length === 2) { + // 双指缩放逻辑... + const x1 = e.touches[0].clientX, + y1 = e.touches[0].clientY; + const x2 = e.touches[1].clientX, + y2 = e.touches[1].clientY; + const distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); + + if (lastDistance.value > 0) { + scale.value = Math.min(Math.max(scale.value * (distance / lastDistance.value), 0.5), 4); + draw(); // 重新绘制Canvas内容 + } + lastDistance.value = distance; + } + }; + + + // 触摸结束 + const handleTouchEnd = () => { + console.log('handleTouchEnd') + lastDistance.value = -1 + isDragging.value = false + } + + // 按钮点击事件处理函数 + const handleDraw = () => { + draw(); // 调用绘图函数 + } + + // onMounted(() => { + // setInterval(()=>{ + // draw() + // },300) + // // 确保在组件挂载后可以获取到Canvas元素 + // }) + // useRafFn(() => { + // draw() + // }) + onReady(() => { + console.log('onReadyonReady'); + uni.downloadFile({ + url: imgUrl.value, + success: function(sres) { + console.log(sres, 'sres'); + imgUrl.value = sres.tempFilePath || sres.path + // setInterval(()=>{ + draw() + // },16) + }, + fail: function(fres) { + console.log('fres', fres) + } + }) + }) +function isPointInQuadrilateral(px, py, polygon) { + let inside = false; + const n = polygon.length / 2; // 因为每两个数表示一个点(x,y) + for (let i = 0; i < n; i++) { + let p1_x = polygon[2 * i]; + let p1_y = polygon[2 * i + 1]; + let p2_x, p2_y; + if (i === n - 1) { // 最后一个点与第一个点相连形成闭合 + p2_x = polygon[0]; + p2_y = polygon[1]; + } else { + p2_x = polygon[2 * i + 2]; + p2_y = polygon[2 * i + 3]; + } + + if (py > Math.min(p1_y, p2_y) && py <= Math.max(p1_y, p2_y) && px <= Math.max(p1_x, p2_x)) { + if (p1_y !== p2_y) { + let xinters = (py - p1_y) * (p2_x - p1_x) / (p2_y - p1_y) + p1_x; + if (p1_x === p2_x || px <= xinters) { + inside = !inside; + } + } + } + } + return inside; +} +</script> + +<style scoped> + button { + margin-top: 10px; + } +</style> \ No newline at end of file diff --git a/pages/index/utils.js b/pages/index/utils.js new file mode 100644 index 0000000..2715f00 --- /dev/null +++ b/pages/index/utils.js @@ -0,0 +1,79 @@ +import { ref, onMounted, onUnmounted } from 'vue' + +export function useElementSize(targetSelector) { + const width = ref(0) + const height = ref(0) + let observer = null + + const updateSize = () => { + const query = uni.createSelectorQuery() + query.select(targetSelector).boundingClientRect(rect => { + if (rect) { + width.value = rect.width + height.value = rect.height + } + }).exec() + } + + onMounted(() => { + updateSize() + // 尝试使用 ResizeObserver(部分小程序基础库支持) + if (uni.createIntersectionObserver) { + observer = uni.createIntersectionObserver(this, { + observeAll: true + }) + observer.relativeToViewport().observe(targetSelector, updateSize) + } + }) + + onUnmounted(() => { + observer?.disconnect() + }) + + return { width, height, updateSize } +} + +export function useEventListener(target, event, handler) { + // 组件内事件 + if (target.$on) { + target.$on(event, handler) + const stop = () => target.$off(event, handler) + onUnmounted(stop) + return stop + } + // 全局事件(需配合 uni.$emit 使用) + else { + uni.$on(event, handler) + const stop = () => uni.$off(event, handler) + onUnmounted(stop) + return stop + } +} + + +export function useRafFn(fn, { immediate = true } = {}) { + let isActive = false + let timerId = null + + const loop = () => { + if (!isActive) return + fn() + timerId = setTimeout(loop, 16) // 模拟 60fps + } + + const start = () => { + if (isActive) return + isActive = true + loop() + } + + const stop = () => { + isActive = false + clearTimeout(timerId) + } + + onUnmounted(stop) + immediate && start() + + return { start, stop } +} \ No newline at end of file