diff --git a/.DS_Store b/.DS_Store index 73839c7..3dc96eb 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/README.md b/README.md index ff5e022..a23428a 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,7 @@ MindMap/ │ ├── test-*.html # 功能测试文件 │ ├── package.json # 前端依赖 │ └── vite.config.js # Vite配置 -├── mind-elixir-core-master/ # MindElixir完整源码 +../mind-elixir-core-master/ # MindElixir完整源码(平级目录) │ ├── src/ # TypeScript源码 │ ├── tests/ # 测试套件 │ ├── dist/ # 编译后文件 @@ -410,7 +410,7 @@ MIT License - 详见 [LICENSE](LICENSE) 文件 - ✅ **MindElixir增强**: 集成了自定义的Markdown和表格渲染功能 ### 文件结构优化 -- **保留**: `mind-elixir-core-master/` - 完整的源码和文档 +- **保留**: `../mind-elixir-core-master/` - 完整的源码和文档(平级目录) - **保留**: `frontend/src/lib/mind-elixir/` - 项目中使用的增强版本 - **保留**: 核心测试文件 - 用于功能验证和问题调试 - **删除**: 重复的调试文件和过时的测试文件 diff --git a/backend/mindmap.db b/backend/mindmap.db index 08c3c36..52da9d2 100644 Binary files a/backend/mindmap.db and b/backend/mindmap.db differ diff --git a/backend/mindmap/ai_service.py b/backend/mindmap/ai_service.py index 377b98f..262ef15 100644 --- a/backend/mindmap/ai_service.py +++ b/backend/mindmap/ai_service.py @@ -77,7 +77,7 @@ def call_ai_api(system_prompt, user_prompt, model="glm-4.5", base_url="https://o model=model, messages=messages, temperature=0.7, - max_tokens=4000, # 减少token限制,提高响应速度 + max_tokens=8000, # 增加token限制,确保完整内容生成 stream=stream ) except Exception as e: diff --git a/backend/mindmap/migrations/0003_node_image_fit_node_image_height_node_image_url_and_more.py b/backend/mindmap/migrations/0003_node_image_fit_node_image_height_node_image_url_and_more.py new file mode 100644 index 0000000..c5829d2 --- /dev/null +++ b/backend/mindmap/migrations/0003_node_image_fit_node_image_height_node_image_url_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 4.2.7 on 2025-10-09 07:25 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mindmap', '0002_rename_mindmapnode_node'), + ] + + operations = [ + migrations.AddField( + model_name='node', + name='image_fit', + field=models.CharField(blank=True, default='contain', max_length=20), + ), + migrations.AddField( + model_name='node', + name='image_height', + field=models.IntegerField(blank=True, default=80, null=True), + ), + migrations.AddField( + model_name='node', + name='image_url', + field=models.URLField(blank=True, max_length=1000, null=True), + ), + migrations.AddField( + model_name='node', + name='image_width', + field=models.IntegerField(blank=True, default=120, null=True), + ), + ] diff --git a/backend/mindmap/models.py b/backend/mindmap/models.py index d0b7767..9dec538 100644 --- a/backend/mindmap/models.py +++ b/backend/mindmap/models.py @@ -28,6 +28,13 @@ class Node(models.Model): depth = models.IntegerField(default=0) # depth title = models.CharField(max_length=500, blank=True, default='') # title desc = models.TextField(blank=True, default='') # des + + # 图片相关字段 + image_url = models.URLField(max_length=1000, blank=True, null=True) # 图片URL + image_width = models.IntegerField(default=120, null=True, blank=True) # 图片宽度 + image_height = models.IntegerField(default=80, null=True, blank=True) # 图片高度 + image_fit = models.CharField(max_length=20, default='contain', blank=True) # 图片适配方式 + created_at = models.DateTimeField(auto_now_add=True) # createDate updated_at = models.DateTimeField(auto_now=True) # updateDate deleted = models.BooleanField(default=False) # delete diff --git a/backend/mindmap/views_doc.py b/backend/mindmap/views_doc.py index 942112b..bbd7bb2 100644 --- a/backend/mindmap/views_doc.py +++ b/backend/mindmap/views_doc.py @@ -39,7 +39,7 @@ def convert_to_mindelixir_format(mindmap, nodes): # 创建节点映射 node_map = {} for node in nodes: - node_map[str(node.id)] = { + node_data = { "id": str(node.id), "topic": node.title or "无标题", "data": { @@ -50,6 +50,17 @@ def convert_to_mindelixir_format(mindmap, nodes): "mindmapId": mindmap.id, "mindmap_id": mindmap.id } + + # 添加图片信息 + if node.image_url: + node_data["image"] = { + "url": node.image_url, + "width": node.image_width or 120, + "height": node.image_height or 80, + "fit": node.image_fit or "contain" + } + + node_map[str(node.id)] = node_data # 构建树形结构 root_nodes = [] @@ -159,6 +170,11 @@ def create_mindmap(request): children_count=0, depth=0, deleted=False, + # 添加图片信息 + image_url=mindmap_data.get('image', {}).get('url') if mindmap_data.get('image') else None, + image_width=mindmap_data.get('image', {}).get('width') if mindmap_data.get('image') else None, + image_height=mindmap_data.get('image', {}).get('height') if mindmap_data.get('image') else None, + image_fit=mindmap_data.get('image', {}).get('fit') if mindmap_data.get('image') else 'contain', ) # 递归创建所有子节点 @@ -180,6 +196,11 @@ def create_mindmap(request): children_count=0, depth=0, deleted=False, + # 图片字段默认为空 + image_url=None, + image_width=None, + image_height=None, + image_fit='contain', ) # 返回完整数据 @@ -205,6 +226,11 @@ def create_nodes_recursively(nodes_data, mindmap, parent_id): children_count=len(node_data.get('children', [])), depth=1, # 可以根据实际层级计算 deleted=False, + # 添加图片信息 + image_url=node_data.get('image', {}).get('url') if node_data.get('image') else None, + image_width=node_data.get('image', {}).get('width') if node_data.get('image') else None, + image_height=node_data.get('image', {}).get('height') if node_data.get('image') else None, + image_fit=node_data.get('image', {}).get('fit') if node_data.get('image') else 'contain', ) # 递归创建子节点 diff --git a/frontend/.DS_Store b/frontend/.DS_Store index 435e640..a6e74e6 100644 Binary files a/frontend/.DS_Store and b/frontend/.DS_Store differ diff --git a/frontend/dist/assets/index-5b39da23.css b/frontend/dist/assets/index-3cdbb183.css similarity index 58% rename from frontend/dist/assets/index-5b39da23.css rename to frontend/dist/assets/index-3cdbb183.css index 9f20b00..8d01c65 100644 --- a/frontend/dist/assets/index-5b39da23.css +++ b/frontend/dist/assets/index-3cdbb183.css @@ -1 +1 @@ -.map-container{-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif;-webkit-user-select:none;user-select:none;height:100%;width:100%;overflow:hidden;font-size:15px;outline:none;touch-action:none;background-color:var(--bgcolor)}.map-container *{box-sizing:border-box}.map-container::-webkit-scrollbar{width:0px;height:0px}.map-container .selected{outline:2px solid var(--selected);outline-offset:1px}.map-container .hyper-link{text-decoration:none;margin-left:.3em}.map-container me-main>me-wrapper>me-parent>me-epd{top:50%;transform:translateY(-50%)}.map-container me-epd{top:100%;transform:translateY(-50%)}.map-container .lhs{direction:rtl}.map-container .lhs>me-wrapper>me-parent>me-epd{left:-10px}.map-container .lhs me-epd{left:5px}.map-container .lhs me-tpc{direction:ltr}.map-container .rhs>me-wrapper>me-parent>me-epd{right:-10px}.map-container .rhs me-epd{right:5px}.map-container .map-canvas{position:relative;-webkit-user-select:none;user-select:none;width:fit-content;transform:scale(1)}.map-container .map-canvas me-nodes{position:relative;display:flex;justify-content:center;align-items:center;height:max-content;width:max-content;padding:var(--map-padding)}.map-container me-main>me-wrapper{position:relative;margin:var(--main-gap-y) var(--main-gap-x)}.map-container me-main>me-wrapper>me-parent{margin:10px;padding:0}.map-container me-main>me-wrapper>me-parent>me-tpc{border-radius:var(--main-radius);background-color:var(--main-bgcolor);border:2px solid var(--main-color);color:var(--main-color);padding:8px 25px}.map-container me-wrapper{display:block;pointer-events:none;width:fit-content}.map-container me-children,.map-container me-parent{display:inline-block;vertical-align:middle}.map-container me-root{position:relative;margin:45px 0;z-index:10}.map-container me-root me-tpc{font-size:25px;color:var(--root-color);padding:10px 30px;border-radius:var(--root-radius);border:var(--root-border-color) 2px solid;background-color:var(--root-bgcolor)}.map-container me-parent{position:relative;cursor:pointer;padding:6px var(--node-gap-x);margin-top:var(--node-gap-y);z-index:10}.map-container me-parent me-tpc{position:relative;border-radius:3px;color:var(--color);padding:var(--topic-padding)}.map-container me-parent me-tpc .insert-preview{position:absolute;width:100%;left:0;z-index:9}.map-container me-parent me-tpc .show{background:#7ad5ff;pointer-events:none;opacity:.7;border-radius:3px}.map-container me-parent me-tpc .before{height:14px;top:-14px}.map-container me-parent me-tpc .in{height:100%;top:0}.map-container me-parent me-tpc .after{height:14px;bottom:-14px}.map-container me-parent me-epd{position:absolute;height:18px;width:18px;opacity:.8;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgdD0iMTY1NjY1NDcxNzI0MiIgY2xhc3M9Imljb24iIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIHZlcnNpb249IjEuMSIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CiAgICA8cGF0aCBkPSJNNTEyIDc0LjY2NjY2N0MyNzAuOTMzMzMzIDc0LjY2NjY2NyA3NC42NjY2NjcgMjcwLjkzMzMzMyA3NC42NjY2NjcgNTEyUzI3MC45MzMzMzMgOTQ5LjMzMzMzMyA1MTIgOTQ5LjMzMzMzMyA5NDkuMzMzMzMzIDc1My4wNjY2NjcgOTQ5LjMzMzMzMyA1MTIgNzUzLjA2NjY2NyA3NC42NjY2NjcgNTEyIDc0LjY2NjY2N3oiIHN0cm9rZS13aWR0aD0iNTQiIHN0cm9rZT0nYmxhY2snIGZpbGw9J3doaXRlJyA+PC9wYXRoPgogICAgPHBhdGggZD0iTTY4Mi42NjY2NjcgNDgwaC0xMzguNjY2NjY3VjM0MS4zMzMzMzNjMC0xNy4wNjY2NjctMTQuOTMzMzMzLTMyLTMyLTMycy0zMiAxNC45MzMzMzMtMzIgMzJ2MTM4LjY2NjY2N0gzNDEuMzMzMzMzYy0xNy4wNjY2NjcgMC0zMiAxNC45MzMzMzMtMzIgMzJzMTQuOTMzMzMzIDMyIDMyIDMyaDEzOC42NjY2NjdWNjgyLjY2NjY2N2MwIDE3LjA2NjY2NyAxNC45MzMzMzMgMzIgMzIgMzJzMzItMTQuOTMzMzMzIDMyLTMydi0xMzguNjY2NjY3SDY4Mi42NjY2NjdjMTcuMDY2NjY3IDAgMzItMTQuOTMzMzMzIDMyLTMycy0xNC45MzMzMzMtMzItMzItMzJ6Ij48L3BhdGg+Cjwvc3ZnPg==);background-repeat:no-repeat;background-size:contain;background-position:center;pointer-events:all;z-index:9}.map-container me-parent me-epd.minus{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgdD0iMTY1NjY1NTU2NDk4NSIgY2xhc3M9Imljb24iIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIHZlcnNpb249IjEuMSIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CiAgICA8cGF0aCBkPSJNNTEyIDc0LjY2NjY2N0MyNzAuOTMzMzMzIDc0LjY2NjY2NyA3NC42NjY2NjcgMjcwLjkzMzMzMyA3NC42NjY2NjcgNTEyUzI3MC45MzMzMzMgOTQ5LjMzMzMzMyA1MTIgOTQ5LjMzMzMzMyA5NDkuMzMzMzMzIDc1My4wNjY2NjcgOTQ5LjMzMzMzMyA1MTIgNzUzLjA2NjY2NyA3NC42NjY2NjcgNTEyIDc0LjY2NjY2N3oiIHN0cm9rZS13aWR0aD0iNTQiIHN0cm9rZT0nYmxhY2snIGZpbGw9J3doaXRlJyA+PC9wYXRoPgogICAgPHBhdGggZD0iTTY4Mi42NjY2NjcgNTQ0SDM0MS4zMzMzMzNjLTE3LjA2NjY2NyAwLTMyLTE0LjkzMzMzMy0zMi0zMnMxNC45MzMzMzMtMzIgMzItMzJoMzQxLjMzMzMzNGMxNy4wNjY2NjcgMCAzMiAxNC45MzMzMzMgMzIgMzJzLTE0LjkzMzMzMyAzMi0zMiAzMnoiPjwvcGF0aD4KPC9zdmc+)!important;transition:opacity .3s;opacity:0}@media (hover: hover){.map-container me-parent me-epd.minus:hover{opacity:.8}}@media (hover: none){.map-container me-parent me-epd.minus{opacity:.8}}.map-container .icon{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden}.map-container .lines,.map-container .summary,.map-container .subLines,.map-container .topiclinks,.map-container .linkcontroller{position:absolute;height:102%;width:100%;top:0;left:0}.map-container .topiclinks,.map-container .linkcontroller,.map-container .summary{pointer-events:none;z-index:20}.map-container .summary>g,.map-container .topiclinks>g{cursor:pointer;pointer-events:stroke;z-index:20}.map-container .lines,.map-container .subLines{pointer-events:none}.map-container #input-box{position:absolute;top:0;left:0;width:max-content;max-width:35em;direction:ltr;-webkit-user-select:auto;user-select:auto;pointer-events:auto;color:var(--color);background-color:var(--bgcolor);z-index:100}.map-container me-tpc{display:block;max-width:35em;white-space:pre-wrap;pointer-events:all}.map-container me-tpc>*{pointer-events:none}.map-container me-tpc>a,.map-container me-tpc>iframe{pointer-events:auto}.map-container me-tpc>.text{display:inline-block}.map-container me-tpc>.text a{pointer-events:auto}.map-container me-tpc>img{display:block;margin-bottom:8px;object-fit:cover}.map-container me-tpc table{white-space:normal!important;border-collapse:collapse;width:100%;margin:4px 0;font-size:11px;border:2px solid #333;border-radius:6px;box-shadow:0 2px 8px #00000014;background-color:#fafafa;overflow:hidden;display:table!important}.map-container me-tpc table th,.map-container me-tpc table td{border:2px solid #333;padding:6px 8px;text-align:left;vertical-align:top;display:table-cell!important;position:relative;white-space:normal!important}.map-container me-tpc table th{background-color:#f5f5f5;font-weight:600;color:#333;text-align:center;border-bottom:2px solid #333}.map-container me-tpc table td{background-color:#fff}.map-container me-tpc table tr{display:table-row!important;white-space:normal!important}.map-container me-tpc table tr:nth-child(2n) td{background-color:#f8f8f8}.map-container me-tpc table tr:hover td{background-color:#f0f8ff}.map-container me-tpc table th:not(:last-child),.map-container me-tpc table td:not(:last-child){border-right:2px solid #333}.map-container me-tpc table tr:not(:last-child) td{border-bottom:2px solid #333}.map-container .circle{position:absolute;height:10px;width:10px;margin-top:-5px;margin-left:-5px;border-radius:100%;background:#757575;border:2px solid #ffffff;z-index:50;cursor:pointer}.map-container .tags{direction:ltr}.map-container .tags span{display:inline-block;border-radius:3px;padding:2px 4px;background:#d6f0f8;color:#276f86;margin:2px 4px 0 0;font-size:12px;line-height:1.3em}.map-container .icons{display:inline-block;direction:ltr;margin-left:5px}.map-container .icons span{display:inline-block;line-height:1.3em}.map-container .mind-elixir-ghost{position:fixed;top:-100%;left:-100%;box-sizing:content-box;opacity:.5;background-color:var(--main-bgcolor);border:2px solid var(--main-color);color:var(--main-color);max-width:200px;width:fit-content;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:8px 16px;border-radius:6px}.map-container .selection-area{background:#4f90f22d;border:1px solid #4f90f2}.map-container .context-menu{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99}.map-container .context-menu .menu-list{position:fixed;list-style:none;margin:0;padding:0;color:var(--panel-color);box-shadow:0 12px 15px #0003;border-radius:5px;overflow:hidden}.map-container .context-menu .menu-list li{min-width:200px;overflow:hidden;white-space:nowrap;padding:6px 10px;background:var(--panel-bgcolor);border-bottom:1px solid var(--panel-border-color);cursor:pointer}.map-container .context-menu .menu-list li span{line-height:20px}.map-container .context-menu .menu-list li a{color:#333;text-decoration:none}.map-container .context-menu .menu-list li.disabled{display:none}.map-container .context-menu .menu-list li:hover{filter:brightness(.95)}.map-container .context-menu .menu-list li:last-child{border-bottom:0}.map-container .context-menu .menu-list li span:last-child{float:right}.map-container .context-menu .key{font-size:10px;background-color:#f1f1f1;color:#333;padding:2px 5px;border-radius:3px}.map-container .tips{position:absolute;bottom:28px;left:50%;transform:translate(-50%);color:var(--panel-color);background:var(--panel-bgcolor);opacity:.8;padding:5px 10px;border-radius:5px;font-weight:700}.mind-elixir-toolbar{position:absolute;color:var(--panel-color);background:var(--panel-bgcolor);padding:10px;border-radius:5px;box-shadow:0 1px 2px #0003}.mind-elixir-toolbar svg{display:inline-block}.mind-elixir-toolbar span:active{opacity:.5}.mind-elixir-toolbar.rb{right:20px;bottom:20px}.mind-elixir-toolbar.rb span+span{margin-left:10px}.mind-elixir-toolbar.lt{font-size:20px;left:20px;top:20px}.mind-elixir-toolbar.lt span{display:block}.mind-elixir-toolbar.lt span+span{margin-top:10px}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-0cdd387c.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-30da91e8.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-68534840.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-de7701e4.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-1ae6bd74.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-07d8e303.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-5d53e70a.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-3398dd02.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-ed0b7437.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-74444efd.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-9be7ceb8.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-9163df9c.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-51814d27.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-5e28753b.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-1e6f9579.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-0f60d1b8.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-c76c5d69.woff) format("woff"),url(/assets/KaTeX_Main-Bold-138ac28d.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-99cd42a3.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-a6f7ec0d.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-70ee1f64.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-97479ca6.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-f1d6ef86.woff) format("woff"),url(/assets/KaTeX_Main-Italic-0d85ae7c.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-c2342cd8.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-c6368d87.woff) format("woff"),url(/assets/KaTeX_Main-Regular-d0332f52.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-dc47344d.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-850c0af5.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-f9377ab0.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-7af58c5e.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-8a8d2445.woff) format("woff"),url(/assets/KaTeX_Math-Italic-08ce98e5.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-e99ae511.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-ece03cfd.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-1ece03f7.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-00b26ac8.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-91ee6750.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-3931dd81.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-68e8c73e.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-11e4dc8a.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-f36ea897.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-036d4e95.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-d96cdf2b.woff) format("woff"),url(/assets/KaTeX_Script-Regular-1c67f068.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-6b47c401.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-c943cc98.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-95b6d2f1.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-d04c5421.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-2014c523.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-a6b2099f.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/assets/KaTeX_Size3-Regular-6ab6b62e.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-500e04d5.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-a4af7d41.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-99f9c675.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-c647367d.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-71d517d6.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-e14fed02.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-f01f3e87.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.22"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.mindmap-container[data-v-7ae591fd]{height:100vh;width:100%;position:relative;background:white;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;overflow:visible}.zoom-controls[data-v-7ae591fd]{position:absolute;top:20px;right:20px;display:flex;align-items:center;gap:8px;background:white;border-radius:8px;padding:8px;box-shadow:0 2px 8px #0000001a;z-index:1000}.zoom-btn[data-v-7ae591fd]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid #e0e0e0;border-radius:4px;background:white;color:#666;cursor:pointer;transition:all .2s ease}.zoom-btn[data-v-7ae591fd]:hover{background:#f5f5f5;border-color:#ccc;color:#333}.zoom-btn[data-v-7ae591fd]:active{background:#e0e0e0;transform:scale(.95)}.zoom-level[data-v-7ae591fd]{font-size:12px;color:#666;font-weight:500;min-width:40px;text-align:center}.zoom-controls.welcome-mode[data-v-7ae591fd]{background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(102,8,116,.1);box-shadow:0 4px 20px #0000001a}.zoom-controls.welcome-mode .zoom-btn[data-v-7ae591fd]{background:rgba(255,255,255,.8);border-color:#66087433;color:#660874}.zoom-controls.welcome-mode .zoom-btn[data-v-7ae591fd]:hover{background:rgba(255,255,255,.95);border-color:#6608744d;color:#5a0666}.zoom-controls.welcome-mode .zoom-level[data-v-7ae591fd]{color:#660874}.save-controls[data-v-7ae591fd]{position:absolute;bottom:20px;right:20px;z-index:1000;display:flex;gap:12px}.save-btn[data-v-7ae591fd]{display:flex;align-items:center;gap:8px;padding:12px 20px;background:#660874;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 12px #6608744d}.save-btn[data-v-7ae591fd]:hover{background:#5a0666;transform:translateY(-2px);box-shadow:0 6px 16px #66087466}.save-btn[data-v-7ae591fd]:active{transform:translateY(0);box-shadow:0 2px 8px #6608744d}.save-btn svg[data-v-7ae591fd]{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none}.refresh-btn[data-v-7ae591fd]{display:flex;align-items:center;gap:8px;padding:12px 20px;background:#28a745;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 12px #28a7454d}.refresh-btn[data-v-7ae591fd]:hover{background:#218838;transform:translateY(-2px);box-shadow:0 6px 16px #28a74566}.refresh-btn[data-v-7ae591fd]:active{transform:translateY(0);box-shadow:0 2px 8px #28a7454d}.refresh-btn svg[data-v-7ae591fd]{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none}.mindmap-el[data-v-7ae591fd]{height:100%;width:100%;background:white;border:none;outline:none;overflow:visible;position:relative}.welcome-page[data-v-7ae591fd]{height:100vh;width:100%;margin-left:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);color:#37352f;position:relative;z-index:999;transition:all .4s cubic-bezier(.4,0,.2,1);border-left:none}.welcome-page.ai-sidebar-collapsed[data-v-7ae591fd]{width:100%;margin-left:0}.welcome-content[data-v-7ae591fd]{text-align:center;max-width:800px;padding:40px;background:white;border-radius:20px;border:2px solid #660874;box-shadow:0 8px 32px #00000026;position:relative;z-index:1001;margin-left:100px;transition:all .4s cubic-bezier(.4,0,.2,1)}.welcome-content.ai-sidebar-collapsed[data-v-7ae591fd]{margin-left:0}.welcome-header h1[data-v-7ae591fd]{font-size:3rem;margin:0 0 20px;font-weight:700;color:#37352f;text-shadow:none}.welcome-subtitle[data-v-7ae591fd]{font-size:1.2rem;margin:0 0 40px;color:#6b7280;font-weight:300}.welcome-features[data-v-7ae591fd]{display:flex;flex-direction:column;gap:30px;margin:40px 0;align-items:center}.feature-item[data-v-7ae591fd]{display:flex;align-items:center;gap:20px;padding:20px;background:rgba(255,255,255,.8);border-radius:15px;border:1px solid rgba(102,8,116,.1);transition:all .3s ease;box-shadow:0 4px 20px #00000014;width:100%;max-width:500px;justify-content:flex-start}.feature-item[data-v-7ae591fd]:hover{transform:translateY(-5px);background:rgba(255,255,255,.95);box-shadow:0 8px 32px #0000001f}.feature-icon[data-v-7ae591fd]{font-size:2.5rem;min-width:60px;color:#660874;display:flex;align-items:center;justify-content:center;flex-shrink:0}.feature-text[data-v-7ae591fd]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.feature-text h3[data-v-7ae591fd]{margin:0 0 10px;font-size:1.3rem;font-weight:600;color:#37352f;text-align:center}.feature-text p[data-v-7ae591fd]{margin:0;color:#6b7280;line-height:1.5;text-align:center}.welcome-tips[data-v-7ae591fd]{margin-top:30px;padding:20px;background:rgba(255,255,255,.8);border-radius:15px;border:1px solid rgba(102,8,116,.1);box-shadow:0 4px 20px #00000014}.welcome-tips p[data-v-7ae591fd]{margin:0;color:#6b7280;font-size:1rem}[data-v-7ae591fd] .mind-elixir{height:100%;width:100%;position:relative;overflow:hidden;background:transparent;border:none;outline:none}[data-v-7ae591fd] .mind-elixir .map-container{height:100%;width:100%;position:relative}[data-v-7ae591fd] .mind-elixir .map-canvas{transition:none}[data-v-7ae591fd] .map-container .topic{background:#ffffff!important;border:2px solid #e0e0e0!important;border-radius:8px!important;padding:12px 16px!important;box-shadow:0 2px 8px #0000001a!important;transition:all .3s ease!important;cursor:pointer!important;min-width:120px!important;max-width:300px!important;text-align:center!important;font-size:14px!important;font-weight:500!important;color:#333!important;position:relative!important}[data-v-7ae591fd] .map-container .topic:hover{border-color:#007bff!important;box-shadow:0 4px 12px #007bff33!important;transform:translateY(-2px)!important}[data-v-7ae591fd] .map-container .topic.selected{border-color:#007bff!important;background:#f8f9ff!important;box-shadow:0 4px 12px #007bff4d!important}.context-menu[data-v-7ae591fd]{position:absolute;background:rgba(255,255,255,.95);border-radius:12px;padding:8px;box-shadow:0 8px 24px #00000026;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(0,0,0,.1);z-index:1000;display:flex;flex-direction:row;gap:4px;align-items:center;min-width:auto;white-space:nowrap;animation:menuFadeIn-7ae591fd .2s ease;transform:translate(-50%)}@keyframes menuFadeIn-7ae591fd{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.context-menu-item[data-v-7ae591fd]{width:36px;height:36px;border:none;border-radius:8px;background:transparent;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;position:relative}.context-menu-item[data-v-7ae591fd]:hover{background:rgba(0,0,0,.05);color:#333;transform:scale(1.05)}.context-menu-item.delete[data-v-7ae591fd]:hover{background:rgba(220,53,69,.1);color:#dc3545}.context-menu-item.ask-ai[data-v-7ae591fd]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;border:2px solid #5a67d8;box-shadow:0 2px 8px #667eea4d;position:relative}.context-menu-item.ask-ai[data-v-7ae591fd]:hover{background:linear-gradient(135deg,#5a67d8 0%,#667eea 100%);color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.context-menu-item.ask-ai svg[data-v-7ae591fd]{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2))}.context-menu-item svg[data-v-7ae591fd]{width:16px;height:16px}.context-menu-item[data-v-7ae591fd]:after{content:attr(title);position:absolute;bottom:-30px;left:50%;transform:translate(-50%);background:rgba(0,0,0,.8);color:#fff;padding:4px 8px;border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;visibility:hidden;transition:all .2s ease;z-index:1001;pointer-events:none}.context-menu-item[data-v-7ae591fd]:hover:after{opacity:1;visibility:visible}.context-menu-item[data-v-7ae591fd]:before{content:"";position:absolute;bottom:-8px;left:50%;transform:translate(-50%);border:4px solid transparent;border-top-color:#000c;opacity:0;visibility:hidden;transition:all .2s ease;pointer-events:none}.context-menu-item[data-v-7ae591fd]:hover:before{opacity:1;visibility:visible}.ai-input-area[data-v-7ae591fd]{position:absolute;width:300px;background:white;border-radius:12px;box-shadow:0 8px 32px #0000001f;z-index:1001;animation:slideInDown-7ae591fd .3s ease}@keyframes slideInDown-7ae591fd{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.ai-input-header[data-v-7ae591fd]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e9ecef;background:#f8f9fa;border-radius:12px 12px 0 0}.ai-input-title[data-v-7ae591fd]{font-size:16px;font-weight:600;color:#2c3e50}.ai-close-btn[data-v-7ae591fd]{background:none;border:none;cursor:pointer;padding:4px 8px;border-radius:6px;color:#6c757d;font-size:18px;line-height:1;transition:all .2s ease}.ai-close-btn[data-v-7ae591fd]:hover{background:#e9ecef;color:#495057}.ai-input-content[data-v-7ae591fd]{padding:20px}.ai-input-content textarea[data-v-7ae591fd]{width:100%;padding:12px;border:2px solid #e9ecef;border-radius:8px;font-size:14px;line-height:1.5;resize:none;transition:border-color .2s ease;font-family:inherit;margin-bottom:16px;box-sizing:border-box}.ai-input-content textarea[data-v-7ae591fd]:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.ai-input-content textarea[data-v-7ae591fd]:disabled{background:#f8f9fa;color:#6c757d;cursor:not-allowed}.ai-input-actions[data-v-7ae591fd]{display:flex;justify-content:center;align-items:center;gap:8px}.btn-cancel[data-v-7ae591fd],.btn-submit[data-v-7ae591fd]{padding:8px 16px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;border:none}.btn-cancel[data-v-7ae591fd]{background:#6c757d;color:#fff}.btn-cancel[data-v-7ae591fd]:hover:not(:disabled){background:#5a6268}.btn-submit[data-v-7ae591fd]{background:#007bff;color:#fff}.btn-submit[data-v-7ae591fd]:hover:not(:disabled){background:#0056b3;transform:translateY(-1px)}.btn-cancel[data-v-7ae591fd]:disabled,.btn-submit[data-v-7ae591fd]:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 768px){.context-menu[data-v-7ae591fd]{padding:6px;gap:3px}.context-menu-item[data-v-7ae591fd]{width:32px;height:32px}.context-menu-item svg[data-v-7ae591fd]{width:14px;height:14px}}.node-description[data-v-7ae591fd]{font-size:11px;color:#666;margin-top:6px;padding:6px 8px;background:rgba(0,0,0,.03);border-radius:4px;max-width:250px;word-wrap:break-word;line-height:1.3;border-left:3px solid #e0e0e0;display:block}.topic[data-v-7ae591fd]{min-width:150px;max-width:400px;padding:8px 12px;border-radius:8px;background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important;margin:4px!important}.topic.root[data-v-7ae591fd],.topic.main[data-v-7ae591fd],.topic.sub[data-v-7ae591fd]{background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important}.topic[data-v-7ae591fd]{background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important;border-radius:8px!important;padding:8px 12px!important;min-width:150px!important;max-width:400px!important;margin:4px!important;position:relative!important}.tpc-line[data-v-7ae591fd]{position:absolute!important;z-index:1!important}.tpc-line.tpc-line-left[data-v-7ae591fd]{right:100%!important;top:50%!important;transform:translateY(-50%)!important}.tpc-line.tpc-line-right[data-v-7ae591fd]{left:100%!important;top:50%!important;transform:translateY(-50%)!important}.tpc-line.tpc-line-top[data-v-7ae591fd]{bottom:100%!important;left:50%!important;transform:translate(-50%)!important}.tpc-line.tpc-line-bottom[data-v-7ae591fd]{top:100%!important;left:50%!important;transform:translate(-50%)!important}.topic[data-v-7ae591fd]:before{display:none!important}.topic[data-v-7ae591fd]:after{display:none!important}.topic[style*="border-radius: 50%"][data-v-7ae591fd]{border-radius:8px!important;background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important}.topic[data-v-7ae591fd]:not(:has(.children)){background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important;border-radius:8px!important}.topic[style][data-v-7ae591fd]{background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important;border-radius:8px!important;padding:8px 12px!important;min-width:150px!important;max-width:400px!important;margin:4px!important}.topic .topic-text[data-v-7ae591fd]{font-weight:500;color:#333;margin-bottom:4px;line-height:1.4}.topic .topic-text.markdown-content[data-v-7ae591fd]{font-size:12px;line-height:1.3}.topic table[data-v-7ae591fd],.topic .text table[data-v-7ae591fd],.topic .topic-text table[data-v-7ae591fd],.topic .topic-text.markdown-content table[data-v-7ae591fd]{border-collapse:collapse!important;width:100%!important;margin:4px 0!important;font-size:11px!important;border:2px solid #333!important;border-radius:6px!important;box-shadow:0 2px 8px #00000014!important;background-color:#fafafa!important;overflow:hidden!important;display:table!important;white-space:normal!important}.topic table th[data-v-7ae591fd],.topic table td[data-v-7ae591fd],.topic .text table th[data-v-7ae591fd],.topic .text table td[data-v-7ae591fd],.topic .topic-text table th[data-v-7ae591fd],.topic .topic-text table td[data-v-7ae591fd],.topic .topic-text.markdown-content table th[data-v-7ae591fd],.topic .topic-text.markdown-content table td[data-v-7ae591fd]{border:2px solid #333!important;padding:6px 8px!important;text-align:left!important;vertical-align:top!important;display:table-cell!important;position:relative!important;white-space:normal!important}.topic .topic-text.markdown-content table th[data-v-7ae591fd],.topic .text table th[data-v-7ae591fd],.topic table th[data-v-7ae591fd]{background-color:#f5f5f5!important;font-weight:600!important;color:#333!important;text-align:center!important;border-bottom:2px solid #333!important}.topic .topic-text.markdown-content table td[data-v-7ae591fd],.topic .text table td[data-v-7ae591fd],.topic table td[data-v-7ae591fd]{background-color:#fff!important}.topic .topic-text.markdown-content table tr[data-v-7ae591fd],.topic .text table tr[data-v-7ae591fd],.topic table tr[data-v-7ae591fd]{display:table-row!important;white-space:normal!important}.topic .topic-text.markdown-content table tr:nth-child(2n) td[data-v-7ae591fd],.topic .text table tr:nth-child(2n) td[data-v-7ae591fd]{background-color:#f8f8f8!important}.topic .topic-text.markdown-content table tr:hover td[data-v-7ae591fd],.topic .text table tr:hover td[data-v-7ae591fd]{background-color:#f0f8ff!important}.topic .topic-text.markdown-content table th[data-v-7ae591fd]:not(:last-child),.topic .topic-text.markdown-content table td[data-v-7ae591fd]:not(:last-child),.topic .text table th[data-v-7ae591fd]:not(:last-child),.topic .text table td[data-v-7ae591fd]:not(:last-child){border-right:1px solid #e0e0e0!important}.topic .topic-text.markdown-content table tr:not(:last-child) td[data-v-7ae591fd],.topic .text table tr:not(:last-child) td[data-v-7ae591fd]{border-bottom:1px solid #e0e0e0!important}.topic .topic-text.markdown-content code[data-v-7ae591fd]{background-color:#f4f4f4;padding:1px 3px;border-radius:2px;font-family:Courier New,monospace;font-size:10px}.topic .topic-text.markdown-content pre[data-v-7ae591fd]{background-color:#f4f4f4;padding:4px;border-radius:3px;overflow-x:auto;font-size:10px}.topic .topic-text.markdown-content ul[data-v-7ae591fd],.topic .topic-text.markdown-content ol[data-v-7ae591fd]{margin:2px 0;padding-left:12px}.topic .topic-text.markdown-content li[data-v-7ae591fd]{margin:1px 0;font-size:11px}.topic .topic-text.markdown-content strong[data-v-7ae591fd]{font-weight:600}.topic .topic-text.markdown-content em[data-v-7ae591fd]{font-style:italic}.topic h1[data-v-7ae591fd],.topic h2[data-v-7ae591fd],.topic h3[data-v-7ae591fd],.topic h4[data-v-7ae591fd],.topic h5[data-v-7ae591fd],.topic h6[data-v-7ae591fd]{margin:4px 0;font-weight:600;color:#333}.topic p[data-v-7ae591fd]{margin:2px 0;line-height:1.3;color:#666}.topic ul[data-v-7ae591fd],.topic ol[data-v-7ae591fd]{margin:2px 0;padding-left:16px}.topic li[data-v-7ae591fd]{margin:1px 0;line-height:1.3;color:#666}.topic strong[data-v-7ae591fd],.topic b[data-v-7ae591fd]{font-weight:600;color:#333}.topic em[data-v-7ae591fd],.topic i[data-v-7ae591fd]{font-style:italic;color:#555}.topic code[data-v-7ae591fd]{background:#f5f5f5;padding:1px 3px;border-radius:3px;font-family:monospace;font-size:.9em}.topic-content[data-v-7ae591fd]{display:flex;flex-direction:column;align-items:flex-start}.ai-sidebar-wrapper[data-v-9bdaf8f5]{position:fixed;top:0;left:0;z-index:1000}.ai-sidebar[data-v-9bdaf8f5]{position:relative;width:420px;height:100vh;background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);color:#37352f;transition:transform .4s cubic-bezier(.4,0,.2,1);box-shadow:none;overflow:visible}.ai-sidebar[data-v-9bdaf8f5]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 80%,rgba(102,8,116,.1) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(102,8,116,.1) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(102,8,116,.05) 0%,transparent 50%);pointer-events:none}.sidebar-collapsed[data-v-9bdaf8f5]{transform:translate(-420px)}.sidebar-toggle[data-v-9bdaf8f5]{position:fixed;top:20px;width:45px;height:45px;background:#660874;border-radius:0 8px 8px 0;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:2px 0 10px #0003,0 0 20px #6608744d;color:#fff;transition:all .4s cubic-bezier(.4,0,.2,1);font-weight:700;z-index:100000;border:2px solid #660874}.sidebar-toggle[data-v-9bdaf8f5]:hover{background:#5a0666;transform:scale(1.1);color:#fff;box-shadow:3px 0 15px #00000026;border-color:#5a0666}.sidebar-content[data-v-9bdaf8f5]{height:100%;overflow-y:auto;padding:20px;position:relative;z-index:10}.sidebar-header[data-v-9bdaf8f5]{text-align:center;margin-bottom:35px;padding-bottom:25px;border-bottom:1px solid rgba(102,8,116,.1);position:relative;z-index:10}.sidebar-header h3[data-v-9bdaf8f5]{margin:0 0 15px;font-size:28px;font-weight:600;color:#000}.sidebar-header p[data-v-9bdaf8f5]{margin:0;color:#333;font-size:16px}.collapse-hint[data-v-9bdaf8f5]{margin-top:10px;text-align:center}.collapse-hint small[data-v-9bdaf8f5]{color:#666;font-size:12px;opacity:.8}.section[data-v-9bdaf8f5]{margin-bottom:35px;background:rgba(255,255,255,.95);border-radius:12px;padding:25px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:2px solid rgba(102,8,116,.2);box-shadow:0 4px 20px #0000001a;position:relative;z-index:10;overflow:hidden}.section h4[data-v-9bdaf8f5]{margin:0 0 20px;font-size:20px;font-weight:600;display:flex;align-items:center;gap:8px;color:#000}.input-group[data-v-9bdaf8f5]{margin-bottom:20px}.input-group label[data-v-9bdaf8f5]{display:block;margin-bottom:10px;font-weight:500;font-size:16px;color:#000}.input-group textarea[data-v-9bdaf8f5]{width:100%;padding:12px;border:none;border-radius:8px;background:rgba(255,255,255,.9);color:#333;font-size:14px;resize:vertical;min-height:80px;font-family:Monaco,Menlo,Ubuntu Mono,monospace}.input-group textarea[data-v-9bdaf8f5]:focus{outline:none;box-shadow:0 0 0 2px #ffffff80}.button-group[data-v-9bdaf8f5]{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.save-button-group[data-v-9bdaf8f5]{margin-top:15px}.btn-primary[data-v-9bdaf8f5],.btn-secondary[data-v-9bdaf8f5],.btn-clear[data-v-9bdaf8f5],.btn-copy[data-v-9bdaf8f5],.btn-import[data-v-9bdaf8f5],.btn-preview[data-v-9bdaf8f5],.btn-test[data-v-9bdaf8f5],.btn-save[data-v-9bdaf8f5]{padding:12px 18px;border:none;border-radius:8px;font-size:16px;font-weight:500;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:6px}.btn-primary[data-v-9bdaf8f5]{background:#660874;color:#fff}.btn-primary[data-v-9bdaf8f5]:hover:not(:disabled){background:#5a0666;transform:translateY(-2px)}.btn-secondary[data-v-9bdaf8f5]{background:#2196F3;color:#fff}.btn-secondary[data-v-9bdaf8f5]:hover:not(:disabled){background:#1976D2;transform:translateY(-2px)}.btn-clear[data-v-9bdaf8f5]{background:#f44336;color:#fff}.btn-clear[data-v-9bdaf8f5]:hover{background:#d32f2f;transform:translateY(-2px)}.btn-copy[data-v-9bdaf8f5]{background:#FF9800;color:#fff}.btn-copy[data-v-9bdaf8f5]:hover{background:#F57C00;transform:translateY(-2px)}.btn-import[data-v-9bdaf8f5]{background:#9C27B0;color:#fff}.btn-import[data-v-9bdaf8f5]:hover{background:#7B1FA2;transform:translateY(-2px)}.btn-preview[data-v-9bdaf8f5]{background:#00BCD4;color:#fff}.btn-preview[data-v-9bdaf8f5]:hover{background:#0097A7;transform:translateY(-2px)}.btn-test[data-v-9bdaf8f5]{background:#FF5722;color:#fff}.file-upload-area[data-v-9bdaf8f5]{position:relative;border:2px dashed rgba(102,8,116,.5);border-radius:8px;padding:20px;text-align:center;transition:all .3s ease;cursor:pointer;background:rgba(255,255,255,.9)}.file-upload-area[data-v-9bdaf8f5]:hover{border-color:#66087480;background:rgba(255,255,255,.8)}.file-upload-area.drag-over[data-v-9bdaf8f5]{border-color:#660874cc;background:rgba(102,8,116,.1);transform:scale(1.02)}.file-input[data-v-9bdaf8f5]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.file-upload-placeholder[data-v-9bdaf8f5]{display:flex;flex-direction:column;align-items:center;gap:8px}.upload-icon[data-v-9bdaf8f5]{font-size:24px}.upload-text[data-v-9bdaf8f5]{font-size:16px;font-weight:500;color:#000}.upload-hint[data-v-9bdaf8f5]{font-size:14px;color:#333}.file-info[data-v-9bdaf8f5]{margin-top:20px;padding:16px;background:rgba(255,255,255,.9);border-radius:12px;border:1px solid rgba(102,8,116,.15);box-shadow:0 2px 8px #0000000d}.file-details[data-v-9bdaf8f5]{display:flex;align-items:center;justify-content:space-between;gap:12px}.file-info-left[data-v-9bdaf8f5]{display:flex;flex-direction:column;gap:4px;flex:1}.file-name[data-v-9bdaf8f5]{font-weight:600;color:#37352f;font-size:16px;line-height:1.4}.file-size[data-v-9bdaf8f5]{color:#6b7280;font-size:13px;font-weight:500}.btn-remove[data-v-9bdaf8f5]{background:linear-gradient(135deg,#ff6b6b 0%,#ee5a52 100%);color:#fff;border:none;border-radius:8px;padding:8px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;box-shadow:0 2px 4px #ff6b6b4d}.btn-remove[data-v-9bdaf8f5]:hover{background:linear-gradient(135deg,#ff5252 0%,#d32f2f 100%);transform:translateY(-1px);box-shadow:0 4px 8px #ff6b6b66}.btn-remove[data-v-9bdaf8f5]:active{transform:translateY(0);box-shadow:0 2px 4px #ff6b6b4d}.file-action-buttons[data-v-9bdaf8f5]{margin-top:20px;padding-top:20px;border-top:1px solid rgba(102,8,116,.1)}.btn-test[data-v-9bdaf8f5]:hover{background:#E64A19;transform:translateY(-2px)}.btn-save[data-v-9bdaf8f5]{background:#660874;color:#fff}.btn-save[data-v-9bdaf8f5]:hover{background:#5a0666;transform:translateY(-2px)}button[data-v-9bdaf8f5]:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.result-container[data-v-9bdaf8f5]{background:rgba(255,255,255,.8);border-radius:8px;padding:18px;margin-top:15px;border:1px solid rgba(102,8,116,.1)}.markdown-result[data-v-9bdaf8f5]{background:rgba(255,255,255,.95);border:1px solid rgba(102,8,116,.15);border-radius:8px;padding:15px;margin:0 0 20px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;line-height:1.5;color:#333;overflow-x:auto;white-space:pre-wrap;word-break:break-word;max-height:300px;overflow-y:auto;resize:vertical}.json-result[data-v-9bdaf8f5]{background:rgba(102,8,116,.1);border-radius:6px;padding:15px;margin:0 0 20px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;color:#37352f;overflow-x:auto;white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto}.history-list[data-v-9bdaf8f5]{max-height:200px;overflow-y:auto;overflow-x:hidden}.history-item[data-v-9bdaf8f5]{background:rgba(255,255,255,.8);border-radius:8px;padding:12px;margin-bottom:8px;cursor:pointer;transition:all .3s ease;border:1px solid rgba(102,8,116,.1);overflow:hidden;word-wrap:break-word;word-break:break-word}.history-item[data-v-9bdaf8f5]:hover{background:rgba(255,255,255,.95);transform:translate(5px);box-shadow:0 4px 16px #0000001a}.history-title[data-v-9bdaf8f5]{font-weight:500;margin-bottom:6px;font-size:16px;color:#37352f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-time[data-v-9bdaf8f5]{font-size:14px;color:#6b7280;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.processing-status[data-v-9bdaf8f5]{display:flex;align-items:center;gap:8px;padding:15px;background:rgba(102,8,116,.1);border:1px solid rgba(102,8,116,.3);border-radius:8px;margin:20px 0;color:#660874;font-size:16px}.spinner[data-v-9bdaf8f5]{width:20px;height:20px;border:2px solid #f3f3f3;border-top:2px solid #660874;border-radius:50%;animation:spin-9bdaf8f5 1s linear infinite}@keyframes spin-9bdaf8f5{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-preview[data-v-9bdaf8f5]:disabled{opacity:.6;cursor:not-allowed;background:rgba(255,255,255,.2)}.sidebar-content[data-v-9bdaf8f5]::-webkit-scrollbar,.json-result[data-v-9bdaf8f5]::-webkit-scrollbar,.history-list[data-v-9bdaf8f5]::-webkit-scrollbar{width:6px}.sidebar-content[data-v-9bdaf8f5]::-webkit-scrollbar-track,.json-result[data-v-9bdaf8f5]::-webkit-scrollbar-track,.history-list[data-v-9bdaf8f5]::-webkit-scrollbar-track{background:rgba(102,8,116,.1);border-radius:3px}.sidebar-content[data-v-9bdaf8f5]::-webkit-scrollbar-thumb,.json-result[data-v-9bdaf8f5]::-webkit-scrollbar-thumb,.history-list[data-v-9bdaf8f5]::-webkit-scrollbar-thumb{background:rgba(102,8,116,.3);border-radius:3px}.sidebar-content[data-v-9bdaf8f5]::-webkit-scrollbar-thumb:hover,.json-result[data-v-9bdaf8f5]::-webkit-scrollbar-thumb:hover,.history-list[data-v-9bdaf8f5]::-webkit-scrollbar-thumb:hover{background:rgba(102,8,116,.5)}@media (max-width: 768px){.ai-sidebar[data-v-9bdaf8f5]{width:300px}.sidebar-content[data-v-9bdaf8f5],.section[data-v-9bdaf8f5]{padding:15px}.button-group[data-v-9bdaf8f5]{flex-direction:column}.btn-primary[data-v-9bdaf8f5],.btn-secondary[data-v-9bdaf8f5],.btn-clear[data-v-9bdaf8f5],.btn-copy[data-v-9bdaf8f5],.btn-import[data-v-9bdaf8f5]{width:100%;justify-content:center}}.markdown-test[data-v-68a00828]{max-width:1200px;margin:0 auto;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.test-section[data-v-68a00828]{margin-bottom:30px;padding:20px;border:1px solid #e0e0e0;border-radius:8px;background:#f9f9f9}.markdown-input[data-v-68a00828]{width:100%;padding:12px;border:1px solid #ddd;border-radius:4px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;line-height:1.5;resize:vertical}.rendered-content[data-v-68a00828]{background:white;padding:20px;border-radius:4px;border:1px solid #ddd;min-height:200px}.test-cases[data-v-68a00828]{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.test-btn[data-v-68a00828],.test-case-btn[data-v-68a00828]{padding:8px 16px;border:1px solid #007bff;background:white;color:#007bff;border-radius:4px;cursor:pointer;transition:all .2s ease}.test-btn[data-v-68a00828]:hover,.test-case-btn[data-v-68a00828]:hover{background:#007bff;color:#fff}h2[data-v-68a00828],h3[data-v-68a00828]{color:#333;margin-bottom:15px}h2[data-v-68a00828]{border-bottom:2px solid #007bff;padding-bottom:10px}.error[data-v-68a00828]{color:#dc3545;background:#f8d7da;border:1px solid #f5c6cb;padding:10px;border-radius:4px}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100vh;margin:0;padding:0;display:flex}.main-content{flex:1;margin-left:350px;transition:margin-left .3s ease;width:calc(100% - 350px)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Avenir,Helvetica,Arial,sans-serif;background:#f5f5f5}.mind-elixir,.mind-elixir .map-container{height:100%;width:100%}.test-mode-toggle{position:fixed;top:20px;right:20px;z-index:1000}.test-btn{padding:10px 20px;background:#007bff;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;box-shadow:0 2px 8px #007bff4d;transition:all .2s ease}.test-btn:hover{background:#0056b3;transform:translateY(-1px);box-shadow:0 4px 12px #007bff66}.test-mode{height:100vh;overflow:auto} +.map-container{-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif;-webkit-user-select:none;user-select:none;height:100%;width:100%;overflow:hidden;font-size:15px;outline:none;touch-action:none;background-color:var(--bgcolor)}.map-container *{box-sizing:border-box}.map-container::-webkit-scrollbar{width:0px;height:0px}.map-container .selected{outline:2px solid var(--selected);outline-offset:1px}.map-container .hyper-link{text-decoration:none;margin-left:.3em}.map-container me-main>me-wrapper>me-parent>me-epd{top:50%;transform:translateY(-50%)}.map-container me-epd{top:100%;transform:translateY(-50%)}.map-container .lhs{direction:rtl}.map-container .lhs>me-wrapper>me-parent>me-epd{left:-10px}.map-container .lhs me-epd{left:5px}.map-container .lhs me-tpc{direction:ltr}.map-container .rhs>me-wrapper>me-parent>me-epd{right:-10px}.map-container .rhs me-epd{right:5px}.map-container .map-canvas{position:relative;-webkit-user-select:none;user-select:none;width:fit-content;transform:scale(1)}.map-container .map-canvas me-nodes{position:relative;display:flex;justify-content:center;align-items:center;height:max-content;width:max-content;padding:var(--map-padding)}.map-container me-main>me-wrapper{position:relative;margin:var(--main-gap-y) var(--main-gap-x)}.map-container me-main>me-wrapper>me-parent{margin:10px;padding:0}.map-container me-main>me-wrapper>me-parent>me-tpc{border-radius:var(--main-radius);background-color:var(--main-bgcolor);border:2px solid var(--main-color);color:var(--main-color);padding:8px 25px}.map-container me-wrapper{display:block;pointer-events:none;width:fit-content}.map-container me-children,.map-container me-parent{display:inline-block;vertical-align:middle}.map-container me-root{position:relative;margin:45px 0;z-index:10}.map-container me-root me-tpc{font-size:25px;color:var(--root-color);padding:10px 30px;border-radius:var(--root-radius);border:var(--root-border-color) 2px solid;background-color:var(--root-bgcolor)}.map-container me-parent{position:relative;cursor:pointer;padding:6px var(--node-gap-x);margin-top:var(--node-gap-y);z-index:10}.map-container me-parent me-tpc{position:relative;border-radius:3px;color:var(--color);padding:var(--topic-padding)}.map-container me-parent me-tpc .insert-preview{position:absolute;width:100%;left:0;z-index:9}.map-container me-parent me-tpc .show{background:#7ad5ff;pointer-events:none;opacity:.7;border-radius:3px}.map-container me-parent me-tpc .before{height:14px;top:-14px}.map-container me-parent me-tpc .in{height:100%;top:0}.map-container me-parent me-tpc .after{height:14px;bottom:-14px}.map-container me-parent me-epd{position:absolute;height:18px;width:18px;opacity:.8;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgdD0iMTY1NjY1NDcxNzI0MiIgY2xhc3M9Imljb24iIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIHZlcnNpb249IjEuMSIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CiAgICA8cGF0aCBkPSJNNTEyIDc0LjY2NjY2N0MyNzAuOTMzMzMzIDc0LjY2NjY2NyA3NC42NjY2NjcgMjcwLjkzMzMzMyA3NC42NjY2NjcgNTEyUzI3MC45MzMzMzMgOTQ5LjMzMzMzMyA1MTIgOTQ5LjMzMzMzMyA5NDkuMzMzMzMzIDc1My4wNjY2NjcgOTQ5LjMzMzMzMyA1MTIgNzUzLjA2NjY2NyA3NC42NjY2NjcgNTEyIDc0LjY2NjY2N3oiIHN0cm9rZS13aWR0aD0iNTQiIHN0cm9rZT0nYmxhY2snIGZpbGw9J3doaXRlJyA+PC9wYXRoPgogICAgPHBhdGggZD0iTTY4Mi42NjY2NjcgNDgwaC0xMzguNjY2NjY3VjM0MS4zMzMzMzNjMC0xNy4wNjY2NjctMTQuOTMzMzMzLTMyLTMyLTMycy0zMiAxNC45MzMzMzMtMzIgMzJ2MTM4LjY2NjY2N0gzNDEuMzMzMzMzYy0xNy4wNjY2NjcgMC0zMiAxNC45MzMzMzMtMzIgMzJzMTQuOTMzMzMzIDMyIDMyIDMyaDEzOC42NjY2NjdWNjgyLjY2NjY2N2MwIDE3LjA2NjY2NyAxNC45MzMzMzMgMzIgMzIgMzJzMzItMTQuOTMzMzMzIDMyLTMydi0xMzguNjY2NjY3SDY4Mi42NjY2NjdjMTcuMDY2NjY3IDAgMzItMTQuOTMzMzMzIDMyLTMycy0xNC45MzMzMzMtMzItMzItMzJ6Ij48L3BhdGg+Cjwvc3ZnPg==);background-repeat:no-repeat;background-size:contain;background-position:center;pointer-events:all;z-index:9}.map-container me-parent me-epd.minus{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgdD0iMTY1NjY1NTU2NDk4NSIgY2xhc3M9Imljb24iIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIHZlcnNpb249IjEuMSIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CiAgICA8cGF0aCBkPSJNNTEyIDc0LjY2NjY2N0MyNzAuOTMzMzMzIDc0LjY2NjY2NyA3NC42NjY2NjcgMjcwLjkzMzMzMyA3NC42NjY2NjcgNTEyUzI3MC45MzMzMzMgOTQ5LjMzMzMzMyA1MTIgOTQ5LjMzMzMzMyA5NDkuMzMzMzMzIDc1My4wNjY2NjcgOTQ5LjMzMzMzMyA1MTIgNzUzLjA2NjY2NyA3NC42NjY2NjcgNTEyIDc0LjY2NjY2N3oiIHN0cm9rZS13aWR0aD0iNTQiIHN0cm9rZT0nYmxhY2snIGZpbGw9J3doaXRlJyA+PC9wYXRoPgogICAgPHBhdGggZD0iTTY4Mi42NjY2NjcgNTQ0SDM0MS4zMzMzMzNjLTE3LjA2NjY2NyAwLTMyLTE0LjkzMzMzMy0zMi0zMnMxNC45MzMzMzMtMzIgMzItMzJoMzQxLjMzMzMzNGMxNy4wNjY2NjcgMCAzMiAxNC45MzMzMzMgMzIgMzJzLTE0LjkzMzMzMyAzMi0zMiAzMnoiPjwvcGF0aD4KPC9zdmc+)!important;transition:opacity .3s;opacity:0}@media (hover: hover){.map-container me-parent me-epd.minus:hover{opacity:.8}}@media (hover: none){.map-container me-parent me-epd.minus{opacity:.8}}.map-container .icon{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden}.map-container .lines,.map-container .summary,.map-container .subLines,.map-container .topiclinks,.map-container .linkcontroller{position:absolute;height:102%;width:100%;top:0;left:0}.map-container .topiclinks,.map-container .linkcontroller,.map-container .summary{pointer-events:none;z-index:20}.map-container .summary>g,.map-container .topiclinks>g{cursor:pointer;pointer-events:stroke;z-index:20}.map-container .lines,.map-container .subLines{pointer-events:none}.map-container #input-box{position:absolute;top:0;left:0;width:max-content;max-width:35em;direction:ltr;-webkit-user-select:auto;user-select:auto;pointer-events:auto;color:var(--color);background-color:var(--bgcolor);z-index:100}.map-container me-tpc{display:block;max-width:35em;white-space:pre-wrap;pointer-events:all}.map-container me-tpc>*{pointer-events:none}.map-container me-tpc>a,.map-container me-tpc>iframe{pointer-events:auto}.map-container me-tpc>.text{display:inline-block}.map-container me-tpc>.text a{pointer-events:auto}.map-container me-tpc>img{display:block;margin-bottom:8px;object-fit:cover}.map-container me-tpc table{white-space:normal!important;border-collapse:collapse;width:100%;margin:4px 0;font-size:11px;border:2px solid #333;border-radius:6px;box-shadow:0 2px 8px #00000014;background-color:#fafafa;overflow:hidden;display:table!important}.map-container me-tpc table th,.map-container me-tpc table td{border:2px solid #333;padding:6px 8px;text-align:left;vertical-align:top;display:table-cell!important;position:relative;white-space:normal!important}.map-container me-tpc table th{background-color:#f5f5f5;font-weight:600;color:#333;text-align:center;border-bottom:2px solid #333}.map-container me-tpc table td{background-color:#fff}.map-container me-tpc table tr{display:table-row!important;white-space:normal!important}.map-container me-tpc table tr:nth-child(2n) td{background-color:#f8f8f8}.map-container me-tpc table tr:hover td{background-color:#f0f8ff}.map-container me-tpc table th:not(:last-child),.map-container me-tpc table td:not(:last-child){border-right:2px solid #333}.map-container me-tpc table tr:not(:last-child) td{border-bottom:2px solid #333}.map-container .circle{position:absolute;height:10px;width:10px;margin-top:-5px;margin-left:-5px;border-radius:100%;background:#757575;border:2px solid #ffffff;z-index:50;cursor:pointer}.map-container .tags{direction:ltr}.map-container .tags span{display:inline-block;border-radius:3px;padding:2px 4px;background:#d6f0f8;color:#276f86;margin:2px 4px 0 0;font-size:12px;line-height:1.3em}.map-container .icons{display:inline-block;direction:ltr;margin-left:5px}.map-container .icons span{display:inline-block;line-height:1.3em}.map-container .mind-elixir-ghost{position:fixed;top:-100%;left:-100%;box-sizing:content-box;opacity:.5;background-color:var(--main-bgcolor);border:2px solid var(--main-color);color:var(--main-color);max-width:200px;width:fit-content;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:8px 16px;border-radius:6px}.map-container .selection-area{background:#4f90f22d;border:1px solid #4f90f2}.map-container .context-menu{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99}.map-container .context-menu .menu-list{position:fixed;list-style:none;margin:0;padding:0;color:var(--panel-color);box-shadow:0 12px 15px #0003;border-radius:5px;overflow:hidden}.map-container .context-menu .menu-list li{min-width:200px;overflow:hidden;white-space:nowrap;padding:6px 10px;background:var(--panel-bgcolor);border-bottom:1px solid var(--panel-border-color);cursor:pointer}.map-container .context-menu .menu-list li span{line-height:20px}.map-container .context-menu .menu-list li a{color:#333;text-decoration:none}.map-container .context-menu .menu-list li.disabled{display:none}.map-container .context-menu .menu-list li:hover{filter:brightness(.95)}.map-container .context-menu .menu-list li:last-child{border-bottom:0}.map-container .context-menu .menu-list li span:last-child{float:right}.map-container .context-menu .key{font-size:10px;background-color:#f1f1f1;color:#333;padding:2px 5px;border-radius:3px}.map-container .tips{position:absolute;bottom:28px;left:50%;transform:translate(-50%);color:var(--panel-color);background:var(--panel-bgcolor);opacity:.8;padding:5px 10px;border-radius:5px;font-weight:700}.mind-elixir-toolbar{position:absolute;color:var(--panel-color);background:var(--panel-bgcolor);padding:10px;border-radius:5px;box-shadow:0 1px 2px #0003}.mind-elixir-toolbar svg{display:inline-block}.mind-elixir-toolbar span:active{opacity:.5}.mind-elixir-toolbar.rb{right:20px;bottom:20px}.mind-elixir-toolbar.rb span+span{margin-left:10px}.mind-elixir-toolbar.lt{font-size:20px;left:20px;top:20px}.mind-elixir-toolbar.lt span{display:block}.mind-elixir-toolbar.lt span+span{margin-top:10px}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-0cdd387c.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-30da91e8.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-68534840.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-de7701e4.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-1ae6bd74.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-07d8e303.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-5d53e70a.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-3398dd02.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-ed0b7437.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-74444efd.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-9be7ceb8.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-9163df9c.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-51814d27.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-5e28753b.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-1e6f9579.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-0f60d1b8.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-c76c5d69.woff) format("woff"),url(/assets/KaTeX_Main-Bold-138ac28d.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-99cd42a3.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-a6f7ec0d.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-70ee1f64.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-97479ca6.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-f1d6ef86.woff) format("woff"),url(/assets/KaTeX_Main-Italic-0d85ae7c.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-c2342cd8.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-c6368d87.woff) format("woff"),url(/assets/KaTeX_Main-Regular-d0332f52.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-dc47344d.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-850c0af5.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-f9377ab0.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-7af58c5e.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-8a8d2445.woff) format("woff"),url(/assets/KaTeX_Math-Italic-08ce98e5.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-e99ae511.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-ece03cfd.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-1ece03f7.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-00b26ac8.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-91ee6750.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-3931dd81.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-68e8c73e.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-11e4dc8a.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-f36ea897.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-036d4e95.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-d96cdf2b.woff) format("woff"),url(/assets/KaTeX_Script-Regular-1c67f068.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-6b47c401.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-c943cc98.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-95b6d2f1.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-d04c5421.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-2014c523.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-a6b2099f.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/assets/KaTeX_Size3-Regular-6ab6b62e.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-500e04d5.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-a4af7d41.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-99f9c675.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-c647367d.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-71d517d6.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-e14fed02.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-f01f3e87.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.22"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.mindmap-container[data-v-ce711d91]{height:100vh;width:100%;position:relative;background:white;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;overflow:visible}.save-controls[data-v-ce711d91]{position:absolute;bottom:20px;right:20px;z-index:1000;display:flex;gap:12px}.save-btn[data-v-ce711d91]{display:flex;align-items:center;gap:8px;padding:12px 20px;background:#660874;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 12px #6608744d}.save-btn[data-v-ce711d91]:hover{background:#5a0666;transform:translateY(-2px);box-shadow:0 6px 16px #66087466}.save-btn[data-v-ce711d91]:active{transform:translateY(0);box-shadow:0 2px 8px #6608744d}.save-btn svg[data-v-ce711d91]{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none}.refresh-btn[data-v-ce711d91]{display:flex;align-items:center;gap:8px;padding:12px 20px;background:#28a745;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 12px #28a7454d}.refresh-btn[data-v-ce711d91]:hover{background:#218838;transform:translateY(-2px);box-shadow:0 6px 16px #28a74566}.refresh-btn[data-v-ce711d91]:active{transform:translateY(0);box-shadow:0 2px 8px #28a7454d}.refresh-btn svg[data-v-ce711d91]{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none}.mindmap-el[data-v-ce711d91]{height:100%;width:100%;background:white;border:none;outline:none;overflow:visible;position:relative}.welcome-page[data-v-ce711d91]{height:100vh;width:100%;margin-left:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);color:#37352f;position:relative;z-index:999;transition:all .4s cubic-bezier(.4,0,.2,1);border-left:none}.welcome-page.ai-sidebar-collapsed[data-v-ce711d91]{width:100%;margin-left:0}.welcome-content[data-v-ce711d91]{text-align:center;max-width:800px;padding:40px;background:white;border-radius:20px;border:2px solid #660874;box-shadow:0 8px 32px #00000026;position:relative;z-index:1001;margin-left:100px;transition:all .4s cubic-bezier(.4,0,.2,1)}.welcome-content.ai-sidebar-collapsed[data-v-ce711d91]{margin-left:0}.welcome-header h1[data-v-ce711d91]{font-size:3rem;margin:0 0 20px;font-weight:700;color:#37352f;text-shadow:none}.welcome-subtitle[data-v-ce711d91]{font-size:1.2rem;margin:0 0 40px;color:#6b7280;font-weight:300}.welcome-features[data-v-ce711d91]{display:flex;flex-direction:column;gap:30px;margin:40px 0;align-items:center}.feature-item[data-v-ce711d91]{display:flex;align-items:center;gap:20px;padding:20px;background:rgba(255,255,255,.8);border-radius:15px;border:1px solid rgba(102,8,116,.1);transition:all .3s ease;box-shadow:0 4px 20px #00000014;width:100%;max-width:500px;justify-content:flex-start}.feature-item[data-v-ce711d91]:hover{transform:translateY(-5px);background:rgba(255,255,255,.95);box-shadow:0 8px 32px #0000001f}.feature-icon[data-v-ce711d91]{font-size:2.5rem;min-width:60px;color:#660874;display:flex;align-items:center;justify-content:center;flex-shrink:0}.feature-text[data-v-ce711d91]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.feature-text h3[data-v-ce711d91]{margin:0 0 10px;font-size:1.3rem;font-weight:600;color:#37352f;text-align:center}.feature-text p[data-v-ce711d91]{margin:0;color:#6b7280;line-height:1.5;text-align:center}.welcome-tips[data-v-ce711d91]{margin-top:30px;padding:20px;background:rgba(255,255,255,.8);border-radius:15px;border:1px solid rgba(102,8,116,.1);box-shadow:0 4px 20px #00000014}.welcome-tips p[data-v-ce711d91]{margin:0;color:#6b7280;font-size:1rem}[data-v-ce711d91] .mind-elixir{height:100%;width:100%;position:relative;overflow:hidden;background:transparent;border:none;outline:none}[data-v-ce711d91] .mind-elixir .map-container{height:100%;width:100%;position:relative}[data-v-ce711d91] .mind-elixir .map-canvas{transition:none}[data-v-ce711d91] .map-container .topic{background:#ffffff!important;border:2px solid #e0e0e0!important;border-radius:8px!important;padding:12px 16px!important;box-shadow:0 2px 8px #0000001a!important;transition:all .3s ease!important;cursor:pointer!important;min-width:120px!important;max-width:300px!important;text-align:center!important;font-size:14px!important;font-weight:500!important;color:#333!important;position:relative!important}[data-v-ce711d91] .map-container .topic:hover{border-color:#007bff!important;box-shadow:0 4px 12px #007bff33!important;transform:translateY(-2px)!important}[data-v-ce711d91] .map-container .topic.selected{border-color:#007bff!important;background:#f8f9ff!important;box-shadow:0 4px 12px #007bff4d!important}.context-menu[data-v-ce711d91]{position:absolute;background:rgba(255,255,255,.95);border-radius:12px;padding:8px;box-shadow:0 8px 24px #00000026;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(0,0,0,.1);z-index:1000;display:flex;flex-direction:row;gap:4px;align-items:center;min-width:auto;white-space:nowrap;animation:menuFadeIn-ce711d91 .2s ease;transform:translate(-50%)}@keyframes menuFadeIn-ce711d91{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.context-menu-item[data-v-ce711d91]{width:36px;height:36px;border:none;border-radius:8px;background:transparent;color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;position:relative}.context-menu-item[data-v-ce711d91]:hover{background:rgba(0,0,0,.05);color:#333;transform:scale(1.05)}.context-menu-item.delete[data-v-ce711d91]:hover{background:rgba(220,53,69,.1);color:#dc3545}.context-menu-item.ask-ai[data-v-ce711d91]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;border:2px solid #5a67d8;box-shadow:0 2px 8px #667eea4d;position:relative}.context-menu-item.ask-ai[data-v-ce711d91]:hover{background:linear-gradient(135deg,#5a67d8 0%,#667eea 100%);color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.context-menu-item.ask-ai svg[data-v-ce711d91]{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2))}.context-menu-item svg[data-v-ce711d91]{width:16px;height:16px}.context-menu-item[data-v-ce711d91]:after{content:attr(title);position:absolute;bottom:-30px;left:50%;transform:translate(-50%);background:rgba(0,0,0,.8);color:#fff;padding:4px 8px;border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;visibility:hidden;transition:all .2s ease;z-index:1001;pointer-events:none}.context-menu-item[data-v-ce711d91]:hover:after{opacity:1;visibility:visible}.context-menu-item[data-v-ce711d91]:before{content:"";position:absolute;bottom:-8px;left:50%;transform:translate(-50%);border:4px solid transparent;border-top-color:#000c;opacity:0;visibility:hidden;transition:all .2s ease;pointer-events:none}.context-menu-item[data-v-ce711d91]:hover:before{opacity:1;visibility:visible}.ai-input-area[data-v-ce711d91]{position:absolute;width:300px;background:white;border-radius:12px;box-shadow:0 8px 32px #0000001f;z-index:1001;animation:slideInDown-ce711d91 .3s ease}@keyframes slideInDown-ce711d91{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.ai-input-header[data-v-ce711d91]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e9ecef;background:#f8f9fa;border-radius:12px 12px 0 0}.ai-input-title[data-v-ce711d91]{font-size:16px;font-weight:600;color:#2c3e50}.ai-close-btn[data-v-ce711d91]{background:none;border:none;cursor:pointer;padding:4px 8px;border-radius:6px;color:#6c757d;font-size:18px;line-height:1;transition:all .2s ease}.ai-close-btn[data-v-ce711d91]:hover{background:#e9ecef;color:#495057}.ai-input-content[data-v-ce711d91]{padding:20px}.ai-input-content textarea[data-v-ce711d91]{width:100%;padding:12px;border:2px solid #e9ecef;border-radius:8px;font-size:14px;line-height:1.5;resize:none;transition:border-color .2s ease;font-family:inherit;margin-bottom:16px;box-sizing:border-box}.ai-input-content textarea[data-v-ce711d91]:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.ai-input-content textarea[data-v-ce711d91]:disabled{background:#f8f9fa;color:#6c757d;cursor:not-allowed}.ai-input-actions[data-v-ce711d91]{display:flex;justify-content:center;align-items:center;gap:8px}.btn-cancel[data-v-ce711d91],.btn-submit[data-v-ce711d91]{padding:8px 16px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;border:none}.btn-cancel[data-v-ce711d91]{background:#6c757d;color:#fff}.btn-cancel[data-v-ce711d91]:hover:not(:disabled){background:#5a6268}.btn-submit[data-v-ce711d91]{background:#007bff;color:#fff}.btn-submit[data-v-ce711d91]:hover:not(:disabled){background:#0056b3;transform:translateY(-1px)}.btn-cancel[data-v-ce711d91]:disabled,.btn-submit[data-v-ce711d91]:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 768px){.context-menu[data-v-ce711d91]{padding:6px;gap:3px}.context-menu-item[data-v-ce711d91]{width:32px;height:32px}.context-menu-item svg[data-v-ce711d91]{width:14px;height:14px}}.node-description[data-v-ce711d91]{font-size:11px;color:#666;margin-top:6px;padding:6px 8px;background:rgba(0,0,0,.03);border-radius:4px;max-width:250px;word-wrap:break-word;line-height:1.3;border-left:3px solid #e0e0e0;display:block}.topic[data-v-ce711d91]{min-width:150px;max-width:400px;padding:8px 12px;border-radius:8px;background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important;margin:4px!important}.topic.root[data-v-ce711d91],.topic.main[data-v-ce711d91],.topic.sub[data-v-ce711d91]{background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important}.topic[data-v-ce711d91]{background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important;border-radius:8px!important;padding:8px 12px!important;min-width:150px!important;max-width:400px!important;margin:4px!important;position:relative!important}.tpc-line[data-v-ce711d91]{position:absolute!important;z-index:1!important}.tpc-line.tpc-line-left[data-v-ce711d91]{right:100%!important;top:50%!important;transform:translateY(-50%)!important}.tpc-line.tpc-line-right[data-v-ce711d91]{left:100%!important;top:50%!important;transform:translateY(-50%)!important}.tpc-line.tpc-line-top[data-v-ce711d91]{bottom:100%!important;left:50%!important;transform:translate(-50%)!important}.tpc-line.tpc-line-bottom[data-v-ce711d91]{top:100%!important;left:50%!important;transform:translate(-50%)!important}.topic[data-v-ce711d91]:before{display:none!important}.topic[data-v-ce711d91]:after{display:none!important}.topic[style*="border-radius: 50%"][data-v-ce711d91]{border-radius:8px!important;background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important}.topic[data-v-ce711d91]:not(:has(.children)){background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important;border-radius:8px!important}.topic[style][data-v-ce711d91]{background:white!important;box-shadow:0 2px 8px #0000001a!important;border:1px solid #e0e0e0!important;border-radius:8px!important;padding:8px 12px!important;min-width:150px!important;max-width:400px!important;margin:4px!important}.topic .topic-text[data-v-ce711d91]{font-weight:500;color:#333;margin-bottom:4px;line-height:1.4}.topic .topic-text.markdown-content[data-v-ce711d91]{font-size:12px;line-height:1.3}.topic table[data-v-ce711d91],.topic .text table[data-v-ce711d91],.topic .topic-text table[data-v-ce711d91],.topic .topic-text.markdown-content table[data-v-ce711d91]{border-collapse:collapse!important;width:100%!important;margin:4px 0!important;font-size:11px!important;border:2px solid #333!important;border-radius:6px!important;box-shadow:0 2px 8px #00000014!important;background-color:#fafafa!important;overflow:hidden!important;display:table!important;white-space:normal!important}.topic table th[data-v-ce711d91],.topic table td[data-v-ce711d91],.topic .text table th[data-v-ce711d91],.topic .text table td[data-v-ce711d91],.topic .topic-text table th[data-v-ce711d91],.topic .topic-text table td[data-v-ce711d91],.topic .topic-text.markdown-content table th[data-v-ce711d91],.topic .topic-text.markdown-content table td[data-v-ce711d91]{border:2px solid #333!important;padding:6px 8px!important;text-align:left!important;vertical-align:top!important;display:table-cell!important;position:relative!important;white-space:normal!important}.topic .topic-text.markdown-content table th[data-v-ce711d91],.topic .text table th[data-v-ce711d91],.topic table th[data-v-ce711d91]{background-color:#f5f5f5!important;font-weight:600!important;color:#333!important;text-align:center!important;border-bottom:2px solid #333!important}.topic .topic-text.markdown-content table td[data-v-ce711d91],.topic .text table td[data-v-ce711d91],.topic table td[data-v-ce711d91]{background-color:#fff!important}.topic .topic-text.markdown-content table tr[data-v-ce711d91],.topic .text table tr[data-v-ce711d91],.topic table tr[data-v-ce711d91]{display:table-row!important;white-space:normal!important}.topic .topic-text.markdown-content table tr:nth-child(2n) td[data-v-ce711d91],.topic .text table tr:nth-child(2n) td[data-v-ce711d91]{background-color:#f8f8f8!important}.topic .topic-text.markdown-content table tr:hover td[data-v-ce711d91],.topic .text table tr:hover td[data-v-ce711d91]{background-color:#f0f8ff!important}.topic .topic-text.markdown-content table th[data-v-ce711d91]:not(:last-child),.topic .topic-text.markdown-content table td[data-v-ce711d91]:not(:last-child),.topic .text table th[data-v-ce711d91]:not(:last-child),.topic .text table td[data-v-ce711d91]:not(:last-child){border-right:1px solid #e0e0e0!important}.topic .topic-text.markdown-content table tr:not(:last-child) td[data-v-ce711d91],.topic .text table tr:not(:last-child) td[data-v-ce711d91]{border-bottom:1px solid #e0e0e0!important}.topic .topic-text.markdown-content code[data-v-ce711d91]{background-color:#f4f4f4;padding:1px 3px;border-radius:2px;font-family:Courier New,monospace;font-size:10px}.topic .topic-text.markdown-content pre[data-v-ce711d91]{background-color:#f4f4f4;padding:4px;border-radius:3px;overflow-x:auto;font-size:10px}.topic .topic-text.markdown-content ul[data-v-ce711d91],.topic .topic-text.markdown-content ol[data-v-ce711d91]{margin:2px 0;padding-left:12px}.topic .topic-text.markdown-content li[data-v-ce711d91]{margin:1px 0;font-size:11px}.topic .topic-text.markdown-content strong[data-v-ce711d91]{font-weight:600}.topic .topic-text.markdown-content em[data-v-ce711d91]{font-style:italic}.topic h1[data-v-ce711d91],.topic h2[data-v-ce711d91],.topic h3[data-v-ce711d91],.topic h4[data-v-ce711d91],.topic h5[data-v-ce711d91],.topic h6[data-v-ce711d91]{margin:4px 0;font-weight:600;color:#333}.topic p[data-v-ce711d91]{margin:2px 0;line-height:1.3;color:#666}.topic ul[data-v-ce711d91],.topic ol[data-v-ce711d91]{margin:2px 0;padding-left:16px}.topic li[data-v-ce711d91]{margin:1px 0;line-height:1.3;color:#666}.topic strong[data-v-ce711d91],.topic b[data-v-ce711d91]{font-weight:600;color:#333}.topic em[data-v-ce711d91],.topic i[data-v-ce711d91]{font-style:italic;color:#555}.topic code[data-v-ce711d91]{background:#f5f5f5;padding:1px 3px;border-radius:3px;font-family:monospace;font-size:.9em}.topic-content[data-v-ce711d91]{display:flex;flex-direction:column;align-items:flex-start}.ai-sidebar-wrapper[data-v-d0b1a702]{position:fixed;top:0;left:0;z-index:1000}.ai-sidebar[data-v-d0b1a702]{position:relative;width:420px;height:100vh;background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);color:#37352f;transition:transform .4s cubic-bezier(.4,0,.2,1);box-shadow:none;overflow:visible}.ai-sidebar[data-v-d0b1a702]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 80%,rgba(102,8,116,.1) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(102,8,116,.1) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(102,8,116,.05) 0%,transparent 50%);pointer-events:none}.sidebar-collapsed[data-v-d0b1a702]{transform:translate(-420px)}.sidebar-toggle[data-v-d0b1a702]{position:fixed;top:20px;width:45px;height:45px;background:#660874;border-radius:0 8px 8px 0;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:2px 0 10px #0003,0 0 20px #6608744d;color:#fff;transition:all .4s cubic-bezier(.4,0,.2,1);font-weight:700;z-index:100000;border:2px solid #660874}.sidebar-toggle[data-v-d0b1a702]:hover{background:#5a0666;transform:scale(1.1);color:#fff;box-shadow:3px 0 15px #00000026;border-color:#5a0666}.sidebar-content[data-v-d0b1a702]{height:100%;overflow-y:auto;padding:20px;position:relative;z-index:10}.sidebar-header[data-v-d0b1a702]{text-align:center;margin-bottom:35px;padding-bottom:25px;border-bottom:1px solid rgba(102,8,116,.1);position:relative;z-index:10}.sidebar-header h3[data-v-d0b1a702]{margin:0 0 15px;font-size:28px;font-weight:600;color:#000}.sidebar-header p[data-v-d0b1a702]{margin:0;color:#333;font-size:16px}.collapse-hint[data-v-d0b1a702]{margin-top:10px;text-align:center}.collapse-hint small[data-v-d0b1a702]{color:#666;font-size:12px;opacity:.8}.section[data-v-d0b1a702]{margin-bottom:35px;background:rgba(255,255,255,.95);border-radius:12px;padding:25px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:2px solid rgba(102,8,116,.2);box-shadow:0 4px 20px #0000001a;position:relative;z-index:10;overflow:hidden}.section h4[data-v-d0b1a702]{margin:0 0 20px;font-size:20px;font-weight:600;display:flex;align-items:center;gap:8px;color:#000}.input-group[data-v-d0b1a702]{margin-bottom:20px}.input-group label[data-v-d0b1a702]{display:block;margin-bottom:10px;font-weight:500;font-size:16px;color:#000}.input-group textarea[data-v-d0b1a702]{width:100%;padding:12px;border:none;border-radius:8px;background:rgba(255,255,255,.9);color:#333;font-size:14px;resize:vertical;min-height:80px;font-family:Monaco,Menlo,Ubuntu Mono,monospace}.input-group textarea[data-v-d0b1a702]:focus{outline:none;box-shadow:0 0 0 2px #ffffff80}.button-group[data-v-d0b1a702]{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.save-button-group[data-v-d0b1a702]{margin-top:15px}.btn-primary[data-v-d0b1a702],.btn-secondary[data-v-d0b1a702],.btn-clear[data-v-d0b1a702],.btn-copy[data-v-d0b1a702],.btn-import[data-v-d0b1a702],.btn-preview[data-v-d0b1a702],.btn-test[data-v-d0b1a702],.btn-save[data-v-d0b1a702]{padding:12px 18px;border:none;border-radius:8px;font-size:16px;font-weight:500;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:6px}.btn-primary[data-v-d0b1a702]{background:#660874;color:#fff}.btn-primary[data-v-d0b1a702]:hover:not(:disabled){background:#5a0666;transform:translateY(-2px)}.btn-secondary[data-v-d0b1a702]{background:#2196F3;color:#fff}.btn-secondary[data-v-d0b1a702]:hover:not(:disabled){background:#1976D2;transform:translateY(-2px)}.btn-clear[data-v-d0b1a702]{background:#f44336;color:#fff}.btn-clear[data-v-d0b1a702]:hover{background:#d32f2f;transform:translateY(-2px)}.btn-copy[data-v-d0b1a702]{background:#FF9800;color:#fff}.btn-copy[data-v-d0b1a702]:hover{background:#F57C00;transform:translateY(-2px)}.btn-import[data-v-d0b1a702]{background:#9C27B0;color:#fff}.btn-import[data-v-d0b1a702]:hover{background:#7B1FA2;transform:translateY(-2px)}.btn-preview[data-v-d0b1a702]{background:#00BCD4;color:#fff}.btn-preview[data-v-d0b1a702]:hover{background:#0097A7;transform:translateY(-2px)}.btn-test[data-v-d0b1a702]{background:#FF5722;color:#fff}.file-upload-area[data-v-d0b1a702]{position:relative;border:2px dashed rgba(102,8,116,.5);border-radius:8px;padding:20px;text-align:center;transition:all .3s ease;cursor:pointer;background:rgba(255,255,255,.9)}.file-upload-area[data-v-d0b1a702]:hover{border-color:#66087480;background:rgba(255,255,255,.8)}.file-upload-area.drag-over[data-v-d0b1a702]{border-color:#660874cc;background:rgba(102,8,116,.1);transform:scale(1.02)}.file-input[data-v-d0b1a702]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.file-upload-placeholder[data-v-d0b1a702]{display:flex;flex-direction:column;align-items:center;gap:8px}.upload-icon[data-v-d0b1a702]{font-size:24px}.upload-text[data-v-d0b1a702]{font-size:16px;font-weight:500;color:#000}.upload-hint[data-v-d0b1a702]{font-size:14px;color:#333}.file-info[data-v-d0b1a702]{margin-top:20px;padding:16px;background:rgba(255,255,255,.9);border-radius:12px;border:1px solid rgba(102,8,116,.15);box-shadow:0 2px 8px #0000000d}.file-details[data-v-d0b1a702]{display:flex;align-items:center;justify-content:space-between;gap:12px}.file-info-left[data-v-d0b1a702]{display:flex;flex-direction:column;gap:4px;flex:1}.file-name[data-v-d0b1a702]{font-weight:600;color:#37352f;font-size:16px;line-height:1.4}.file-size[data-v-d0b1a702]{color:#6b7280;font-size:13px;font-weight:500}.btn-remove[data-v-d0b1a702]{background:linear-gradient(135deg,#ff6b6b 0%,#ee5a52 100%);color:#fff;border:none;border-radius:8px;padding:8px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;box-shadow:0 2px 4px #ff6b6b4d}.btn-remove[data-v-d0b1a702]:hover{background:linear-gradient(135deg,#ff5252 0%,#d32f2f 100%);transform:translateY(-1px);box-shadow:0 4px 8px #ff6b6b66}.btn-remove[data-v-d0b1a702]:active{transform:translateY(0);box-shadow:0 2px 4px #ff6b6b4d}.file-action-buttons[data-v-d0b1a702]{margin-top:20px;padding-top:20px;border-top:1px solid rgba(102,8,116,.1)}.btn-test[data-v-d0b1a702]:hover{background:#E64A19;transform:translateY(-2px)}.btn-save[data-v-d0b1a702]{background:#660874;color:#fff}.btn-save[data-v-d0b1a702]:hover{background:#5a0666;transform:translateY(-2px)}button[data-v-d0b1a702]:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.result-container[data-v-d0b1a702]{background:rgba(255,255,255,.8);border-radius:8px;padding:18px;margin-top:15px;border:1px solid rgba(102,8,116,.1)}.markdown-result[data-v-d0b1a702]{background:rgba(255,255,255,.95);border:1px solid rgba(102,8,116,.15);border-radius:8px;padding:15px;margin:0 0 20px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;line-height:1.5;color:#333;overflow-x:auto;white-space:pre-wrap;word-break:break-word;max-height:300px;overflow-y:auto;resize:vertical}.json-result[data-v-d0b1a702]{background:rgba(102,8,116,.1);border-radius:6px;padding:15px;margin:0 0 20px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;color:#37352f;overflow-x:auto;white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto}.history-list[data-v-d0b1a702]{max-height:200px;overflow-y:auto;overflow-x:hidden}.history-item[data-v-d0b1a702]{background:rgba(255,255,255,.8);border-radius:8px;padding:12px;margin-bottom:8px;cursor:pointer;transition:all .3s ease;border:1px solid rgba(102,8,116,.1);overflow:hidden;word-wrap:break-word;word-break:break-word}.history-item[data-v-d0b1a702]:hover{background:rgba(255,255,255,.95);transform:translate(5px);box-shadow:0 4px 16px #0000001a}.history-title[data-v-d0b1a702]{font-weight:500;margin-bottom:6px;font-size:16px;color:#37352f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-time[data-v-d0b1a702]{font-size:14px;color:#6b7280;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.processing-status[data-v-d0b1a702]{display:flex;align-items:center;gap:8px;padding:15px;background:rgba(102,8,116,.1);border:1px solid rgba(102,8,116,.3);border-radius:8px;margin:20px 0;color:#660874;font-size:16px}.spinner[data-v-d0b1a702]{width:20px;height:20px;border:2px solid #f3f3f3;border-top:2px solid #660874;border-radius:50%;animation:spin-d0b1a702 1s linear infinite}@keyframes spin-d0b1a702{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-preview[data-v-d0b1a702]:disabled{opacity:.6;cursor:not-allowed;background:rgba(255,255,255,.2)}.sidebar-content[data-v-d0b1a702]::-webkit-scrollbar,.json-result[data-v-d0b1a702]::-webkit-scrollbar,.history-list[data-v-d0b1a702]::-webkit-scrollbar{width:6px}.sidebar-content[data-v-d0b1a702]::-webkit-scrollbar-track,.json-result[data-v-d0b1a702]::-webkit-scrollbar-track,.history-list[data-v-d0b1a702]::-webkit-scrollbar-track{background:rgba(102,8,116,.1);border-radius:3px}.sidebar-content[data-v-d0b1a702]::-webkit-scrollbar-thumb,.json-result[data-v-d0b1a702]::-webkit-scrollbar-thumb,.history-list[data-v-d0b1a702]::-webkit-scrollbar-thumb{background:rgba(102,8,116,.3);border-radius:3px}.sidebar-content[data-v-d0b1a702]::-webkit-scrollbar-thumb:hover,.json-result[data-v-d0b1a702]::-webkit-scrollbar-thumb:hover,.history-list[data-v-d0b1a702]::-webkit-scrollbar-thumb:hover{background:rgba(102,8,116,.5)}@media (max-width: 768px){.ai-sidebar[data-v-d0b1a702]{width:300px}.sidebar-content[data-v-d0b1a702],.section[data-v-d0b1a702]{padding:15px}.button-group[data-v-d0b1a702]{flex-direction:column}.btn-primary[data-v-d0b1a702],.btn-secondary[data-v-d0b1a702],.btn-clear[data-v-d0b1a702],.btn-copy[data-v-d0b1a702],.btn-import[data-v-d0b1a702]{width:100%;justify-content:center}}.markdown-test[data-v-68a00828]{max-width:1200px;margin:0 auto;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.test-section[data-v-68a00828]{margin-bottom:30px;padding:20px;border:1px solid #e0e0e0;border-radius:8px;background:#f9f9f9}.markdown-input[data-v-68a00828]{width:100%;padding:12px;border:1px solid #ddd;border-radius:4px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;line-height:1.5;resize:vertical}.rendered-content[data-v-68a00828]{background:white;padding:20px;border-radius:4px;border:1px solid #ddd;min-height:200px}.test-cases[data-v-68a00828]{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.test-btn[data-v-68a00828],.test-case-btn[data-v-68a00828]{padding:8px 16px;border:1px solid #007bff;background:white;color:#007bff;border-radius:4px;cursor:pointer;transition:all .2s ease}.test-btn[data-v-68a00828]:hover,.test-case-btn[data-v-68a00828]:hover{background:#007bff;color:#fff}h2[data-v-68a00828],h3[data-v-68a00828]{color:#333;margin-bottom:15px}h2[data-v-68a00828]{border-bottom:2px solid #007bff;padding-bottom:10px}.error[data-v-68a00828]{color:#dc3545;background:#f8d7da;border:1px solid #f5c6cb;padding:10px;border-radius:4px}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100vh;margin:0;padding:0;display:flex}.main-content{flex:1;margin-left:350px;transition:margin-left .3s ease;width:calc(100% - 350px)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Avenir,Helvetica,Arial,sans-serif;background:#f5f5f5}.mind-elixir,.mind-elixir .map-container{height:100%;width:100%}.test-mode-toggle{position:fixed;top:20px;right:20px;z-index:1000}.test-btn{padding:10px 20px;background:#007bff;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;box-shadow:0 2px 8px #007bff4d;transition:all .2s ease}.test-btn:hover{background:#0056b3;transform:translateY(-1px);box-shadow:0 4px 12px #007bff66}.test-mode{height:100vh;overflow:auto} diff --git a/frontend/dist/assets/index-7802977e.js b/frontend/dist/assets/index-7802977e.js new file mode 100644 index 0000000..9c6aabf --- /dev/null +++ b/frontend/dist/assets/index-7802977e.js @@ -0,0 +1,606 @@ +var Id=Object.defineProperty;var _d=(t,e,r)=>e in t?Id(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Ge=(t,e,r)=>(_d(t,typeof e!="symbol"?e+"":e,r),r);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))n(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function r(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(s){if(s.ep)return;s.ep=!0;const i=r(s);fetch(s.href,i)}})();/** +* @vue/shared v3.5.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function wa(t){const e=Object.create(null);for(const r of t.split(","))e[r]=1;return r=>r in e}const Ye={},Cn=[],tr=()=>{},Rc=()=>!1,Rs=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),xa=t=>t.startsWith("onUpdate:"),yt=Object.assign,ka=(t,e)=>{const r=t.indexOf(e);r>-1&&t.splice(r,1)},Od=Object.prototype.hasOwnProperty,He=(t,e)=>Od.call(t,e),Ce=Array.isArray,Mn=t=>Is(t)==="[object Map]",Ic=t=>Is(t)==="[object Set]",De=t=>typeof t=="function",ut=t=>typeof t=="string",Zr=t=>typeof t=="symbol",it=t=>t!==null&&typeof t=="object",_c=t=>(it(t)||De(t))&&De(t.then)&&De(t.catch),Oc=Object.prototype.toString,Is=t=>Oc.call(t),Ld=t=>Is(t).slice(8,-1),Lc=t=>Is(t)==="[object Object]",Sa=t=>ut(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,Qn=wa(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),_s=t=>{const e=Object.create(null);return r=>e[r]||(e[r]=t(r))},zd=/-(\w)/g,Wr=_s(t=>t.replace(zd,(e,r)=>r?r.toUpperCase():"")),Fd=/\B([A-Z])/g,Qr=_s(t=>t.replace(Fd,"-$1").toLowerCase()),zc=_s(t=>t.charAt(0).toUpperCase()+t.slice(1)),ii=_s(t=>t?`on${zc(t)}`:""),Vr=(t,e)=>!Object.is(t,e),K0=(t,...e)=>{for(let r=0;r{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:n,value:r})},$i=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let zo;const Os=()=>zo||(zo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function On(t){if(Ce(t)){const e={};for(let r=0;r{if(r){const n=r.split(Bd);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}function Ln(t){let e="";if(ut(t))e=t;else if(Ce(t))for(let r=0;r!!(t&&t.__v_isRef===!0),ur=t=>ut(t)?t:t==null?"":Ce(t)||it(t)&&(t.toString===Oc||!De(t.toString))?Bc(t)?ur(t.value):JSON.stringify(t,Pc,2):String(t),Pc=(t,e)=>Bc(e)?Pc(t,e.value):Mn(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((r,[n,s],i)=>(r[ai(n,i)+" =>"]=s,r),{})}:Ic(e)?{[`Set(${e.size})`]:[...e.values()].map(r=>ai(r))}:Zr(e)?ai(e):it(e)&&!Ce(e)&&!Lc(e)?String(e):e,ai=(t,e="")=>{var r;return Zr(t)?`Symbol(${(r=t.description)!=null?r:e})`:t};/** +* @vue/reactivity v3.5.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let It;class Ud{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=It,!e&&It&&(this.index=(It.scopes||(It.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,r;if(this.scopes)for(e=0,r=this.scopes.length;e0&&--this._on===0&&(It=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){this._active=!1;let r,n;for(r=0,n=this.effects.length;r0)return;if(t0){let e=t0;for(t0=void 0;e;){const r=e.next;e.next=void 0,e.flags&=-9,e=r}}let t;for(;e0;){let e=e0;for(e0=void 0;e;){const r=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(n){t||(t=n)}e=r}}if(t)throw t}function Uc(t){for(let e=t.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Vc(t){let e,r=t.depsTail,n=r;for(;n;){const s=n.prevDep;n.version===-1?(n===r&&(r=s),Ea(n),Wd(n)):e=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=s}t.deps=e,t.depsTail=r}function Bi(t){for(let e=t.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(Wc(e.dep.computed)||e.dep.version!==e.version))return!0;return!!t._dirty}function Wc(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===c0)||(t.globalVersion=c0,!t.isSSR&&t.flags&128&&(!t.deps&&!t._dirty||!Bi(t))))return;t.flags|=2;const e=t.dep,r=Ze,n=rr;Ze=t,rr=!0;try{Uc(t);const s=t.fn(t._value);(e.version===0||Vr(s,t._value))&&(t.flags|=128,t._value=s,e.version++)}catch(s){throw e.version++,s}finally{Ze=r,rr=n,Vc(t),t.flags&=-3}}function Ea(t,e=!1){const{dep:r,prevSub:n,nextSub:s}=t;if(n&&(n.nextSub=s,t.prevSub=void 0),s&&(s.prevSub=n,t.nextSub=void 0),r.subs===t&&(r.subs=n,!n&&r.computed)){r.computed.flags&=-5;for(let i=r.computed.deps;i;i=i.nextDep)Ea(i,!0)}!e&&!--r.sc&&r.map&&r.map.delete(r.key)}function Wd(t){const{prevDep:e,nextDep:r}=t;e&&(e.nextDep=r,t.prevDep=void 0),r&&(r.prevDep=e,t.nextDep=void 0)}let rr=!0;const Gc=[];function Rr(){Gc.push(rr),rr=!1}function Ir(){const t=Gc.pop();rr=t===void 0?!0:t}function Fo(t){const{cleanup:e}=t;if(t.cleanup=void 0,e){const r=Ze;Ze=void 0;try{e()}finally{Ze=r}}}let c0=0;class Gd{constructor(e,r){this.sub=e,this.dep=r,this.version=r.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Ca{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!Ze||!rr||Ze===this.computed)return;let r=this.activeLink;if(r===void 0||r.sub!==Ze)r=this.activeLink=new Gd(Ze,this),Ze.deps?(r.prevDep=Ze.depsTail,Ze.depsTail.nextDep=r,Ze.depsTail=r):Ze.deps=Ze.depsTail=r,Kc(r);else if(r.version===-1&&(r.version=this.version,r.nextDep)){const n=r.nextDep;n.prevDep=r.prevDep,r.prevDep&&(r.prevDep.nextDep=n),r.prevDep=Ze.depsTail,r.nextDep=void 0,Ze.depsTail.nextDep=r,Ze.depsTail=r,Ze.deps===r&&(Ze.deps=n)}return r}trigger(e){this.version++,c0++,this.notify(e)}notify(e){Ta();try{for(let r=this.subs;r;r=r.prevSub)r.sub.notify()&&r.sub.dep.notify()}finally{Aa()}}}function Kc(t){if(t.dep.sc++,t.sub.flags&4){const e=t.dep.computed;if(e&&!t.dep.subs){e.flags|=20;for(let n=e.deps;n;n=n.nextDep)Kc(n)}const r=t.dep.subs;r!==t&&(t.prevSub=r,r&&(r.nextSub=t)),t.dep.subs=t}}const Pi=new WeakMap,hn=Symbol(""),Hi=Symbol(""),u0=Symbol("");function wt(t,e,r){if(rr&&Ze){let n=Pi.get(t);n||Pi.set(t,n=new Map);let s=n.get(r);s||(n.set(r,s=new Ca),s.map=n,s.key=r),s.track()}}function Ar(t,e,r,n,s,i){const a=Pi.get(t);if(!a){c0++;return}const o=l=>{l&&l.trigger()};if(Ta(),e==="clear")a.forEach(o);else{const l=Ce(t),c=l&&Sa(r);if(l&&r==="length"){const d=Number(n);a.forEach((f,p)=>{(p==="length"||p===u0||!Zr(p)&&p>=d)&&o(f)})}else switch((r!==void 0||a.has(void 0))&&o(a.get(r)),c&&o(a.get(u0)),e){case"add":l?c&&o(a.get("length")):(o(a.get(hn)),Mn(t)&&o(a.get(Hi)));break;case"delete":l||(o(a.get(hn)),Mn(t)&&o(a.get(Hi)));break;case"set":Mn(t)&&o(a.get(hn));break}}Aa()}function wn(t){const e=Pe(t);return e===t?e:(wt(e,"iterate",u0),Wt(t)?e:e.map(bt))}function Ls(t){return wt(t=Pe(t),"iterate",u0),t}const Kd={__proto__:null,[Symbol.iterator](){return li(this,Symbol.iterator,bt)},concat(...t){return wn(this).concat(...t.map(e=>Ce(e)?wn(e):e))},entries(){return li(this,"entries",t=>(t[1]=bt(t[1]),t))},every(t,e){return wr(this,"every",t,e,void 0,arguments)},filter(t,e){return wr(this,"filter",t,e,r=>r.map(bt),arguments)},find(t,e){return wr(this,"find",t,e,bt,arguments)},findIndex(t,e){return wr(this,"findIndex",t,e,void 0,arguments)},findLast(t,e){return wr(this,"findLast",t,e,bt,arguments)},findLastIndex(t,e){return wr(this,"findLastIndex",t,e,void 0,arguments)},forEach(t,e){return wr(this,"forEach",t,e,void 0,arguments)},includes(...t){return ci(this,"includes",t)},indexOf(...t){return ci(this,"indexOf",t)},join(t){return wn(this).join(t)},lastIndexOf(...t){return ci(this,"lastIndexOf",t)},map(t,e){return wr(this,"map",t,e,void 0,arguments)},pop(){return jn(this,"pop")},push(...t){return jn(this,"push",t)},reduce(t,...e){return $o(this,"reduce",t,e)},reduceRight(t,...e){return $o(this,"reduceRight",t,e)},shift(){return jn(this,"shift")},some(t,e){return wr(this,"some",t,e,void 0,arguments)},splice(...t){return jn(this,"splice",t)},toReversed(){return wn(this).toReversed()},toSorted(t){return wn(this).toSorted(t)},toSpliced(...t){return wn(this).toSpliced(...t)},unshift(...t){return jn(this,"unshift",t)},values(){return li(this,"values",bt)}};function li(t,e,r){const n=Ls(t),s=n[e]();return n!==t&&!Wt(t)&&(s._next=s.next,s.next=()=>{const i=s._next();return i.value&&(i.value=r(i.value)),i}),s}const Yd=Array.prototype;function wr(t,e,r,n,s,i){const a=Ls(t),o=a!==t&&!Wt(t),l=a[e];if(l!==Yd[e]){const f=l.apply(t,i);return o?bt(f):f}let c=r;a!==t&&(o?c=function(f,p){return r.call(this,bt(f),p,t)}:r.length>2&&(c=function(f,p){return r.call(this,f,p,t)}));const d=l.call(a,c,n);return o&&s?s(d):d}function $o(t,e,r,n){const s=Ls(t);let i=r;return s!==t&&(Wt(t)?r.length>3&&(i=function(a,o,l){return r.call(this,a,o,l,t)}):i=function(a,o,l){return r.call(this,a,bt(o),l,t)}),s[e](i,...n)}function ci(t,e,r){const n=Pe(t);wt(n,"iterate",u0);const s=n[e](...r);return(s===-1||s===!1)&&Ra(r[0])?(r[0]=Pe(r[0]),n[e](...r)):s}function jn(t,e,r=[]){Rr(),Ta();const n=Pe(t)[e].apply(t,r);return Aa(),Ir(),n}const Xd=wa("__proto__,__v_isRef,__isVue"),Yc=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(Zr));function Jd(t){Zr(t)||(t=String(t));const e=Pe(this);return wt(e,"has",t),e.hasOwnProperty(t)}class Xc{constructor(e=!1,r=!1){this._isReadonly=e,this._isShallow=r}get(e,r,n){if(r==="__v_skip")return e.__v_skip;const s=this._isReadonly,i=this._isShallow;if(r==="__v_isReactive")return!s;if(r==="__v_isReadonly")return s;if(r==="__v_isShallow")return i;if(r==="__v_raw")return n===(s?i?oh:eu:i?Qc:Zc).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const a=Ce(e);if(!s){let l;if(a&&(l=Kd[r]))return l;if(r==="hasOwnProperty")return Jd}const o=Reflect.get(e,r,kt(e)?e:n);return(Zr(r)?Yc.has(r):Xd(r))||(s||wt(e,"get",r),i)?o:kt(o)?a&&Sa(r)?o:o.value:it(o)?s?tu(o):Na(o):o}}class Jc extends Xc{constructor(e=!1){super(!1,e)}set(e,r,n,s){let i=e[r];if(!this._isShallow){const l=Gr(i);if(!Wt(n)&&!Gr(n)&&(i=Pe(i),n=Pe(n)),!Ce(e)&&kt(i)&&!kt(n))return l||(i.value=n),!0}const a=Ce(e)&&Sa(r)?Number(r)t,N0=t=>Reflect.getPrototypeOf(t);function rh(t,e,r){return function(...n){const s=this.__v_raw,i=Pe(s),a=Mn(i),o=t==="entries"||t===Symbol.iterator&&a,l=t==="keys"&&a,c=s[t](...n),d=r?qi:e?os:bt;return!e&&wt(i,"iterate",l?Hi:hn),{next(){const{value:f,done:p}=c.next();return p?{value:f,done:p}:{value:o?[d(f[0]),d(f[1])]:d(f),done:p}},[Symbol.iterator](){return this}}}}function D0(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function nh(t,e){const r={get(s){const i=this.__v_raw,a=Pe(i),o=Pe(s);t||(Vr(s,o)&&wt(a,"get",s),wt(a,"get",o));const{has:l}=N0(a),c=e?qi:t?os:bt;if(l.call(a,s))return c(i.get(s));if(l.call(a,o))return c(i.get(o));i!==a&&i.get(s)},get size(){const s=this.__v_raw;return!t&&wt(Pe(s),"iterate",hn),s.size},has(s){const i=this.__v_raw,a=Pe(i),o=Pe(s);return t||(Vr(s,o)&&wt(a,"has",s),wt(a,"has",o)),s===o?i.has(s):i.has(s)||i.has(o)},forEach(s,i){const a=this,o=a.__v_raw,l=Pe(o),c=e?qi:t?os:bt;return!t&&wt(l,"iterate",hn),o.forEach((d,f)=>s.call(i,c(d),c(f),a))}};return yt(r,t?{add:D0("add"),set:D0("set"),delete:D0("delete"),clear:D0("clear")}:{add(s){!e&&!Wt(s)&&!Gr(s)&&(s=Pe(s));const i=Pe(this);return N0(i).has.call(i,s)||(i.add(s),Ar(i,"add",s,s)),this},set(s,i){!e&&!Wt(i)&&!Gr(i)&&(i=Pe(i));const a=Pe(this),{has:o,get:l}=N0(a);let c=o.call(a,s);c||(s=Pe(s),c=o.call(a,s));const d=l.call(a,s);return a.set(s,i),c?Vr(i,d)&&Ar(a,"set",s,i):Ar(a,"add",s,i),this},delete(s){const i=Pe(this),{has:a,get:o}=N0(i);let l=a.call(i,s);l||(s=Pe(s),l=a.call(i,s)),o&&o.call(i,s);const c=i.delete(s);return l&&Ar(i,"delete",s,void 0),c},clear(){const s=Pe(this),i=s.size!==0,a=s.clear();return i&&Ar(s,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(s=>{r[s]=rh(s,t,e)}),r}function Ma(t,e){const r=nh(t,e);return(n,s,i)=>s==="__v_isReactive"?!t:s==="__v_isReadonly"?t:s==="__v_raw"?n:Reflect.get(He(r,s)&&s in n?r:n,s,i)}const sh={get:Ma(!1,!1)},ih={get:Ma(!1,!0)},ah={get:Ma(!0,!1)};const Zc=new WeakMap,Qc=new WeakMap,eu=new WeakMap,oh=new WeakMap;function lh(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ch(t){return t.__v_skip||!Object.isExtensible(t)?0:lh(Ld(t))}function Na(t){return Gr(t)?t:Da(t,!1,Qd,sh,Zc)}function uh(t){return Da(t,!1,th,ih,Qc)}function tu(t){return Da(t,!0,eh,ah,eu)}function Da(t,e,r,n,s){if(!it(t)||t.__v_raw&&!(e&&t.__v_isReactive))return t;const i=ch(t);if(i===0)return t;const a=s.get(t);if(a)return a;const o=new Proxy(t,i===2?n:r);return s.set(t,o),o}function Nn(t){return Gr(t)?Nn(t.__v_raw):!!(t&&t.__v_isReactive)}function Gr(t){return!!(t&&t.__v_isReadonly)}function Wt(t){return!!(t&&t.__v_isShallow)}function Ra(t){return t?!!t.__v_raw:!1}function Pe(t){const e=t&&t.__v_raw;return e?Pe(e):t}function dh(t){return!He(t,"__v_skip")&&Object.isExtensible(t)&&Fc(t,"__v_skip",!0),t}const bt=t=>it(t)?Na(t):t,os=t=>it(t)?tu(t):t;function kt(t){return t?t.__v_isRef===!0:!1}function ze(t){return hh(t,!1)}function hh(t,e){return kt(t)?t:new fh(t,e)}class fh{constructor(e,r){this.dep=new Ca,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=r?e:Pe(e),this._value=r?e:bt(e),this.__v_isShallow=r}get value(){return this.dep.track(),this._value}set value(e){const r=this._rawValue,n=this.__v_isShallow||Wt(e)||Gr(e);e=n?e:Pe(e),Vr(e,r)&&(this._rawValue=e,this._value=n?e:bt(e),this.dep.trigger())}}function ph(t){return kt(t)?t.value:t}const mh={get:(t,e,r)=>e==="__v_raw"?t:ph(Reflect.get(t,e,r)),set:(t,e,r,n)=>{const s=t[e];return kt(s)&&!kt(r)?(s.value=r,!0):Reflect.set(t,e,r,n)}};function ru(t){return Nn(t)?t:new Proxy(t,mh)}class gh{constructor(e,r,n){this.fn=e,this.setter=r,this._value=void 0,this.dep=new Ca(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=c0-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!r,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&Ze!==this)return jc(this,!0),!0}get value(){const e=this.dep.track();return Wc(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function vh(t,e,r=!1){let n,s;return De(t)?n=t:(n=t.get,s=t.set),new gh(n,s,r)}const R0={},ls=new WeakMap;let cn;function bh(t,e=!1,r=cn){if(r){let n=ls.get(r);n||ls.set(r,n=[]),n.push(t)}}function yh(t,e,r=Ye){const{immediate:n,deep:s,once:i,scheduler:a,augmentJob:o,call:l}=r,c=N=>s?N:Wt(N)||s===!1||s===0?Er(N,1):Er(N);let d,f,p,b,v=!1,x=!1;if(kt(t)?(f=()=>t.value,v=Wt(t)):Nn(t)?(f=()=>c(t),v=!0):Ce(t)?(x=!0,v=t.some(N=>Nn(N)||Wt(N)),f=()=>t.map(N=>{if(kt(N))return N.value;if(Nn(N))return c(N);if(De(N))return l?l(N,2):N()})):De(t)?e?f=l?()=>l(t,2):t:f=()=>{if(p){Rr();try{p()}finally{Ir()}}const N=cn;cn=d;try{return l?l(t,3,[b]):t(b)}finally{cn=N}}:f=tr,e&&s){const N=f,I=s===!0?1/0:s;f=()=>Er(N(),I)}const y=Vd(),M=()=>{d.stop(),y&&y.active&&ka(y.effects,d)};if(i&&e){const N=e;e=(...I)=>{N(...I),M()}}let k=x?new Array(t.length).fill(R0):R0;const T=N=>{if(!(!(d.flags&1)||!d.dirty&&!N))if(e){const I=d.run();if(s||v||(x?I.some((O,z)=>Vr(O,k[z])):Vr(I,k))){p&&p();const O=cn;cn=d;try{const z=[I,k===R0?void 0:x&&k[0]===R0?[]:k,b];k=I,l?l(e,3,z):e(...z)}finally{cn=O}}}else d.run()};return o&&o(T),d=new Hc(f),d.scheduler=a?()=>a(T,!1):T,b=N=>bh(N,!1,d),p=d.onStop=()=>{const N=ls.get(d);if(N){if(l)l(N,4);else for(const I of N)I();ls.delete(d)}},e?n?T(!0):k=d.run():a?a(T.bind(null,!0),!0):d.run(),M.pause=d.pause.bind(d),M.resume=d.resume.bind(d),M.stop=M,M}function Er(t,e=1/0,r){if(e<=0||!it(t)||t.__v_skip||(r=r||new Set,r.has(t)))return t;if(r.add(t),e--,kt(t))Er(t.value,e,r);else if(Ce(t))for(let n=0;n{Er(n,e,r)});else if(Lc(t)){for(const n in t)Er(t[n],e,r);for(const n of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,n)&&Er(t[n],e,r)}return t}/** +* @vue/runtime-core v3.5.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function v0(t,e,r,n){try{return n?t(...n):t()}catch(s){zs(s,e,r)}}function mr(t,e,r,n){if(De(t)){const s=v0(t,e,r,n);return s&&_c(s)&&s.catch(i=>{zs(i,e,r)}),s}if(Ce(t)){const s=[];for(let i=0;i>>1,s=Et[n],i=d0(s);i=d0(r)?Et.push(t):Et.splice(xh(e),0,t),t.flags|=1,su()}}function su(){cs||(cs=nu.then(au))}function kh(t){Ce(t)?Dn.push(...t):qr&&t.id===-1?qr.splice(Tn+1,0,t):t.flags&1||(Dn.push(t),t.flags|=1),su()}function Bo(t,e,r=cr+1){for(;rd0(r)-d0(n));if(Dn.length=0,qr){qr.push(...e);return}for(qr=e,Tn=0;Tnt.id==null?t.flags&2?-1:1/0:t.id;function au(t){const e=tr;try{for(cr=0;cr{n._d&&Go(-1);const i=us(e);let a;try{a=t(...s)}finally{us(i),n._d&&Go(1)}return a};return n._n=!0,n._c=!0,n._d=!0,n}function ds(t,e){if(Ut===null)return t;const r=Ps(Ut),n=t.dirs||(t.dirs=[]);for(let s=0;st.__isTeleport,Eh=Symbol("_leaveCb");function _a(t,e){t.shapeFlag&6&&t.component?(t.transition=e,_a(t.component.subTree,e)):t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function lu(t){t.ids=[t.ids[0]+t.ids[2]+++"-",0,0]}function r0(t,e,r,n,s=!1){if(Ce(t)){t.forEach((v,x)=>r0(v,e&&(Ce(e)?e[x]:e),r,n,s));return}if(n0(n)&&!s){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&r0(t,e,r,n.component.subTree);return}const i=n.shapeFlag&4?Ps(n.component):n.el,a=s?null:i,{i:o,r:l}=t,c=e&&e.r,d=o.refs===Ye?o.refs={}:o.refs,f=o.setupState,p=Pe(f),b=f===Ye?Rc:v=>He(p,v);if(c!=null&&c!==l){if(ut(c))d[c]=null,b(c)&&(f[c]=null);else if(kt(c)){c.value=null;const v=e;v.k&&(d[v.k]=null)}}if(De(l))v0(l,o,12,[a,d]);else{const v=ut(l),x=kt(l);if(v||x){const y=()=>{if(t.f){const M=v?b(l)?f[l]:d[l]:l.value;if(s)Ce(M)&&ka(M,i);else if(Ce(M))M.includes(i)||M.push(i);else if(v)d[l]=[i],b(l)&&(f[l]=d[l]);else{const k=[i];l.value=k,t.k&&(d[t.k]=k)}}else v?(d[l]=a,b(l)&&(f[l]=a)):x&&(l.value=a,t.k&&(d[t.k]=a))};a?(y.id=-1,zt(y,r)):y()}}}Os().requestIdleCallback;Os().cancelIdleCallback;const n0=t=>!!t.type.__asyncLoader,cu=t=>t.type.__isKeepAlive;function Ch(t,e){uu(t,"a",e)}function Mh(t,e){uu(t,"da",e)}function uu(t,e,r=Ct){const n=t.__wdc||(t.__wdc=()=>{let s=r;for(;s;){if(s.isDeactivated)return;s=s.parent}return t()});if(Fs(e,n,r),r){let s=r.parent;for(;s&&s.parent;)cu(s.parent.vnode)&&Nh(n,e,r,s),s=s.parent}}function Nh(t,e,r,n){const s=Fs(e,t,n,!0);La(()=>{ka(n[e],s)},r)}function Fs(t,e,r=Ct,n=!1){if(r){const s=r[t]||(r[t]=[]),i=e.__weh||(e.__weh=(...a)=>{Rr();const o=b0(r),l=mr(e,r,t,a);return o(),Ir(),l});return n?s.unshift(i):s.push(i),i}}const zr=t=>(e,r=Ct)=>{(!f0||t==="sp")&&Fs(t,(...n)=>e(...n),r)},Dh=zr("bm"),Oa=zr("m"),Rh=zr("bu"),Ih=zr("u"),_h=zr("bum"),La=zr("um"),Oh=zr("sp"),Lh=zr("rtg"),zh=zr("rtc");function Fh(t,e=Ct){Fs("ec",t,e)}const $h=Symbol.for("v-ndc");function du(t,e,r,n){let s;const i=r&&r[n],a=Ce(t);if(a||ut(t)){const o=a&&Nn(t);let l=!1,c=!1;o&&(l=!Wt(t),c=Gr(t),t=Ls(t)),s=new Array(t.length);for(let d=0,f=t.length;de(o,l,void 0,i&&i[l]));else{const o=Object.keys(t);s=new Array(o.length);for(let l=0,c=o.length;lt?Iu(t)?Ps(t):ji(t.parent):null,s0=yt(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>ji(t.parent),$root:t=>ji(t.root),$host:t=>t.ce,$emit:t=>t.emit,$options:t=>za(t),$forceUpdate:t=>t.f||(t.f=()=>{Ia(t.update)}),$nextTick:t=>t.n||(t.n=Y0.bind(t.proxy)),$watch:t=>of.bind(t)}),ui=(t,e)=>t!==Ye&&!t.__isScriptSetup&&He(t,e),Bh={get({_:t},e){if(e==="__v_skip")return!0;const{ctx:r,setupState:n,data:s,props:i,accessCache:a,type:o,appContext:l}=t;let c;if(e[0]!=="$"){const b=a[e];if(b!==void 0)switch(b){case 1:return n[e];case 2:return s[e];case 4:return r[e];case 3:return i[e]}else{if(ui(n,e))return a[e]=1,n[e];if(s!==Ye&&He(s,e))return a[e]=2,s[e];if((c=t.propsOptions[0])&&He(c,e))return a[e]=3,i[e];if(r!==Ye&&He(r,e))return a[e]=4,r[e];Ui&&(a[e]=0)}}const d=s0[e];let f,p;if(d)return e==="$attrs"&&wt(t.attrs,"get",""),d(t);if((f=o.__cssModules)&&(f=f[e]))return f;if(r!==Ye&&He(r,e))return a[e]=4,r[e];if(p=l.config.globalProperties,He(p,e))return p[e]},set({_:t},e,r){const{data:n,setupState:s,ctx:i}=t;return ui(s,e)?(s[e]=r,!0):n!==Ye&&He(n,e)?(n[e]=r,!0):He(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(i[e]=r,!0)},has({_:{data:t,setupState:e,accessCache:r,ctx:n,appContext:s,propsOptions:i,type:a}},o){let l,c;return!!(r[o]||t!==Ye&&o[0]!=="$"&&He(t,o)||ui(e,o)||(l=i[0])&&He(l,o)||He(n,o)||He(s0,o)||He(s.config.globalProperties,o)||(c=a.__cssModules)&&c[o])},defineProperty(t,e,r){return r.get!=null?t._.accessCache[e]=0:He(r,"value")&&this.set(t,e,r.value,null),Reflect.defineProperty(t,e,r)}};function Po(t){return Ce(t)?t.reduce((e,r)=>(e[r]=null,e),{}):t}let Ui=!0;function Ph(t){const e=za(t),r=t.proxy,n=t.ctx;Ui=!1,e.beforeCreate&&Ho(e.beforeCreate,t,"bc");const{data:s,computed:i,methods:a,watch:o,provide:l,inject:c,created:d,beforeMount:f,mounted:p,beforeUpdate:b,updated:v,activated:x,deactivated:y,beforeDestroy:M,beforeUnmount:k,destroyed:T,unmounted:N,render:I,renderTracked:O,renderTriggered:z,errorCaptured:W,serverPrefetch:U,expose:he,inheritAttrs:ge,components:Ae,directives:et,filters:Je}=e;if(c&&Hh(c,n,null),a)for(const Ie in a){const ve=a[Ie];De(ve)&&(n[Ie]=ve.bind(r))}if(s){const Ie=s.call(r,r);it(Ie)&&(t.data=Na(Ie))}if(Ui=!0,i)for(const Ie in i){const ve=i[Ie],Me=De(ve)?ve.bind(r,r):De(ve.get)?ve.get.bind(r,r):tr,tt=!De(ve)&&De(ve.set)?ve.set.bind(r):tr,We=Ou({get:Me,set:tt});Object.defineProperty(n,Ie,{enumerable:!0,configurable:!0,get:()=>We.value,set:_e=>We.value=_e})}if(o)for(const Ie in o)hu(o[Ie],n,r,Ie);if(l){const Ie=De(l)?l.call(r):l;Reflect.ownKeys(Ie).forEach(ve=>{Gh(ve,Ie[ve])})}d&&Ho(d,t,"c");function Fe(Ie,ve){Ce(ve)?ve.forEach(Me=>Ie(Me.bind(r))):ve&&Ie(ve.bind(r))}if(Fe(Dh,f),Fe(Oa,p),Fe(Rh,b),Fe(Ih,v),Fe(Ch,x),Fe(Mh,y),Fe(Fh,W),Fe(zh,O),Fe(Lh,z),Fe(_h,k),Fe(La,N),Fe(Oh,U),Ce(he))if(he.length){const Ie=t.exposed||(t.exposed={});he.forEach(ve=>{Object.defineProperty(Ie,ve,{get:()=>r[ve],set:Me=>r[ve]=Me,enumerable:!0})})}else t.exposed||(t.exposed={});I&&t.render===tr&&(t.render=I),ge!=null&&(t.inheritAttrs=ge),Ae&&(t.components=Ae),et&&(t.directives=et),U&&lu(t)}function Hh(t,e,r=tr){Ce(t)&&(t=Vi(t));for(const n in t){const s=t[n];let i;it(s)?"default"in s?i=X0(s.from||n,s.default,!0):i=X0(s.from||n):i=X0(s),kt(i)?Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):e[n]=i}}function Ho(t,e,r){mr(Ce(t)?t.map(n=>n.bind(e.proxy)):t.bind(e.proxy),e,r)}function hu(t,e,r,n){let s=n.includes(".")?Au(r,n):()=>r[n];if(ut(t)){const i=e[t];De(i)&&i0(s,i)}else if(De(t))i0(s,t.bind(r));else if(it(t))if(Ce(t))t.forEach(i=>hu(i,e,r,n));else{const i=De(t.handler)?t.handler.bind(r):e[t.handler];De(i)&&i0(s,i,t)}}function za(t){const e=t.type,{mixins:r,extends:n}=e,{mixins:s,optionsCache:i,config:{optionMergeStrategies:a}}=t.appContext,o=i.get(e);let l;return o?l=o:!s.length&&!r&&!n?l=e:(l={},s.length&&s.forEach(c=>hs(l,c,a,!0)),hs(l,e,a)),it(e)&&i.set(e,l),l}function hs(t,e,r,n=!1){const{mixins:s,extends:i}=e;i&&hs(t,i,r,!0),s&&s.forEach(a=>hs(t,a,r,!0));for(const a in e)if(!(n&&a==="expose")){const o=qh[a]||r&&r[a];t[a]=o?o(t[a],e[a]):e[a]}return t}const qh={data:qo,props:jo,emits:jo,methods:Xn,computed:Xn,beforeCreate:At,created:At,beforeMount:At,mounted:At,beforeUpdate:At,updated:At,beforeDestroy:At,beforeUnmount:At,destroyed:At,unmounted:At,activated:At,deactivated:At,errorCaptured:At,serverPrefetch:At,components:Xn,directives:Xn,watch:Uh,provide:qo,inject:jh};function qo(t,e){return e?t?function(){return yt(De(t)?t.call(this,this):t,De(e)?e.call(this,this):e)}:e:t}function jh(t,e){return Xn(Vi(t),Vi(e))}function Vi(t){if(Ce(t)){const e={};for(let r=0;r1)return r&&De(e)?e.call(n&&n.proxy):e}}const pu={},mu=()=>Object.create(pu),gu=t=>Object.getPrototypeOf(t)===pu;function Kh(t,e,r,n=!1){const s={},i=mu();t.propsDefaults=Object.create(null),vu(t,e,s,i);for(const a in t.propsOptions[0])a in s||(s[a]=void 0);r?t.props=n?s:uh(s):t.type.props?t.props=s:t.props=i,t.attrs=i}function Yh(t,e,r,n){const{props:s,attrs:i,vnode:{patchFlag:a}}=t,o=Pe(s),[l]=t.propsOptions;let c=!1;if((n||a>0)&&!(a&16)){if(a&8){const d=t.vnode.dynamicProps;for(let f=0;f{l=!0;const[p,b]=bu(f,e,!0);yt(a,p),b&&o.push(...b)};!r&&e.mixins.length&&e.mixins.forEach(d),t.extends&&d(t.extends),t.mixins&&t.mixins.forEach(d)}if(!i&&!l)return it(t)&&n.set(t,Cn),Cn;if(Ce(i))for(let d=0;dt==="_"||t==="_ctx"||t==="$stable",$a=t=>Ce(t)?t.map(dr):[dr(t)],Jh=(t,e,r)=>{if(e._n)return e;const n=Sh((...s)=>$a(e(...s)),r);return n._c=!1,n},yu=(t,e,r)=>{const n=t._ctx;for(const s in t){if(Fa(s))continue;const i=t[s];if(De(i))e[s]=Jh(s,i,n);else if(i!=null){const a=$a(i);e[s]=()=>a}}},wu=(t,e)=>{const r=$a(e);t.slots.default=()=>r},xu=(t,e,r)=>{for(const n in e)(r||!Fa(n))&&(t[n]=e[n])},Zh=(t,e,r)=>{const n=t.slots=mu();if(t.vnode.shapeFlag&32){const s=e._;s?(xu(n,e,r),r&&Fc(n,"_",s,!0)):yu(e,n)}else e&&wu(t,e)},Qh=(t,e,r)=>{const{vnode:n,slots:s}=t;let i=!0,a=Ye;if(n.shapeFlag&32){const o=e._;o?r&&o===1?i=!1:xu(s,e,r):(i=!e.$stable,yu(e,s)),a=e}else e&&(wu(t,e),a={default:1});if(i)for(const o in s)!Fa(o)&&a[o]==null&&delete s[o]},zt=pf;function ef(t){return tf(t)}function tf(t,e){const r=Os();r.__VUE__=!0;const{insert:n,remove:s,patchProp:i,createElement:a,createText:o,createComment:l,setText:c,setElementText:d,parentNode:f,nextSibling:p,setScopeId:b=tr,insertStaticContent:v}=t,x=(S,D,F,G=null,q=null,H=null,X=void 0,ne=null,se=!!D.dynamicChildren)=>{if(S===D)return;S&&!Un(S,D)&&(G=re(S),_e(S,q,H,!0),S=null),D.patchFlag===-2&&(se=!1,D.dynamicChildren=null);const{type:Q,ref:be,shapeFlag:le}=D;switch(Q){case Bs:y(S,D,F,G);break;case Kr:M(S,D,F,G);break;case J0:S==null&&k(D,F,G,X);break;case er:Ae(S,D,F,G,q,H,X,ne,se);break;default:le&1?I(S,D,F,G,q,H,X,ne,se):le&6?et(S,D,F,G,q,H,X,ne,se):(le&64||le&128)&&Q.process(S,D,F,G,q,H,X,ne,se,ye)}be!=null&&q?r0(be,S&&S.ref,H,D||S,!D):be==null&&S&&S.ref!=null&&r0(S.ref,null,H,S,!0)},y=(S,D,F,G)=>{if(S==null)n(D.el=o(D.children),F,G);else{const q=D.el=S.el;D.children!==S.children&&c(q,D.children)}},M=(S,D,F,G)=>{S==null?n(D.el=l(D.children||""),F,G):D.el=S.el},k=(S,D,F,G)=>{[S.el,S.anchor]=v(S.children,D,F,G,S.el,S.anchor)},T=({el:S,anchor:D},F,G)=>{let q;for(;S&&S!==D;)q=p(S),n(S,F,G),S=q;n(D,F,G)},N=({el:S,anchor:D})=>{let F;for(;S&&S!==D;)F=p(S),s(S),S=F;s(D)},I=(S,D,F,G,q,H,X,ne,se)=>{D.type==="svg"?X="svg":D.type==="math"&&(X="mathml"),S==null?O(D,F,G,q,H,X,ne,se):U(S,D,q,H,X,ne,se)},O=(S,D,F,G,q,H,X,ne)=>{let se,Q;const{props:be,shapeFlag:le,transition:pe,dirs:Se}=S;if(se=S.el=a(S.type,H,be&&be.is,be),le&8?d(se,S.children):le&16&&W(S.children,se,null,G,q,di(S,H),X,ne),Se&&nn(S,null,G,"created"),z(se,S,S.scopeId,X,G),be){for(const w in be)w!=="value"&&!Qn(w)&&i(se,w,null,be[w],H,G);"value"in be&&i(se,"value",null,be.value,H),(Q=be.onVnodeBeforeMount)&&ar(Q,G,S)}Se&&nn(S,null,G,"beforeMount");const Le=rf(q,pe);Le&&pe.beforeEnter(se),n(se,D,F),((Q=be&&be.onVnodeMounted)||Le||Se)&&zt(()=>{Q&&ar(Q,G,S),Le&&pe.enter(se),Se&&nn(S,null,G,"mounted")},q)},z=(S,D,F,G,q)=>{if(F&&b(S,F),G)for(let H=0;H{for(let Q=se;Q{const ne=D.el=S.el;let{patchFlag:se,dynamicChildren:Q,dirs:be}=D;se|=S.patchFlag&16;const le=S.props||Ye,pe=D.props||Ye;let Se;if(F&&sn(F,!1),(Se=pe.onVnodeBeforeUpdate)&&ar(Se,F,D,S),be&&nn(D,S,F,"beforeUpdate"),F&&sn(F,!0),(le.innerHTML&&pe.innerHTML==null||le.textContent&&pe.textContent==null)&&d(ne,""),Q?he(S.dynamicChildren,Q,ne,F,G,di(D,q),H):X||ve(S,D,ne,null,F,G,di(D,q),H,!1),se>0){if(se&16)ge(ne,le,pe,F,q);else if(se&2&&le.class!==pe.class&&i(ne,"class",null,pe.class,q),se&4&&i(ne,"style",le.style,pe.style,q),se&8){const Le=D.dynamicProps;for(let w=0;w{Se&&ar(Se,F,D,S),be&&nn(D,S,F,"updated")},G)},he=(S,D,F,G,q,H,X)=>{for(let ne=0;ne{if(D!==F){if(D!==Ye)for(const H in D)!Qn(H)&&!(H in F)&&i(S,H,D[H],null,q,G);for(const H in F){if(Qn(H))continue;const X=F[H],ne=D[H];X!==ne&&H!=="value"&&i(S,H,ne,X,q,G)}"value"in F&&i(S,"value",D.value,F.value,q)}},Ae=(S,D,F,G,q,H,X,ne,se)=>{const Q=D.el=S?S.el:o(""),be=D.anchor=S?S.anchor:o("");let{patchFlag:le,dynamicChildren:pe,slotScopeIds:Se}=D;Se&&(ne=ne?ne.concat(Se):Se),S==null?(n(Q,F,G),n(be,F,G),W(D.children||[],F,be,q,H,X,ne,se)):le>0&&le&64&&pe&&S.dynamicChildren?(he(S.dynamicChildren,pe,F,q,H,X,ne),(D.key!=null||q&&D===q.subTree)&&ku(S,D,!0)):ve(S,D,F,be,q,H,X,ne,se)},et=(S,D,F,G,q,H,X,ne,se)=>{D.slotScopeIds=ne,S==null?D.shapeFlag&512?q.ctx.activate(D,F,G,X,se):Je(D,F,G,q,H,X,se):ot(S,D,se)},Je=(S,D,F,G,q,H,X)=>{const ne=S.component=kf(S,G,q);if(cu(S)&&(ne.ctx.renderer=ye),Tf(ne,!1,X),ne.asyncDep){if(q&&q.registerDep(ne,Fe,X),!S.el){const se=ne.subTree=Ht(Kr);M(null,se,D,F),S.placeholder=se.el}}else Fe(ne,S,D,F,q,H,X)},ot=(S,D,F)=>{const G=D.component=S.component;if(hf(S,D,F))if(G.asyncDep&&!G.asyncResolved){Ie(G,D,F);return}else G.next=D,G.update();else D.el=S.el,G.vnode=D},Fe=(S,D,F,G,q,H,X)=>{const ne=()=>{if(S.isMounted){let{next:le,bu:pe,u:Se,parent:Le,vnode:w}=S;{const J=Su(S);if(J){le&&(le.el=w.el,Ie(S,le,X)),J.asyncDep.then(()=>{S.isUnmounted||ne()});return}}let E=le,_;sn(S,!1),le?(le.el=w.el,Ie(S,le,X)):le=w,pe&&K0(pe),(_=le.props&&le.props.onVnodeBeforeUpdate)&&ar(_,Le,le,w),sn(S,!0);const P=hi(S),Z=S.subTree;S.subTree=P,x(Z,P,f(Z.el),re(Z),S,q,H),le.el=P.el,E===null&&ff(S,P.el),Se&&zt(Se,q),(_=le.props&&le.props.onVnodeUpdated)&&zt(()=>ar(_,Le,le,w),q)}else{let le;const{el:pe,props:Se}=D,{bm:Le,m:w,parent:E,root:_,type:P}=S,Z=n0(D);if(sn(S,!1),Le&&K0(Le),!Z&&(le=Se&&Se.onVnodeBeforeMount)&&ar(le,E,D),sn(S,!0),pe&&Ue){const J=()=>{S.subTree=hi(S),Ue(pe,S.subTree,S,q,null)};Z&&P.__asyncHydrate?P.__asyncHydrate(pe,S,J):J()}else{_.ce&&_.ce._def.shadowRoot!==!1&&_.ce._injectChildStyle(P);const J=S.subTree=hi(S);x(null,J,F,G,S,q,H),D.el=J.el}if(w&&zt(w,q),!Z&&(le=Se&&Se.onVnodeMounted)){const J=D;zt(()=>ar(le,E,J),q)}(D.shapeFlag&256||E&&n0(E.vnode)&&E.vnode.shapeFlag&256)&&S.a&&zt(S.a,q),S.isMounted=!0,D=F=G=null}};S.scope.on();const se=S.effect=new Hc(ne);S.scope.off();const Q=S.update=se.run.bind(se),be=S.job=se.runIfDirty.bind(se);be.i=S,be.id=S.uid,se.scheduler=()=>Ia(be),sn(S,!0),Q()},Ie=(S,D,F)=>{D.component=S;const G=S.vnode.props;S.vnode=D,S.next=null,Yh(S,D.props,G,F),Qh(S,D.children,F),Rr(),Bo(S),Ir()},ve=(S,D,F,G,q,H,X,ne,se=!1)=>{const Q=S&&S.children,be=S?S.shapeFlag:0,le=D.children,{patchFlag:pe,shapeFlag:Se}=D;if(pe>0){if(pe&128){tt(Q,le,F,G,q,H,X,ne,se);return}else if(pe&256){Me(Q,le,F,G,q,H,X,ne,se);return}}Se&8?(be&16&&V(Q,q,H),le!==Q&&d(F,le)):be&16?Se&16?tt(Q,le,F,G,q,H,X,ne,se):V(Q,q,H,!0):(be&8&&d(F,""),Se&16&&W(le,F,G,q,H,X,ne,se))},Me=(S,D,F,G,q,H,X,ne,se)=>{S=S||Cn,D=D||Cn;const Q=S.length,be=D.length,le=Math.min(Q,be);let pe;for(pe=0;pebe?V(S,q,H,!0,!1,le):W(D,F,G,q,H,X,ne,se,le)},tt=(S,D,F,G,q,H,X,ne,se)=>{let Q=0;const be=D.length;let le=S.length-1,pe=be-1;for(;Q<=le&&Q<=pe;){const Se=S[Q],Le=D[Q]=se?jr(D[Q]):dr(D[Q]);if(Un(Se,Le))x(Se,Le,F,null,q,H,X,ne,se);else break;Q++}for(;Q<=le&&Q<=pe;){const Se=S[le],Le=D[pe]=se?jr(D[pe]):dr(D[pe]);if(Un(Se,Le))x(Se,Le,F,null,q,H,X,ne,se);else break;le--,pe--}if(Q>le){if(Q<=pe){const Se=pe+1,Le=Sepe)for(;Q<=le;)_e(S[Q],q,H,!0),Q++;else{const Se=Q,Le=Q,w=new Map;for(Q=Le;Q<=pe;Q++){const de=D[Q]=se?jr(D[Q]):dr(D[Q]);de.key!=null&&w.set(de.key,Q)}let E,_=0;const P=pe-Le+1;let Z=!1,J=0;const $=new Array(P);for(Q=0;Q=P){_e(de,q,H,!0);continue}let me;if(de.key!=null)me=w.get(de.key);else for(E=Le;E<=pe;E++)if($[E-Le]===0&&Un(de,D[E])){me=E;break}me===void 0?_e(de,q,H,!0):($[me-Le]=Q+1,me>=J?J=me:Z=!0,x(de,D[me],F,null,q,H,X,ne,se),_++)}const ue=Z?nf($):Cn;for(E=ue.length-1,Q=P-1;Q>=0;Q--){const de=Le+Q,me=D[de],Oe=D[de+1],Be=de+1{const{el:H,type:X,transition:ne,children:se,shapeFlag:Q}=S;if(Q&6){We(S.component.subTree,D,F,G);return}if(Q&128){S.suspense.move(D,F,G);return}if(Q&64){X.move(S,D,F,ye);return}if(X===er){n(H,D,F);for(let le=0;lene.enter(H),q);else{const{leave:le,delayLeave:pe,afterLeave:Se}=ne,Le=()=>{S.ctx.isUnmounted?s(H):n(H,D,F)},w=()=>{H._isLeaving&&H[Eh](!0),le(H,()=>{Le(),Se&&Se()})};pe?pe(H,Le,w):w()}else n(H,D,F)},_e=(S,D,F,G=!1,q=!1)=>{const{type:H,props:X,ref:ne,children:se,dynamicChildren:Q,shapeFlag:be,patchFlag:le,dirs:pe,cacheIndex:Se}=S;if(le===-2&&(q=!1),ne!=null&&(Rr(),r0(ne,null,F,S,!0),Ir()),Se!=null&&(D.renderCache[Se]=void 0),be&256){D.ctx.deactivate(S);return}const Le=be&1&&pe,w=!n0(S);let E;if(w&&(E=X&&X.onVnodeBeforeUnmount)&&ar(E,D,S),be&6)j(S.component,F,G);else{if(be&128){S.suspense.unmount(F,G);return}Le&&nn(S,null,D,"beforeUnmount"),be&64?S.type.remove(S,D,F,ye,G):Q&&!Q.hasOnce&&(H!==er||le>0&&le&64)?V(Q,D,F,!1,!0):(H===er&&le&384||!q&&be&16)&&V(se,D,F),G&&St(S)}(w&&(E=X&&X.onVnodeUnmounted)||Le)&&zt(()=>{E&&ar(E,D,S),Le&&nn(S,null,D,"unmounted")},F)},St=S=>{const{type:D,el:F,anchor:G,transition:q}=S;if(D===er){mt(F,G);return}if(D===J0){N(S);return}const H=()=>{s(F),q&&!q.persisted&&q.afterLeave&&q.afterLeave()};if(S.shapeFlag&1&&q&&!q.persisted){const{leave:X,delayLeave:ne}=q,se=()=>X(F,H);ne?ne(S.el,H,se):se()}else H()},mt=(S,D)=>{let F;for(;S!==D;)F=p(S),s(S),S=F;s(D)},j=(S,D,F)=>{const{bum:G,scope:q,job:H,subTree:X,um:ne,m:se,a:Q}=S;Vo(se),Vo(Q),G&&K0(G),q.stop(),H&&(H.flags|=8,_e(X,S,D,F)),ne&&zt(ne,D),zt(()=>{S.isUnmounted=!0},D)},V=(S,D,F,G=!1,q=!1,H=0)=>{for(let X=H;X{if(S.shapeFlag&6)return re(S.component.subTree);if(S.shapeFlag&128)return S.suspense.next();const D=p(S.anchor||S.el),F=D&&D[Th];return F?p(F):D};let ie=!1;const Ee=(S,D,F)=>{S==null?D._vnode&&_e(D._vnode,null,null,!0):x(D._vnode||null,S,D,null,null,null,F),D._vnode=S,ie||(ie=!0,Bo(),iu(),ie=!1)},ye={p:x,um:_e,m:We,r:St,mt:Je,mc:W,pc:ve,pbc:he,n:re,o:t};let fe,Ue;return e&&([fe,Ue]=e(ye)),{render:Ee,hydrate:fe,createApp:Wh(Ee,fe)}}function di({type:t,props:e},r){return r==="svg"&&t==="foreignObject"||r==="mathml"&&t==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:r}function sn({effect:t,job:e},r){r?(t.flags|=32,e.flags|=4):(t.flags&=-33,e.flags&=-5)}function rf(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function ku(t,e,r=!1){const n=t.children,s=e.children;if(Ce(n)&&Ce(s))for(let i=0;i>1,t[r[o]]0&&(e[n]=r[i-1]),r[i]=n)}}for(i=r.length,a=r[i-1];i-- >0;)r[i]=a,a=e[a];return r}function Su(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Su(e)}function Vo(t){if(t)for(let e=0;eX0(sf);function i0(t,e,r){return Tu(t,e,r)}function Tu(t,e,r=Ye){const{immediate:n,deep:s,flush:i,once:a}=r,o=yt({},r),l=e&&n||!e&&i!=="post";let c;if(f0){if(i==="sync"){const b=af();c=b.__watcherHandles||(b.__watcherHandles=[])}else if(!l){const b=()=>{};return b.stop=tr,b.resume=tr,b.pause=tr,b}}const d=Ct;o.call=(b,v,x)=>mr(b,d,v,x);let f=!1;i==="post"?o.scheduler=b=>{zt(b,d&&d.suspense)}:i!=="sync"&&(f=!0,o.scheduler=(b,v)=>{v?b():Ia(b)}),o.augmentJob=b=>{e&&(b.flags|=4),f&&(b.flags|=2,d&&(b.id=d.uid,b.i=d))};const p=yh(t,e,o);return f0&&(c?c.push(p):l&&p()),p}function of(t,e,r){const n=this.proxy,s=ut(t)?t.includes(".")?Au(n,t):()=>n[t]:t.bind(n,n);let i;De(e)?i=e:(i=e.handler,r=e);const a=b0(this),o=Tu(s,i.bind(n),r);return a(),o}function Au(t,e){const r=e.split(".");return()=>{let n=t;for(let s=0;se==="modelValue"||e==="model-value"?t.modelModifiers:t[`${e}Modifiers`]||t[`${Wr(e)}Modifiers`]||t[`${Qr(e)}Modifiers`];function cf(t,e,...r){if(t.isUnmounted)return;const n=t.vnode.props||Ye;let s=r;const i=e.startsWith("update:"),a=i&&lf(n,e.slice(7));a&&(a.trim&&(s=r.map(d=>ut(d)?d.trim():d)),a.number&&(s=r.map($i)));let o,l=n[o=ii(e)]||n[o=ii(Wr(e))];!l&&i&&(l=n[o=ii(Qr(e))]),l&&mr(l,t,6,s);const c=n[o+"Once"];if(c){if(!t.emitted)t.emitted={};else if(t.emitted[o])return;t.emitted[o]=!0,mr(c,t,6,s)}}function Eu(t,e,r=!1){const n=e.emitsCache,s=n.get(t);if(s!==void 0)return s;const i=t.emits;let a={},o=!1;if(!De(t)){const l=c=>{const d=Eu(c,e,!0);d&&(o=!0,yt(a,d))};!r&&e.mixins.length&&e.mixins.forEach(l),t.extends&&l(t.extends),t.mixins&&t.mixins.forEach(l)}return!i&&!o?(it(t)&&n.set(t,null),null):(Ce(i)?i.forEach(l=>a[l]=null):yt(a,i),it(t)&&n.set(t,a),a)}function $s(t,e){return!t||!Rs(e)?!1:(e=e.slice(2).replace(/Once$/,""),He(t,e[0].toLowerCase()+e.slice(1))||He(t,Qr(e))||He(t,e))}function hi(t){const{type:e,vnode:r,proxy:n,withProxy:s,propsOptions:[i],slots:a,attrs:o,emit:l,render:c,renderCache:d,props:f,data:p,setupState:b,ctx:v,inheritAttrs:x}=t,y=us(t);let M,k;try{if(r.shapeFlag&4){const N=s||n,I=N;M=dr(c.call(I,N,d,f,b,p,v)),k=o}else{const N=e;M=dr(N.length>1?N(f,{attrs:o,slots:a,emit:l}):N(f,null)),k=e.props?o:uf(o)}}catch(N){a0.length=0,zs(N,t,1),M=Ht(Kr)}let T=M;if(k&&x!==!1){const N=Object.keys(k),{shapeFlag:I}=T;N.length&&I&7&&(i&&N.some(xa)&&(k=df(k,i)),T=zn(T,k,!1,!0))}return r.dirs&&(T=zn(T,null,!1,!0),T.dirs=T.dirs?T.dirs.concat(r.dirs):r.dirs),r.transition&&_a(T,r.transition),M=T,us(y),M}const uf=t=>{let e;for(const r in t)(r==="class"||r==="style"||Rs(r))&&((e||(e={}))[r]=t[r]);return e},df=(t,e)=>{const r={};for(const n in t)(!xa(n)||!(n.slice(9)in e))&&(r[n]=t[n]);return r};function hf(t,e,r){const{props:n,children:s,component:i}=t,{props:a,children:o,patchFlag:l}=e,c=i.emitsOptions;if(e.dirs||e.transition)return!0;if(r&&l>=0){if(l&1024)return!0;if(l&16)return n?Wo(n,a,c):!!a;if(l&8){const d=e.dynamicProps;for(let f=0;ft.__isSuspense;function pf(t,e){e&&e.pendingBranch?Ce(t)?e.effects.push(...t):e.effects.push(t):kh(t)}const er=Symbol.for("v-fgt"),Bs=Symbol.for("v-txt"),Kr=Symbol.for("v-cmt"),J0=Symbol.for("v-stc"),a0=[];let Pt=null;function Ve(t=!1){a0.push(Pt=t?null:[])}function mf(){a0.pop(),Pt=a0[a0.length-1]||null}let h0=1;function Go(t,e=!1){h0+=t,t<0&&Pt&&e&&(Pt.hasOnce=!0)}function Mu(t){return t.dynamicChildren=h0>0?Pt||Cn:null,mf(),h0>0&&Pt&&Pt.push(t),t}function Ke(t,e,r,n,s,i){return Mu(Y(t,e,r,n,s,i,!0))}function gf(t,e,r,n,s){return Mu(Ht(t,e,r,n,s,!0))}function Nu(t){return t?t.__v_isVNode===!0:!1}function Un(t,e){return t.type===e.type&&t.key===e.key}const Du=({key:t})=>t??null,Z0=({ref:t,ref_key:e,ref_for:r})=>(typeof t=="number"&&(t=""+t),t!=null?ut(t)||kt(t)||De(t)?{i:Ut,r:t,k:e,f:!!r}:t:null);function Y(t,e=null,r=null,n=0,s=null,i=t===er?0:1,a=!1,o=!1){const l={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&Du(e),ref:e&&Z0(e),scopeId:ou,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Ut};return o?(Ba(l,r),i&128&&t.normalize(l)):r&&(l.shapeFlag|=ut(r)?8:16),h0>0&&!a&&Pt&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&Pt.push(l),l}const Ht=vf;function vf(t,e=null,r=null,n=0,s=null,i=!1){if((!t||t===$h)&&(t=Kr),Nu(t)){const o=zn(t,e,!0);return r&&Ba(o,r),h0>0&&!i&&Pt&&(o.shapeFlag&6?Pt[Pt.indexOf(t)]=o:Pt.push(o)),o.patchFlag=-2,o}if(Mf(t)&&(t=t.__vccOpts),e){e=bf(e);let{class:o,style:l}=e;o&&!ut(o)&&(e.class=Ln(o)),it(l)&&(Ra(l)&&!Ce(l)&&(l=yt({},l)),e.style=On(l))}const a=ut(t)?1:Cu(t)?128:Ah(t)?64:it(t)?4:De(t)?2:0;return Y(t,e,r,n,s,a,i,!0)}function bf(t){return t?Ra(t)||gu(t)?yt({},t):t:null}function zn(t,e,r=!1,n=!1){const{props:s,ref:i,patchFlag:a,children:o,transition:l}=t,c=e?yf(s||{},e):s,d={__v_isVNode:!0,__v_skip:!0,type:t.type,props:c,key:c&&Du(c),ref:e&&e.ref?r&&i?Ce(i)?i.concat(Z0(e)):[i,Z0(e)]:Z0(e):i,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:o,target:t.target,targetStart:t.targetStart,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==er?a===-1?16:a|16:a,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:l,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&zn(t.ssContent),ssFallback:t.ssFallback&&zn(t.ssFallback),placeholder:t.placeholder,el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce};return l&&n&&_a(d,l.clone(d)),d}function Ru(t=" ",e=0){return Ht(Bs,null,t,e)}function Ko(t,e){const r=Ht(J0,null,t);return r.staticCount=e,r}function Sr(t="",e=!1){return e?(Ve(),gf(Kr,null,t)):Ht(Kr,null,t)}function dr(t){return t==null||typeof t=="boolean"?Ht(Kr):Ce(t)?Ht(er,null,t.slice()):Nu(t)?jr(t):Ht(Bs,null,String(t))}function jr(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:zn(t)}function Ba(t,e){let r=0;const{shapeFlag:n}=t;if(e==null)e=null;else if(Ce(e))r=16;else if(typeof e=="object")if(n&65){const s=e.default;s&&(s._c&&(s._d=!1),Ba(t,s()),s._c&&(s._d=!0));return}else{r=32;const s=e._;!s&&!gu(e)?e._ctx=Ut:s===3&&Ut&&(Ut.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else De(e)?(e={default:e,_ctx:Ut},r=32):(e=String(e),n&64?(r=16,e=[Ru(e)]):r=8);t.children=e,t.shapeFlag|=r}function yf(...t){const e={};for(let r=0;rCt||Ut;let fs,Gi;{const t=Os(),e=(r,n)=>{let s;return(s=t[r])||(s=t[r]=[]),s.push(n),i=>{s.length>1?s.forEach(a=>a(i)):s[0](i)}};fs=e("__VUE_INSTANCE_SETTERS__",r=>Ct=r),Gi=e("__VUE_SSR_SETTERS__",r=>f0=r)}const b0=t=>{const e=Ct;return fs(t),t.scope.on(),()=>{t.scope.off(),fs(e)}},Yo=()=>{Ct&&Ct.scope.off(),fs(null)};function Iu(t){return t.vnode.shapeFlag&4}let f0=!1;function Tf(t,e=!1,r=!1){e&&Gi(e);const{props:n,children:s}=t.vnode,i=Iu(t);Kh(t,n,i,e),Zh(t,s,r||e);const a=i?Af(t,e):void 0;return e&&Gi(!1),a}function Af(t,e){const r=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,Bh);const{setup:n}=r;if(n){Rr();const s=t.setupContext=n.length>1?Cf(t):null,i=b0(t),a=v0(n,t,0,[t.props,s]),o=_c(a);if(Ir(),i(),(o||t.sp)&&!n0(t)&&lu(t),o){if(a.then(Yo,Yo),e)return a.then(l=>{Xo(t,l,e)}).catch(l=>{zs(l,t,0)});t.asyncDep=a}else Xo(t,a,e)}else _u(t,e)}function Xo(t,e,r){De(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:it(e)&&(t.setupState=ru(e)),_u(t,r)}let Jo;function _u(t,e,r){const n=t.type;if(!t.render){if(!e&&Jo&&!n.render){const s=n.template||za(t).template;if(s){const{isCustomElement:i,compilerOptions:a}=t.appContext.config,{delimiters:o,compilerOptions:l}=n,c=yt(yt({isCustomElement:i,delimiters:o},a),l);n.render=Jo(s,c)}}t.render=n.render||tr}{const s=b0(t);Rr();try{Ph(t)}finally{Ir(),s()}}}const Ef={get(t,e){return wt(t,"get",""),t[e]}};function Cf(t){const e=r=>{t.exposed=r||{}};return{attrs:new Proxy(t.attrs,Ef),slots:t.slots,emit:t.emit,expose:e}}function Ps(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(ru(dh(t.exposed)),{get(e,r){if(r in e)return e[r];if(r in s0)return s0[r](t)},has(e,r){return r in e||r in s0}})):t.proxy}function Mf(t){return De(t)&&"__vccOpts"in t}const Ou=(t,e)=>vh(t,e,f0),Nf="3.5.20";/** +* @vue/runtime-dom v3.5.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ki;const Zo=typeof window<"u"&&window.trustedTypes;if(Zo)try{Ki=Zo.createPolicy("vue",{createHTML:t=>t})}catch{}const Lu=Ki?t=>Ki.createHTML(t):t=>t,Df="http://www.w3.org/2000/svg",Rf="http://www.w3.org/1998/Math/MathML",kr=typeof document<"u"?document:null,Qo=kr&&kr.createElement("template"),If={insert:(t,e,r)=>{e.insertBefore(t,r||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,r,n)=>{const s=e==="svg"?kr.createElementNS(Df,t):e==="mathml"?kr.createElementNS(Rf,t):r?kr.createElement(t,{is:r}):kr.createElement(t);return t==="select"&&n&&n.multiple!=null&&s.setAttribute("multiple",n.multiple),s},createText:t=>kr.createTextNode(t),createComment:t=>kr.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>kr.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,r,n,s,i){const a=r?r.previousSibling:e.lastChild;if(s&&(s===i||s.nextSibling))for(;e.insertBefore(s.cloneNode(!0),r),!(s===i||!(s=s.nextSibling)););else{Qo.innerHTML=Lu(n==="svg"?`${t}`:n==="mathml"?`${t}`:t);const o=Qo.content;if(n==="svg"||n==="mathml"){const l=o.firstChild;for(;l.firstChild;)o.appendChild(l.firstChild);o.removeChild(l)}e.insertBefore(o,r)}return[a?a.nextSibling:e.firstChild,r?r.previousSibling:e.lastChild]}},_f=Symbol("_vtc");function Of(t,e,r){const n=t[_f];n&&(e=(e?[e,...n]:[...n]).join(" ")),e==null?t.removeAttribute("class"):r?t.setAttribute("class",e):t.className=e}const ps=Symbol("_vod"),zu=Symbol("_vsh"),Lf={name:"show",beforeMount(t,{value:e},{transition:r}){t[ps]=t.style.display==="none"?"":t.style.display,r&&e?r.beforeEnter(t):Vn(t,e)},mounted(t,{value:e},{transition:r}){r&&e&&r.enter(t)},updated(t,{value:e,oldValue:r},{transition:n}){!e!=!r&&(n?e?(n.beforeEnter(t),Vn(t,!0),n.enter(t)):n.leave(t,()=>{Vn(t,!1)}):Vn(t,e))},beforeUnmount(t,{value:e}){Vn(t,e)}};function Vn(t,e){t.style.display=e?t[ps]:"none",t[zu]=!e}const zf=Symbol(""),Ff=/(^|;)\s*display\s*:/;function $f(t,e,r){const n=t.style,s=ut(r);let i=!1;if(r&&!s){if(e)if(ut(e))for(const a of e.split(";")){const o=a.slice(0,a.indexOf(":")).trim();r[o]==null&&Q0(n,o,"")}else for(const a in e)r[a]==null&&Q0(n,a,"");for(const a in r)a==="display"&&(i=!0),Q0(n,a,r[a])}else if(s){if(e!==r){const a=n[zf];a&&(r+=";"+a),n.cssText=r,i=Ff.test(r)}}else e&&t.removeAttribute("style");ps in t&&(t[ps]=i?n.display:"",t[zu]&&(n.display="none"))}const el=/\s*!important$/;function Q0(t,e,r){if(Ce(r))r.forEach(n=>Q0(t,e,n));else if(r==null&&(r=""),e.startsWith("--"))t.setProperty(e,r);else{const n=Bf(t,e);el.test(r)?t.setProperty(Qr(n),r.replace(el,""),"important"):t[n]=r}}const tl=["Webkit","Moz","ms"],fi={};function Bf(t,e){const r=fi[e];if(r)return r;let n=Wr(e);if(n!=="filter"&&n in t)return fi[e]=n;n=zc(n);for(let s=0;spi||(jf.then(()=>pi=0),pi=Date.now());function Vf(t,e){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;mr(Wf(n,r.value),e,5,[n])};return r.value=t,r.attached=Uf(),r}function Wf(t,e){if(Ce(e)){const r=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{r.call(t),t._stopped=!0},e.map(n=>s=>!s._stopped&&n&&n(s))}else return e}const ol=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,Gf=(t,e,r,n,s,i)=>{const a=s==="svg";e==="class"?Of(t,n,a):e==="style"?$f(t,r,n):Rs(e)?xa(e)||Hf(t,e,r,n,i):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):Kf(t,e,n,a))?(sl(t,e,n),!t.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&nl(t,e,n,a,i,e!=="value")):t._isVueCE&&(/[A-Z]/.test(e)||!ut(n))?sl(t,Wr(e),n,i,e):(e==="true-value"?t._trueValue=n:e==="false-value"&&(t._falseValue=n),nl(t,e,n,a))};function Kf(t,e,r,n){if(n)return!!(e==="innerHTML"||e==="textContent"||e in t&&ol(e)&&De(r));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const s=t.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return ol(e)&&ut(r)?!1:e in t}const ll=t=>{const e=t.props["onUpdate:modelValue"]||!1;return Ce(e)?r=>K0(e,r):e};function Yf(t){t.target.composing=!0}function cl(t){const e=t.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const mi=Symbol("_assign"),Pa={created(t,{modifiers:{lazy:e,trim:r,number:n}},s){t[mi]=ll(s);const i=n||s.props&&s.props.type==="number";An(t,e?"change":"input",a=>{if(a.target.composing)return;let o=t.value;r&&(o=o.trim()),i&&(o=$i(o)),t[mi](o)}),r&&An(t,"change",()=>{t.value=t.value.trim()}),e||(An(t,"compositionstart",Yf),An(t,"compositionend",cl),An(t,"change",cl))},mounted(t,{value:e}){t.value=e??""},beforeUpdate(t,{value:e,oldValue:r,modifiers:{lazy:n,trim:s,number:i}},a){if(t[mi]=ll(a),t.composing)return;const o=(i||t.type==="number")&&!/^0\d/.test(t.value)?$i(t.value):t.value,l=e??"";o!==l&&(document.activeElement===t&&t.type!=="range"&&(n&&e===r||s&&t.value.trim()===l)||(t.value=l))}},Xf=["ctrl","shift","alt","meta"],Jf={stop:t=>t.stopPropagation(),prevent:t=>t.preventDefault(),self:t=>t.target!==t.currentTarget,ctrl:t=>!t.ctrlKey,shift:t=>!t.shiftKey,alt:t=>!t.altKey,meta:t=>!t.metaKey,left:t=>"button"in t&&t.button!==0,middle:t=>"button"in t&&t.button!==1,right:t=>"button"in t&&t.button!==2,exact:(t,e)=>Xf.some(r=>t[`${r}Key`]&&!e.includes(r))},gi=(t,e)=>{const r=t._withMods||(t._withMods={}),n=e.join(".");return r[n]||(r[n]=(s,...i)=>{for(let a=0;a{const r=t._withKeys||(t._withKeys={}),n=e.join(".");return r[n]||(r[n]=s=>{if(!("key"in s))return;const i=Qr(s.key);if(e.some(a=>a===i||Zf[a]===i))return t(s)})},Qf=yt({patchProp:Gf},If);let ul;function ep(){return ul||(ul=ef(Qf))}const tp=(...t)=>{const e=ep().createApp(...t),{mount:r}=e;return e.mount=n=>{const s=np(n);if(!s)return;const i=e._component;!De(i)&&!i.render&&!i.template&&(i.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const a=r(s,!1,rp(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),a},e};function rp(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function np(t){return ut(t)?document.querySelector(t):t}var sp=Object.defineProperty,ip=(t,e,r)=>e in t?sp(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,I0=(t,e,r)=>(ip(t,typeof e!="symbol"?e+"":e,r),r);const Ha={name:"Latte",type:"light",palette:["#dd7878","#ea76cb","#8839ef","#e64553","#fe640b","#df8e1d","#40a02b","#209fb5","#1e66f5","#7287fd"],cssVar:{"--node-gap-x":"30px","--node-gap-y":"10px","--main-gap-x":"65px","--main-gap-y":"45px","--root-radius":"30px","--main-radius":"20px","--root-color":"#ffffff","--root-bgcolor":"#4c4f69","--root-border-color":"rgba(0, 0, 0, 0)","--main-color":"#444446","--main-bgcolor":"#ffffff","--topic-padding":"3px","--color":"#777777","--bgcolor":"#f6f6f6","--selected":"#4dc4ff","--accent-color":"#e64553","--panel-color":"#444446","--panel-bgcolor":"#ffffff","--panel-border-color":"#eaeaea","--map-padding":"50px"}},qa={name:"Dark",type:"dark",palette:["#848FA0","#748BE9","#D2F9FE","#4145A5","#789AFA","#706CF4","#EF987F","#775DD5","#FCEECF","#DA7FBC"],cssVar:{"--node-gap-x":"30px","--node-gap-y":"10px","--main-gap-x":"65px","--main-gap-y":"45px","--root-radius":"30px","--main-radius":"20px","--root-color":"#ffffff","--root-bgcolor":"#2d3748","--root-border-color":"rgba(255, 255, 255, 0.1)","--main-color":"#ffffff","--main-bgcolor":"#4c4f69","--topic-padding":"3px","--color":"#cccccc","--bgcolor":"#252526","--selected":"#4dc4ff","--accent-color":"#789AFA","--panel-color":"#ffffff","--panel-bgcolor":"#2d3748","--panel-border-color":"#696969","--map-padding":"50px 80px"}};function Yi(t){return t.replace(/&/g,"&").replace(/{if(t.parent=e,t.children)for(let r=0;r{if(t.expanded=e,t.children)if(r===void 0||r>0){const n=r!==void 0?r-1:void 0;t.children.forEach(s=>{In(s,e,n)})}else t.children.forEach(n=>{In(n,!1)})};function ja(t){if(t.id=gn(),t.children)for(let e=0;e0&&(a=180-a),i<0&&s<0&&(a=180+a),i>0&&s<0&&(a=360-a);const o=12,l=30,c=a+l,d=a-l;return{x1:r+Math.cos(Math.PI*c/180)*o,y1:n-Math.sin(Math.PI*c/180)*o,x2:r+Math.cos(Math.PI*d/180)*o,y2:n-Math.sin(Math.PI*d/180)*o}}function gn(){return(new Date().getTime().toString(16)+Math.random().toString(16).substr(2)).substr(2,16)}const ap=function(){const t=gn();return{topic:this.newTopicName,id:t}};function Ua(t){return JSON.parse(JSON.stringify(t,(e,r)=>{if(e!=="parent")return r}))}const tn=(t,e)=>{let r=0,n=0;for(;e&&e!==t;)r+=e.offsetLeft,n+=e.offsetTop,e=e.offsetParent;return{offsetLeft:r,offsetTop:n}},ft=(t,e)=>{for(const r in e)t.setAttribute(r,e[r])},Xi=t=>t?t.tagName==="ME-TPC":!1,Hs=t=>t.filter(e=>e.nodeObj.parent).filter((e,r,n)=>{for(let s=0;s{const e=/translate\(([^,]+),\s*([^)]+)\)/,r=t.match(e);return r?{x:parseFloat(r[1]),y:parseFloat(r[2])}:{x:0,y:0}},Va=function(t){for(let e=0;e(t.LHS="lhs",t.RHS="rhs",t))(sr||{});const op=t=>{const e=t.map.querySelectorAll(".lhs>me-wrapper>me-parent>me-tpc");t.selectNode(e[Math.ceil(e.length/2)-1])},lp=t=>{const e=t.map.querySelectorAll(".rhs>me-wrapper>me-parent>me-tpc");t.selectNode(e[Math.ceil(e.length/2)-1])},cp=t=>{t.selectNode(t.map.querySelector("me-root>me-tpc"))},up=function(t,e){const r=e.parentElement.parentElement.parentElement.previousSibling;if(r){const n=r.firstChild;t.selectNode(n)}},dp=function(t,e){const r=e.parentElement.nextSibling;if(r&&r.firstChild){const n=r.firstChild.firstChild.firstChild;t.selectNode(n)}},dl=function(t,e){var r,n;const s=t.currentNode||((r=t.currentNodes)==null?void 0:r[0]);if(!s)return;const i=s.nodeObj,a=s.offsetParent.offsetParent.parentElement;i.parent?a.className===e?dp(t,s):(n=i.parent)!=null&&n.parent?up(t,s):cp(t):e===sr.LHS?op(t):lp(t)},hl=function(t,e){const r=t.currentNode;if(!r||!r.nodeObj.parent)return;const n=e+"Sibling",s=r.parentElement.parentElement[n];s?t.selectNode(s.firstChild.firstChild):t.selectNode(r)},vs=function(t,e,r){const{scaleVal:n,scaleSensitivity:s}=t;switch(e){case"in":t.scale(n+s,r);break;case"out":t.scale(n-s,r)}};function hp(t,e){e=e===!0?{}:e;const r=()=>{t.currentArrow?t.removeArrow():t.currentSummary?t.removeSummary(t.currentSummary.summaryObj.id):t.currentNodes&&t.removeNodes(t.currentNodes)};let n=!1,s=null;const i=o=>{const l=t.nodeData;if(o.key==="0")for(const c of l.children)In(c,!1);if(o.key==="=")for(const c of l.children)In(c,!0);if(["1","2","3","4","5","6","7","8","9"].includes(o.key))for(const c of l.children)In(c,!0,Number(o.key)-1);t.refresh(),t.toCenter(),n=!1,s&&(clearTimeout(s),s=null,t.container.removeEventListener("keydown",i))},a={Enter:o=>{o.shiftKey?t.insertSibling("before"):o.ctrlKey||o.metaKey?t.insertParent():t.insertSibling("after")},Tab:()=>{t.addChild()},F1:()=>{t.toCenter()},F2:()=>{t.beginEdit()},ArrowUp:o=>{if(o.altKey)t.moveUpNode();else{if(o.metaKey||o.ctrlKey)return t.initSide();hl(t,"previous")}},ArrowDown:o=>{o.altKey?t.moveDownNode():hl(t,"next")},ArrowLeft:o=>{if(o.metaKey||o.ctrlKey)return t.initLeft();dl(t,sr.LHS)},ArrowRight:o=>{if(o.metaKey||o.ctrlKey)return t.initRight();dl(t,sr.RHS)},PageUp:()=>t.moveUpNode(),PageDown:()=>{t.moveDownNode()},c:o=>{(o.metaKey||o.ctrlKey)&&(t.waitCopy=t.currentNodes)},x:o=>{(o.metaKey||o.ctrlKey)&&(t.waitCopy=t.currentNodes,r())},v:o=>{!t.waitCopy||!t.currentNode||(o.metaKey||o.ctrlKey)&&(t.waitCopy.length===1?t.copyNode(t.waitCopy[0],t.currentNode):t.copyNodes(t.waitCopy,t.currentNode))},"=":o=>{(o.metaKey||o.ctrlKey)&&vs(t,"in")},"-":o=>{(o.metaKey||o.ctrlKey)&&vs(t,"out")},0:o=>{if(o.metaKey||o.ctrlKey){if(n)return;t.scale(1)}},k:o=>{(o.metaKey||o.ctrlKey)&&(n=!0,s&&(clearTimeout(s),t.container.removeEventListener("keydown",i)),s=window.setTimeout(()=>{n=!1,s=null},2e3),t.container.addEventListener("keydown",i))},Delete:r,Backspace:r,...e};t.container.onkeydown=o=>{if(o.preventDefault(),!t.editable)return;const l=a[o.key];l&&l(o)}}function fp(t){const{dragMoveHelper:e}=t,r=p=>{var b,v,x;if(p.button!==0)return;if((b=t.helper1)!=null&&b.moved){t.helper1.clear();return}if((v=t.helper2)!=null&&v.moved){t.helper2.clear();return}if(e.moved){e.clear();return}const y=p.target;if(y.tagName==="ME-EPD")p.ctrlKey||p.metaKey?t.expandNodeAll(y.previousSibling):t.expandNode(y.previousSibling);else if(y.tagName==="ME-TPC"&&t.currentNodes.length>1)t.selectNode(y);else if(!t.editable)return;const M=(x=y.parentElement)==null?void 0:x.parentElement;M.getAttribute("class")==="topiclinks"?t.selectArrow(y.parentElement):M.getAttribute("class")==="summary"&&t.selectSummary(y.parentElement)},n=p=>{var b;if(!t.editable)return;const v=p.target;Xi(v)&&t.beginEdit(v);const x=(b=v.parentElement)==null?void 0:b.parentElement;x.getAttribute("class")==="topiclinks"?t.editArrowLabel(v.parentElement):x.getAttribute("class")==="summary"&&t.editSummary(v.parentElement)};let s=0;const i=p=>{if(p.pointerType==="mouse")return;const b=new Date().getTime(),v=b-s;v<300&&v>0&&n(p),s=b},a=p=>{e.moved=!1;const b=t.mouseSelectionButton===0?2:0;if(p.button!==b&&p.pointerType==="mouse")return;e.x=p.clientX,e.y=p.clientY;const v=p.target;v.className!=="circle"&&v.contentEditable!=="plaintext-only"&&(e.mousedown=!0,v.setPointerCapture(p.pointerId))},o=p=>{if(p.target.contentEditable!=="plaintext-only"){const b=p.clientX-e.x,v=p.clientY-e.y;e.onMove(b,v)}e.x=p.clientX,e.y=p.clientY},l=p=>{const b=t.mouseSelectionButton===0?2:0;if(p.button!==b&&p.pointerType==="mouse")return;const v=p.target;v.hasPointerCapture&&v.hasPointerCapture(p.pointerId)&&v.releasePointerCapture(p.pointerId),e.clear()},c=p=>{if(p.preventDefault(),p.button!==2||!t.editable)return;const b=p.target;Xi(b)&&!b.classList.contains("selected")&&t.selectNode(b),setTimeout(()=>{t.dragMoveHelper.moved||t.bus.fire("showContextMenu",p)},200)},d=p=>{p.stopPropagation(),p.preventDefault(),p.ctrlKey||p.metaKey?p.deltaY<0?vs(t,"in",t.dragMoveHelper):t.scaleVal-t.scaleSensitivity>0&&vs(t,"out",t.dragMoveHelper):p.shiftKey?t.move(-p.deltaY,0):t.move(-p.deltaX,-p.deltaY)},{container:f}=t;return Va([{dom:f,evt:"pointerdown",func:a},{dom:f,evt:"pointermove",func:o},{dom:f,evt:"pointerup",func:l},{dom:f,evt:"pointerup",func:i},{dom:f,evt:"click",func:r},{dom:f,evt:"dblclick",func:n},{dom:f,evt:"contextmenu",func:c},{dom:f,evt:"wheel",func:typeof t.handleWheel=="function"?t.handleWheel:d}])}function pp(){return{handlers:{},addListener:function(t,e){this.handlers[t]===void 0&&(this.handlers[t]=[]),this.handlers[t].push(e)},fire:function(t,...e){if(this.handlers[t]instanceof Array){const r=this.handlers[t];for(let n=0;n{i.direction===0?n+=1:i.direction===1?s+=1:n<=s?(i.direction=0,n+=1):(i.direction=1,s+=1)})}gp(this,r,e)},gp=function(t,e,r){const n=bs.createElement("me-main");n.className=sr.LHS;const s=bs.createElement("me-main");s.className=sr.RHS;for(let i=0;i`${Yi(n)}`).join(""),t.appendChild(r),t.icons=r}else t.icons&&(t.icons=void 0);if(e.tags&&e.tags.length){const r=$t.createElement("div");r.className="tags",e.tags.forEach(n=>{const s=$t.createElement("span");typeof n=="string"?s.textContent=n:(s.textContent=n.text,n.className&&(s.className=n.className),n.style&&Object.assign(s.style,n.style)),r.appendChild(s)}),t.appendChild(r),t.tags=r}else t.tags&&(t.tags=void 0)},bp=function(t,e){const r=$t.createElement("me-wrapper"),{p:n,tpc:s}=this.createParent(t);if(r.appendChild(n),!e&&t.children&&t.children.length>0){const i=Ga(t.expanded);if(n.appendChild(i),t.expanded!==!1){const a=vp(this,t.children);r.appendChild(a)}}return{grp:r,top:n,tpc:s}},yp=function(t){const e=$t.createElement("me-parent"),r=this.createTopic(t);return Wa.call(this,r,t),e.appendChild(r),{p:e,tpc:r}},wp=function(t){const e=$t.createElement("me-children");return e.append(...t),e},xp=function(t){const e=$t.createElement("me-tpc");return e.nodeObj=t,e.dataset.nodeid="me"+t.id,e.draggable=this.draggable,e};function Bu(t){const e=$t.createRange();e.selectNodeContents(t);const r=window.getSelection();r&&(r.removeAllRanges(),r.addRange(e))}const kp=function(t){if(!t)return;const e=$t.createElement("div"),r=t.nodeObj,n=r.topic;t.appendChild(e),e.id="input-box",e.textContent=n,e.contentEditable="plaintext-only",e.spellcheck=!1;const s=getComputedStyle(t);e.style.cssText=`min-width:${t.offsetWidth-8}px; + color:${s.color}; + padding:${s.padding}; + margin:${s.margin}; + font:${s.font}; + background-color:${s.backgroundColor!=="rgba(0, 0, 0, 0)"&&s.backgroundColor}; + border-radius:${s.borderRadius};`,this.direction===0&&(e.style.right="0"),Bu(e),this.bus.fire("operation",{name:"beginEdit",obj:t.nodeObj}),e.addEventListener("keydown",i=>{i.stopPropagation();const a=i.key;if(a==="Enter"||a==="Tab"){if(i.shiftKey)return;i.preventDefault(),e.blur(),this.container.focus()}}),e.addEventListener("blur",()=>{var i;if(!e)return;const a=((i=e.textContent)==null?void 0:i.trim())||"";a===""?r.topic=n:(r.topic=a,this.markdown?t.text.innerHTML=this.markdown(r.topic,r):t.text.textContent=a),e.remove(),a!==n&&(this.linkDiv(),this.bus.fire("operation",{name:"finishEdit",obj:r,origin:n}))})},Ga=function(t){const e=$t.createElement("me-epd");return e.expanded=t!==!1,e.className=t!==!1?"minus":"",e},fn=document,Gt="http://www.w3.org/2000/svg",Ji=function(t,e,r,n={}){const{anchor:s="middle",color:i,dataType:a}=n,o=document.createElementNS(Gt,"text");return ft(o,{"text-anchor":s,x:e+"",y:r+"",fill:i||(s==="middle"?"rgb(235, 95, 82)":"#666")}),a&&(o.dataset.type=a),o.innerHTML=t,o},Pu=function(t,e,r){const n=fn.createElementNS(Gt,"path");return ft(n,{d:t,stroke:e||"#666",fill:"none","stroke-width":r}),n},Jn=function(t){const e=fn.createElementNS(Gt,"svg");return e.setAttribute("class",t),e.setAttribute("overflow","visible"),e},fl=function(){const t=fn.createElementNS(Gt,"line");return t.setAttribute("stroke","#4dc4ff"),t.setAttribute("fill","none"),t.setAttribute("stroke-width","2"),t.setAttribute("opacity","0.45"),t},Sp=function(t,e,r,n){const s=fn.createElementNS(Gt,"g");return[{name:"line",d:t},{name:"arrow1",d:e},{name:"arrow2",d:r}].forEach((i,a)=>{const o=i.d,l=fn.createElementNS(Gt,"path"),c={d:o,stroke:(n==null?void 0:n.stroke)||"rgb(235, 95, 82)",fill:"none","stroke-linecap":(n==null?void 0:n.strokeLinecap)||"cap","stroke-width":String((n==null?void 0:n.strokeWidth)||"2")};(n==null?void 0:n.opacity)!==void 0&&(c.opacity=String(n.opacity)),ft(l,c),a===0&&l.setAttribute("stroke-dasharray",(n==null?void 0:n.strokeDasharray)||"8,2");const d=fn.createElementNS(Gt,"path");ft(d,{d:o,stroke:"transparent",fill:"none","stroke-width":"15"}),s.appendChild(d),s.appendChild(l),s[i.name]=l}),s},Hu=function(t,e,r){if(!e)return;const n=fn.createElement("div");t.nodes.appendChild(n);const s=e.innerHTML;n.id="input-box",n.textContent=s,n.contentEditable="plaintext-only",n.spellcheck=!1;const i=e.getBBox();n.style.cssText=` + min-width:${Math.max(88,i.width)}px; + position:absolute; + left:${i.x}px; + top:${i.y}px; + padding: 2px 4px; + margin: -2px -4px; + `,Bu(n),t.scrollIntoView(n),n.addEventListener("keydown",a=>{a.stopPropagation();const o=a.key;if(o==="Enter"||o==="Tab"){if(a.shiftKey)return;a.preventDefault(),n.blur(),t.container.focus()}}),n.addEventListener("blur",()=>{var a;if(!n)return;const o=((a=n.textContent)==null?void 0:a.trim())||"";o===""?r.label=s:r.label=o,n.remove(),o!==s&&(e.innerHTML=r.label,"parent"in r?t.bus.fire("operation",{name:"finishEditSummary",obj:r}):t.bus.fire("operation",{name:"finishEditArrowLabel",obj:r}))})},Tp=function(t){const e=this.map.querySelector("me-root"),r=e.offsetTop,n=e.offsetLeft,s=e.offsetWidth,i=e.offsetHeight,a=this.map.querySelectorAll("me-main > me-wrapper");this.lines.innerHTML="";for(let o=0;o{const z=document.createElement("div");return z.innerText=O,z.className="tips",z},n=(O,z,W)=>{const U=document.createElement("li");return U.id=O,U.innerHTML=`${Yi(z)}${Yi(W)}`,U},s=ml[t.locale]?t.locale:"en",i=ml[s],a=n("cm-add_child",i.addChild,"Tab"),o=n("cm-add_parent",i.addParent,"Ctrl + Enter"),l=n("cm-add_sibling",i.addSibling,"Enter"),c=n("cm-remove_child",i.removeNode,"Delete"),d=n("cm-fucus",i.focus,""),f=n("cm-unfucus",i.cancelFocus,""),p=n("cm-up",i.moveUp,"PgUp"),b=n("cm-down",i.moveDown,"Pgdn"),v=n("cm-link",i.link,""),x=n("cm-link-bidirectional",i.linkBidirectional,""),y=n("cm-summary",i.summary,""),M=document.createElement("ul");if(M.className="menu-list",M.appendChild(a),M.appendChild(o),M.appendChild(l),M.appendChild(c),e.focus&&(M.appendChild(d),M.appendChild(f)),M.appendChild(p),M.appendChild(b),M.appendChild(y),e.link&&(M.appendChild(v),M.appendChild(x)),e&&e.extend)for(let O=0;O{z.onclick(U)}}const k=document.createElement("div");k.className="context-menu",k.appendChild(M),k.hidden=!0,t.container.append(k);let T=!0;const N=O=>{const z=O.target;if(Xi(z)){z.parentElement.tagName==="ME-ROOT"?T=!0:T=!1,T?(d.className="disabled",p.className="disabled",b.className="disabled",o.className="disabled",l.className="disabled",c.className="disabled"):(d.className="",p.className="",b.className="",o.className="",l.className="",c.className=""),k.hidden=!1,M.style.top="",M.style.bottom="",M.style.left="",M.style.right="";const W=M.getBoundingClientRect(),U=M.offsetHeight,he=M.offsetWidth,ge=O.clientY-W.top,Ae=O.clientX-W.left;U+ge>window.innerHeight?(M.style.top="",M.style.bottom="0px"):(M.style.bottom="",M.style.top=ge+15+"px"),he+Ae>window.innerWidth?(M.style.left="",M.style.right="0px"):(M.style.right="",M.style.left=Ae+10+"px")}};t.bus.addListener("showContextMenu",N),k.onclick=O=>{O.target===k&&(k.hidden=!0)},a.onclick=()=>{t.addChild(),k.hidden=!0},o.onclick=()=>{t.insertParent(),k.hidden=!0},l.onclick=()=>{T||(t.insertSibling("after"),k.hidden=!0)},c.onclick=()=>{T||(t.removeNodes(t.currentNodes||[]),k.hidden=!0)},d.onclick=()=>{T||(t.focusNode(t.currentNode),k.hidden=!0)},f.onclick=()=>{t.cancelFocus(),k.hidden=!0},p.onclick=()=>{T||(t.moveUpNode(),k.hidden=!0)},b.onclick=()=>{T||(t.moveDownNode(),k.hidden=!0)};const I=O=>{k.hidden=!0;const z=t.currentNode,W=r(i.clickTips);t.container.appendChild(W),t.map.addEventListener("click",U=>{U.preventDefault(),W.remove();const he=U.target;(he.parentElement.tagName==="ME-PARENT"||he.parentElement.tagName==="ME-ROOT")&&t.createArrow(z,he,O)},{once:!0})};return v.onclick=()=>I(),x.onclick=()=>I({bidirectional:!0}),y.onclick=()=>{k.hidden=!0,t.createSummary(),t.unselectNodes(t.currentNodes)},()=>{a.onclick=null,o.onclick=null,l.onclick=null,c.onclick=null,d.onclick=null,f.onclick=null,p.onclick=null,b.onclick=null,v.onclick=null,y.onclick=null,k.onclick=null,t.container.oncontextmenu=null}}const Zi=document,Ep=function(t,e){if(!e)return Qi(t),t;let r=t.querySelector(".insert-preview");const n=`insert-preview ${e} show`;return r||(r=Zi.createElement("div"),t.appendChild(r)),r.className=n,t},Qi=function(t){if(!t)return;const e=t.querySelectorAll(".insert-preview");for(const r of e||[])r.remove()},gl=function(t,e){for(const r of e){const n=r.parentElement.parentElement.contains(t);if(!(t&&t.tagName==="ME-TPC"&&t!==r&&!n&&t.nodeObj.parent))return!1}return!0},Cp=function(t){const e=document.createElement("div");return e.className="mind-elixir-ghost",t.container.appendChild(e),e};class Mp{constructor(e){I0(this,"mind"),I0(this,"isMoving",!1),I0(this,"interval",null),I0(this,"speed",20),this.mind=e}move(e,r){this.isMoving||(this.isMoving=!0,this.interval=setInterval(()=>{this.mind.move(e*this.speed*this.mind.scaleVal,r*this.speed*this.mind.scaleVal)},100))}stop(){this.isMoving=!1,clearInterval(this.interval)}}function Np(t){let e=null,r=null;const n=Cp(t),s=new Mp(t),i=l=>{t.selection.cancel();const c=l.target;if((c==null?void 0:c.tagName)!=="ME-TPC"){l.preventDefault();return}let d=t.currentNodes;d!=null&&d.includes(c)||(t.selectNode(c),d=t.currentNodes),t.dragged=d,d.length>1?n.innerHTML=d.length+"":n.innerHTML=c.innerHTML;for(const f of d)f.parentElement.parentElement.style.opacity="0.5";l.dataTransfer.setDragImage(n,0,0),l.dataTransfer.dropEffect="move",t.dragMoveHelper.clear()},a=l=>{const{dragged:c}=t;if(!c)return;s.stop();for(const f of c)f.parentElement.parentElement.style.opacity="1";const d=l.target;d.style.opacity="",r&&(Qi(r),e==="before"?t.moveNodeBefore(c,r):e==="after"?t.moveNodeAfter(c,r):e==="in"&&t.moveNodeIn(c,r),t.dragged=null,n.innerHTML="")},o=l=>{l.preventDefault();const c=12*t.scaleVal,{dragged:d}=t;if(!d)return;const f=t.container.getBoundingClientRect();l.clientXf.x+f.width-50?s.move(-1,0):l.clientYf.y+f.height-50?s.move(0,-1):s.stop(),Qi(r);const p=Zi.elementFromPoint(l.clientX,l.clientY-c);if(gl(p,d)){r=p;const b=p.getBoundingClientRect(),v=b.y;l.clientY>v+b.height?e="after":e="in"}else{const b=Zi.elementFromPoint(l.clientX,l.clientY+c),v=b.getBoundingClientRect();if(gl(b,d)){r=b;const x=v.y;l.clientYe.id)}:{type:"nodes",value:[t.obj.id]}};function Rp(t){let e=[],r=-1,n=t.getData(),s=[];t.undo=function(){if(r>-1){const l=e[r];n=l.prev,t.refresh(l.prev);try{l.currentTarget.type==="nodes"&&(l.operation==="removeNodes"?t.selectNodes(l.currentTarget.value.map(c=>this.findEle(c))):t.selectNodes(l.currentSelected.map(c=>this.findEle(c))))}catch{}finally{r--}}},t.redo=function(){if(rthis.findEle(c))):t.selectNodes(l.currentTarget.value.map(c=>this.findEle(c))))}catch{}}};const i=function(l){if(l.name==="beginEdit")return;e=e.slice(0,r+1);const c=t.getData(),d={prev:n,operation:l.name,currentSelected:s.map(f=>f.id),currentTarget:Dp(l),next:c};e.push(d),n=c,r=e.length-1},a=function(l){(l.metaKey||l.ctrlKey)&&(l.shiftKey&&l.key==="Z"||l.key==="y")?t.redo():(l.metaKey||l.ctrlKey)&&l.key==="z"&&t.undo()},o=function(l){s=t.currentNodes.map(c=>c.nodeObj)};return t.bus.addListener("operation",i),t.bus.addListener("selectNodes",o),t.container.addEventListener("keydown",a),()=>{t.bus.removeListener("operation",i),t.bus.removeListener("selectNodes",o),t.container.removeEventListener("keydown",a)}}const Ip='',_p='',Op='',Lp='',zp='',Fp='',$p='',Bp={side:Ip,left:_p,right:Op,full:Lp,living:zp,zoomin:Fp,zoomout:$p},un=(t,e)=>{const r=document.createElement("span");return r.id=t,r.innerHTML=Bp[e],r};function Pp(t){const e=document.createElement("div"),r=un("fullscreen","full"),n=un("toCenter","living"),s=un("zoomout","zoomout"),i=un("zoomin","zoomin"),a=document.createElement("span");return a.innerText="100%",e.appendChild(r),e.appendChild(n),e.appendChild(s),e.appendChild(i),e.className="mind-elixir-toolbar rb",r.onclick=()=>{document.fullscreenElement===t.el?document.exitFullscreen():t.el.requestFullscreen()},n.onclick=()=>{t.toCenter()},s.onclick=()=>{t.scale(t.scaleVal-t.scaleSensitivity)},i.onclick=()=>{t.scale(t.scaleVal+t.scaleSensitivity)},e}function Hp(t){const e=document.createElement("div"),r=un("tbltl","left"),n=un("tbltr","right"),s=un("tblts","side");return e.appendChild(r),e.appendChild(n),e.appendChild(s),e.className="mind-elixir-toolbar lt",r.onclick=()=>{t.initLeft()},n.onclick=()=>{t.initRight()},s.onclick=()=>{t.initSide()},e}function qp(t){t.container.append(Pp(t)),t.container.append(Hp(t))}/*! @viselect/vanilla v3.9.0 MIT | https://github.com/Simonwep/selection/tree/master/packages/vanilla */class jp{constructor(){this._listeners=new Map,this.on=this.addEventListener,this.off=this.removeEventListener,this.emit=this.dispatchEvent}addEventListener(e,r){const n=this._listeners.get(e)??new Set;return this._listeners.set(e,n),n.add(r),this}removeEventListener(e,r){var n;return(n=this._listeners.get(e))==null||n.delete(r),this}dispatchEvent(e,...r){let n=!0;for(const s of this._listeners.get(e)??[])n=s(...r)!==!1&&n;return n}unbindAllListeners(){this._listeners.clear()}}const vl=(t,e="px")=>typeof t=="number"?t+e:t,$r=({style:t},e,r)=>{if(typeof e=="object")for(const[n,s]of Object.entries(e))s!==void 0&&(t[n]=vl(s));else r!==void 0&&(t[e]=vl(r))},bl=(t=0,e=0,r=0,n=0)=>{const s={x:t,y:e,width:r,height:n,top:e,left:t,right:t+r,bottom:e+n};return{...s,toJSON:()=>JSON.stringify(s)}},Up=t=>{let e,r=-1,n=!1;return{next:(...s)=>{e=s,n||(n=!0,r=requestAnimationFrame(()=>{t(...e),n=!1}))},cancel:()=>{cancelAnimationFrame(r),n=!1}}},yl=(t,e,r="touch")=>{switch(r){case"center":{const n=e.left+e.width/2,s=e.top+e.height/2;return n>=t.left&&n<=t.right&&s>=t.top&&s<=t.bottom}case"cover":return e.left>=t.left&&e.top>=t.top&&e.right<=t.right&&e.bottom<=t.bottom;case"touch":return t.right>=e.left&&t.left<=e.right&&t.bottom>=e.top&&t.top<=e.bottom}},Vp=()=>matchMedia("(hover: none), (pointer: coarse)").matches,Wp=()=>"safari"in window,ea=t=>Array.isArray(t)?t:[t],ju=t=>(e,r,n,s={})=>{(e instanceof HTMLCollection||e instanceof NodeList)&&(e=Array.from(e)),r=ea(r),e=ea(e);for(const i of e)if(i)for(const a of r)i[t](a,n,{capture:!1,...s})},Br=ju("addEventListener"),Zt=ju("removeEventListener"),_0=t=>{var e;const{clientX:r,clientY:n,target:s}=((e=t.touches)==null?void 0:e[0])??t;return{x:r,y:n,target:s}},xn=(t,e=document)=>ea(t).map(r=>typeof r=="string"?Array.from(e.querySelectorAll(r)):r instanceof Element?r:null).flat().filter(Boolean),Gp=(t,e)=>e.some(r=>typeof r=="number"?t.button===r:typeof r=="object"?r.button!==t.button?!1:r.modifiers.every(n=>{switch(n){case"alt":return t.altKey;case"ctrl":return t.ctrlKey||t.metaKey;case"shift":return t.shiftKey}}):!1),{abs:an,max:wl,min:xl,ceil:kl}=Math,Sl=(t=[])=>({stored:t,selected:[],touched:[],changed:{added:[],removed:[]}}),Uu=class extends jp{constructor(e){var r,n,s,i,a;super(),this._selection=Sl(),this._targetBoundaryScrolled=!0,this._selectables=[],this._areaLocation={y1:0,x2:0,y2:0,x1:0},this._areaRect=bl(),this._singleClick=!0,this._scrollAvailable=!0,this._scrollingActive=!1,this._scrollSpeed={x:0,y:0},this._scrollDelta={x:0,y:0},this._lastMousePosition={x:0,y:0},this.enable=this._toggleStartEvents,this.disable=this._toggleStartEvents.bind(this,!1),this._options={selectionAreaClass:"selection-area",selectionContainerClass:void 0,selectables:[],document:window.document,startAreas:["html"],boundaries:["html"],container:"body",...e,behaviour:{overlap:"invert",intersect:"touch",triggers:[0],...e.behaviour,startThreshold:(r=e.behaviour)!=null&&r.startThreshold?typeof e.behaviour.startThreshold=="number"?e.behaviour.startThreshold:{x:10,y:10,...e.behaviour.startThreshold}:{x:10,y:10},scrolling:{speedDivider:10,manualSpeed:750,...(n=e.behaviour)==null?void 0:n.scrolling,startScrollMargins:{x:0,y:0,...(i=(s=e.behaviour)==null?void 0:s.scrolling)==null?void 0:i.startScrollMargins}}},features:{range:!0,touch:!0,deselectOnBlur:!1,...e.features,singleTap:{allow:!0,intersect:"native",...(a=e.features)==null?void 0:a.singleTap}}};for(const d of Object.getOwnPropertyNames(Object.getPrototypeOf(this)))typeof this[d]=="function"&&(this[d]=this[d].bind(this));const{document:o,selectionAreaClass:l,selectionContainerClass:c}=this._options;this._area=o.createElement("div"),this._clippingElement=o.createElement("div"),this._clippingElement.appendChild(this._area),this._area.classList.add(l),c&&this._clippingElement.classList.add(c),$r(this._area,{willChange:"top, left, bottom, right, width, height",top:0,left:0,position:"fixed"}),$r(this._clippingElement,{overflow:"hidden",position:"fixed",transform:"translate3d(0, 0, 0)",pointerEvents:"none",zIndex:"1"}),this._frame=Up(d=>{this._recalculateSelectionAreaRect(),this._updateElementSelection(),this._emitEvent("move",d),this._redrawSelectionArea()}),this.enable()}_toggleStartEvents(e=!0){const{document:r,features:n}=this._options,s=e?Br:Zt;s(r,"mousedown",this._onTapStart),n.touch&&s(r,"touchstart",this._onTapStart,{passive:!1})}_onTapStart(e,r=!1){const{x:n,y:s,target:i}=_0(e),{document:a,startAreas:o,boundaries:l,features:c,behaviour:d}=this._options,f=i.getBoundingClientRect();if(e instanceof MouseEvent&&!Gp(e,d.triggers))return;const p=xn(o,a),b=xn(l,a);this._targetElement=b.find(M=>yl(M.getBoundingClientRect(),f));const v=e.composedPath(),x=p.find(M=>v.includes(M));if(this._targetBoundary=b.find(M=>v.includes(M)),!this._targetElement||!x||!this._targetBoundary||!r&&this._emitEvent("beforestart",e)===!1)return;this._areaLocation={x1:n,y1:s,x2:0,y2:0};const y=a.scrollingElement??a.body;this._scrollDelta={x:y.scrollLeft,y:y.scrollTop},this._singleClick=!0,this.clearSelection(!1,!0),Br(a,["touchmove","mousemove"],this._delayedTapMove,{passive:!1}),Br(a,["mouseup","touchcancel","touchend"],this._onTapStop),Br(a,"scroll",this._onScroll),c.deselectOnBlur&&(this._targetBoundaryScrolled=!1,Br(this._targetBoundary,"scroll",this._onStartAreaScroll))}_onSingleTap(e){const{singleTap:{intersect:r},range:n}=this._options.features,s=_0(e);let i;if(r==="native")i=s.target;else if(r==="touch"){this.resolveSelectables();const{x:o,y:l}=s;i=this._selectables.find(c=>{const{right:d,left:f,top:p,bottom:b}=c.getBoundingClientRect();return of&&lp})}if(!i)return;for(this.resolveSelectables();!this._selectables.includes(i);)if(i.parentElement)i=i.parentElement;else{this._targetBoundaryScrolled||this.clearSelection();return}const{stored:a}=this._selection;if(this._emitEvent("start",e),e.shiftKey&&n&&this._latestElement){const o=this._latestElement,[l,c]=o.compareDocumentPosition(i)&4?[i,o]:[o,i],d=[...this._selectables.filter(f=>f.compareDocumentPosition(l)&4&&f.compareDocumentPosition(c)&2),l,c];this.select(d),this._latestElement=o}else a.includes(i)&&(a.length===1||e.ctrlKey||a.every(o=>this._selection.stored.includes(o)))?this.deselect(i):(this.select(i),this._latestElement=i)}_delayedTapMove(e){const{container:r,document:n,behaviour:{startThreshold:s}}=this._options,{x1:i,y1:a}=this._areaLocation,{x:o,y:l}=_0(e);if(typeof s=="number"&&an(o+l-(i+a))>=s||typeof s=="object"&&an(o-i)>=s.x||an(l-a)>=s.y){if(Zt(n,["mousemove","touchmove"],this._delayedTapMove,{passive:!1}),this._emitEvent("beforedrag",e)===!1){Zt(n,["mouseup","touchcancel","touchend"],this._onTapStop);return}Br(n,["mousemove","touchmove"],this._onTapMove,{passive:!1}),$r(this._area,"display","block"),xn(r,n)[0].appendChild(this._clippingElement),this.resolveSelectables(),this._singleClick=!1,this._targetRect=this._targetElement.getBoundingClientRect(),this._scrollAvailable=this._targetElement.scrollHeight!==this._targetElement.clientHeight||this._targetElement.scrollWidth!==this._targetElement.clientWidth,this._scrollAvailable&&(Br(this._targetElement,"wheel",this._wheelScroll,{passive:!1}),Br(this._options.document,"keydown",this._keyboardScroll,{passive:!1}),this._selectables=this._selectables.filter(c=>this._targetElement.contains(c))),this._setupSelectionArea(),this._emitEvent("start",e),this._onTapMove(e)}this._handleMoveEvent(e)}_setupSelectionArea(){const{_clippingElement:e,_targetElement:r,_area:n}=this,s=this._targetRect=r.getBoundingClientRect();this._scrollAvailable?($r(e,{top:s.top,left:s.left,width:s.width,height:s.height}),$r(n,{marginTop:-s.top,marginLeft:-s.left})):($r(e,{top:0,left:0,width:"100%",height:"100%"}),$r(n,{marginTop:0,marginLeft:0}))}_onTapMove(e){const{_scrollSpeed:r,_areaLocation:n,_options:s,_frame:i}=this,{speedDivider:a}=s.behaviour.scrolling,o=this._targetElement,{x:l,y:c}=_0(e);if(n.x2=l,n.y2=c,this._lastMousePosition.x=l,this._lastMousePosition.y=c,this._scrollAvailable&&!this._scrollingActive&&(r.y||r.x)){this._scrollingActive=!0;const d=()=>{if(!r.x&&!r.y){this._scrollingActive=!1;return}const{scrollTop:f,scrollLeft:p}=o;r.y&&(o.scrollTop+=kl(r.y/a),n.y1-=o.scrollTop-f),r.x&&(o.scrollLeft+=kl(r.x/a),n.x1-=o.scrollLeft-p),i.next(e),requestAnimationFrame(d)};requestAnimationFrame(d)}else i.next(e);this._handleMoveEvent(e)}_handleMoveEvent(e){const{features:r}=this._options;(r.touch&&Vp()||this._scrollAvailable&&Wp())&&e.preventDefault()}_onScroll(){const{_scrollDelta:e,_options:{document:r}}=this,{scrollTop:n,scrollLeft:s}=r.scrollingElement??r.body;this._areaLocation.x1+=e.x-s,this._areaLocation.y1+=e.y-n,e.x=s,e.y=n,this._setupSelectionArea(),this._frame.next(null)}_onStartAreaScroll(){this._targetBoundaryScrolled=!0,Zt(this._targetElement,"scroll",this._onStartAreaScroll)}_wheelScroll(e){const{manualSpeed:r}=this._options.behaviour.scrolling,n=e.deltaY?e.deltaY>0?1:-1:0,s=e.deltaX?e.deltaX>0?1:-1:0;this._scrollSpeed.y+=n*r,this._scrollSpeed.x+=s*r,this._onTapMove(e),e.preventDefault()}_keyboardScroll(e){const{manualSpeed:r}=this._options.behaviour.scrolling,n=e.key==="ArrowLeft"?-1:e.key==="ArrowRight"?1:0,s=e.key==="ArrowUp"?-1:e.key==="ArrowDown"?1:0;this._scrollSpeed.x+=Math.sign(n)*r,this._scrollSpeed.y+=Math.sign(s)*r,e.preventDefault(),this._onTapMove({clientX:this._lastMousePosition.x,clientY:this._lastMousePosition.y,preventDefault:()=>{}})}_recalculateSelectionAreaRect(){const{_scrollSpeed:e,_areaLocation:r,_targetElement:n,_options:s}=this,{scrollTop:i,scrollHeight:a,clientHeight:o,scrollLeft:l,scrollWidth:c,clientWidth:d}=n,f=this._targetRect,{x1:p,y1:b}=r;let{x2:v,y2:x}=r;const{behaviour:{scrolling:{startScrollMargins:y}}}=s;vf.right-y.x?(e.x=c-l-d?an(f.left+f.width-v-y.x):0,v=v>f.right?f.right:v):e.x=0,xf.bottom-y.y?(e.y=a-i-o?an(f.top+f.height-x-y.y):0,x=x>f.bottom?f.bottom:x):e.y=0;const M=xl(p,v),k=xl(b,x),T=wl(p,v),N=wl(b,x);this._areaRect=bl(M,k,T-M,N-k)}_redrawSelectionArea(){const{x:e,y:r,width:n,height:s}=this._areaRect,{style:i}=this._area;i.left=`${e}px`,i.top=`${r}px`,i.width=`${n}px`,i.height=`${s}px`}_onTapStop(e,r){var n;const{document:s,features:i}=this._options,{_singleClick:a}=this;Zt(this._targetElement,"scroll",this._onStartAreaScroll),Zt(s,["mousemove","touchmove"],this._delayedTapMove),Zt(s,["touchmove","mousemove"],this._onTapMove),Zt(s,["mouseup","touchcancel","touchend"],this._onTapStop),Zt(s,"scroll",this._onScroll),this._keepSelection(),e&&a&&i.singleTap.allow?this._onSingleTap(e):!a&&!r&&(this._updateElementSelection(),this._emitEvent("stop",e)),this._scrollSpeed.x=0,this._scrollSpeed.y=0,Zt(this._targetElement,"wheel",this._wheelScroll,{passive:!0}),Zt(this._options.document,"keydown",this._keyboardScroll,{passive:!0}),this._clippingElement.remove(),(n=this._frame)==null||n.cancel(),$r(this._area,"display","none")}_updateElementSelection(){const{_selectables:e,_options:r,_selection:n,_areaRect:s}=this,{stored:i,selected:a,touched:o}=n,{intersect:l,overlap:c}=r.behaviour,d=c==="invert",f=[],p=[],b=[];for(let x=0;x!a.includes(x)));const v=c==="keep";for(let x=0;x!a.includes(l));switch(e.behaviour.overlap){case"drop":{r.stored=[...o,...a.filter(l=>!i.includes(l))];break}case"invert":{r.stored=[...o,...a.filter(l=>!s.removed.includes(l))];break}case"keep":{r.stored=[...a,...n.filter(l=>!a.includes(l))];break}}}trigger(e,r=!0){this._onTapStart(e,r)}resolveSelectables(){this._selectables=xn(this._options.selectables,this._options.document)}clearSelection(e=!0,r=!1){const{selected:n,stored:s,changed:i}=this._selection;i.added=[],i.removed.push(...n,...e?s:[]),r||(this._emitEvent("move",null),this._emitEvent("stop",null)),this._selection=Sl(e?[]:s)}getSelection(){return this._selection.stored}getSelectionArea(){return this._area}getSelectables(){return this._selectables}setAreaLocation(e){Object.assign(this._areaLocation,e),this._redrawSelectionArea()}getAreaLocation(){return this._areaLocation}cancel(e=!1){this._onTapStop(null,!e)}destroy(){this.cancel(),this.disable(),this._clippingElement.remove(),super.unbindAllListeners()}select(e,r=!1){const{changed:n,selected:s,stored:i}=this._selection,a=xn(e,this._options.document).filter(o=>!s.includes(o)&&!i.includes(o));return i.push(...a),s.push(...a),n.added.push(...a),n.removed=[],this._latestElement=void 0,r||(this._emitEvent("move",null),this._emitEvent("stop",null)),a}deselect(e,r=!1){const{selected:n,stored:s,changed:i}=this._selection,a=xn(e,this._options.document).filter(o=>n.includes(o)||s.includes(o));this._selection.stored=s.filter(o=>!a.includes(o)),this._selection.selected=n.filter(o=>!a.includes(o)),this._selection.changed.added=[],this._selection.changed.removed.push(...a.filter(o=>!i.removed.includes(o))),this._latestElement=void 0,r||(this._emitEvent("move",null),this._emitEvent("stop",null))}};Uu.version="3.9.0";let Kp=Uu;function Yp(t){const e=t.mouseSelectionButton===2?[2]:[0],r=new Kp({selectables:[".map-container me-tpc"],boundaries:[t.container],container:t.selectionContainer,features:{touch:!1},behaviour:{triggers:e,scrolling:{speedDivider:10,manualSpeed:750,startScrollMargins:{x:10,y:10}}}}).on("beforestart",({event:n})=>{var s;const i=n.target;if(i.id==="input-box"||i.className==="circle"||(s=t.container.querySelector(".context-menu"))!=null&&s.contains(i))return!1;if(!n.ctrlKey&&!n.metaKey){if(i.tagName==="ME-TPC"&&i.classList.contains("selected"))return!1;t.clearSelection()}const a=r.getSelectionArea();return a.style.background="#4f90f22d",a.style.border="1px solid #4f90f2",a.parentElement&&(a.parentElement.style.zIndex="9999"),!0}).on("move",({store:{changed:{added:n,removed:s}}})=>{if(n.length>0||s.length>0,n.length>0){for(const i of n)i.className="selected";t.currentNodes=[...t.currentNodes,...n],t.bus.fire("selectNodes",n.map(i=>i.nodeObj))}if(s.length>0){for(const i of s)i.classList.remove("selected");t.currentNodes=t.currentNodes.filter(i=>!(s!=null&&s.includes(i))),t.bus.fire("unselectNodes",s.map(i=>i.nodeObj))}});t.selection=r}const Xp=function(t,e=!0){this.theme=t;const r={...(t.type==="dark"?qa:Ha).cssVar,...t.cssVar},n=Object.keys(r);for(let s=0;s{var e;const r=(e=t.parent)==null?void 0:e.children,n=(r==null?void 0:r.indexOf(t))??0;return{siblings:r,index:n}};function Jp(t){const{siblings:e,index:r}=$n(t);if(e===void 0)return;const n=e[r];r===0?(e[r]=e[e.length-1],e[e.length-1]=n):(e[r]=e[r-1],e[r-1]=n)}function Zp(t){const{siblings:e,index:r}=$n(t);if(e===void 0)return;const n=e[r];r===e.length-1?(e[r]=e[0],e[0]=n):(e[r]=e[r+1],e[r+1]=n)}function Vu(t){const{siblings:e,index:r}=$n(t);return e===void 0?0:(e.splice(r,1),e.length)}function Qp(t,e,r){const{siblings:n,index:s}=$n(r);n!==void 0&&(e==="before"?n.splice(s,0,t):n.splice(s+1,0,t))}function e4(t,e){const{siblings:r,index:n}=$n(t);r!==void 0&&(r[n]=e,e.children=[t])}function Wu(t,e,r){var n;if(Vu(e),(n=r.parent)!=null&&n.parent||(e.direction=r.direction),t==="in")r.children?r.children.push(e):r.children=[e];else{e.direction!==void 0&&(e.direction=r.direction);const{siblings:s,index:i}=$n(r);if(s===void 0)return;t==="before"?s.splice(i,0,e):s.splice(i+1,0,e)}}const t4=function({map:t,direction:e},r){var n,s;if(e===0)return 0;if(e===1)return 1;if(e===2){const i=((n=t.querySelector(".lhs"))==null?void 0:n.childElementCount)||0,a=((s=t.querySelector(".rhs"))==null?void 0:s.childElementCount)||0;return i<=a?(r.direction=0,0):(r.direction=1,1)}},Gu=function(t,e,r){var n,s;const i=r.children[0].children[0],a=e.parentElement;if(a.tagName==="ME-PARENT"){if(y0(i),a.children[1])a.nextSibling.appendChild(r);else{const o=t.createChildren([r]);a.appendChild(Ga(!0)),a.insertAdjacentElement("afterend",o)}t.linkDiv(r.offsetParent)}else a.tagName==="ME-ROOT"&&(t4(t,i.nodeObj)===0?(n=t.container.querySelector(".lhs"))==null||n.appendChild(r):(s=t.container.querySelector(".rhs"))==null||s.appendChild(r),t.linkDiv())},r4=function(t,e){const r=t.parentNode;if(e===0){const n=r.parentNode.parentNode;n.tagName!=="ME-MAIN"&&(n.previousSibling.children[1].remove(),n.remove())}r.parentNode.remove()},Ku={before:"beforebegin",after:"afterend"},y0=function(t){const e=t.parentElement.parentElement.lastElementChild;(e==null?void 0:e.tagName)==="svg"&&(e==null||e.remove())},n4=function(t,e){const r=t.nodeObj,n=Ua(r);n.style&&e.style&&(e.style=Object.assign(n.style,e.style));const s=Object.assign(r,e);Wa.call(this,t,s),this.linkDiv(),this.bus.fire("operation",{name:"reshapeNode",obj:s,origin:n})},Ka=function(t,e,r){if(!e)return null;const n=e.nodeObj;n.expanded===!1&&(t.expandNode(e,!0),e=t.findEle(n.id));const s=r||t.generateNewObj();n.children?n.children.push(s):n.children=[s],en(t.nodeData);const{grp:i,top:a}=t.createWrapper(s);return Gu(t,e,i),{newTop:a,newNodeObj:s}},s4=function(t,e,r){var n,s,i,a;const o=e||this.currentNode;if(!o)return;const l=o.nodeObj;if(l.parent){if(!((n=l.parent)!=null&&n.parent)&&((i=(s=l.parent)==null?void 0:s.children)==null?void 0:i.length)===1&&this.direction===2){this.addChild(this.findEle(l.parent.id),r);return}}else{this.addChild();return}const c=r||this.generateNewObj();if(!((a=l.parent)!=null&&a.parent)){const b=o.closest("me-main").className===sr.LHS?0:1;c.direction=b}Qp(c,t,l),en(this.nodeData);const d=o.parentElement,{grp:f,top:p}=this.createWrapper(c);d.parentElement.insertAdjacentElement(Ku[t],f),this.linkDiv(f.offsetParent),r||this.editTopic(p.firstChild),this.bus.fire("operation",{name:"insertSibling",type:t,obj:c}),this.selectNode(p.firstChild,!0)},i4=function(t,e){const r=t||this.currentNode;if(!r)return;y0(r);const n=r.nodeObj;if(!n.parent)return;const s=e||this.generateNewObj();e4(n,s),en(this.nodeData);const i=r.parentElement.parentElement,{grp:a,top:o}=this.createWrapper(s,!0);o.appendChild(Ga(!0)),i.insertAdjacentElement("afterend",a);const l=this.createChildren([i]);o.insertAdjacentElement("afterend",l),this.linkDiv(),e||this.editTopic(o.firstChild),this.selectNode(o.firstChild,!0),this.bus.fire("operation",{name:"insertParent",obj:s})},a4=function(t,e){const r=t||this.currentNode;if(!r)return;const n=Ka(this,r,e);if(!n)return;const{newTop:s,newNodeObj:i}=n;this.bus.fire("operation",{name:"addChild",obj:i}),e||this.editTopic(s.firstChild),this.selectNode(s.firstChild,!0)},o4=function(t,e){const r=Ua(t.nodeObj);ja(r);const n=Ka(this,e,r);if(!n)return;const{newNodeObj:s}=n;this.selectNode(this.findEle(s.id)),this.bus.fire("operation",{name:"copyNode",obj:s})},l4=function(t,e){t=Hs(t);const r=[];for(let n=0;nthis.findEle(n.id))),this.bus.fire("operation",{name:"copyNodes",objs:r})},c4=function(t){const e=t||this.currentNode;if(!e)return;const r=e.nodeObj;Jp(r);const n=e.parentNode.parentNode;n.parentNode.insertBefore(n,n.previousSibling),this.linkDiv(),this.bus.fire("operation",{name:"moveUpNode",obj:r})},u4=function(t){const e=t||this.currentNode;if(!e)return;const r=e.nodeObj;Zp(r);const n=e.parentNode.parentNode;n.nextSibling?n.nextSibling.insertAdjacentElement("afterend",n):n.parentNode.prepend(n),this.linkDiv(),this.bus.fire("operation",{name:"moveDownNode",obj:r})},d4=function(t){if(t.length===0)return;t=Hs(t);for(const r of t){const n=r.nodeObj,s=Vu(n);r4(r,s)}const e=t[t.length-1];this.selectNode(this.findEle(e.nodeObj.parent.id)),this.linkDiv(),this.bus.fire("operation",{name:"removeNodes",objs:t.map(r=>r.nodeObj)})},h4=function(t,e){t=Hs(t);const r=e.nodeObj;r.expanded===!1&&(this.expandNode(e,!0),e=this.findEle(r.id));for(const n of t){const s=n.nodeObj;Wu("in",s,r),en(this.nodeData);const i=n.parentElement;Gu(this,e,i.parentElement)}this.linkDiv(),this.bus.fire("operation",{name:"moveNodeIn",objs:t.map(n=>n.nodeObj),toObj:r})},Yu=(t,e,r,n)=>{t=Hs(t),e==="after"&&(t=t.reverse());const s=r.nodeObj,i=[];for(const a of t){const o=a.nodeObj;Wu(e,o,s),en(n.nodeData),y0(a);const l=a.parentElement.parentNode;i.includes(l.parentElement)||i.push(l.parentElement),r.parentElement.parentNode.insertAdjacentElement(Ku[e],l)}for(const a of i)a.childElementCount===0&&a.tagName!=="ME-MAIN"&&(a.previousSibling.children[1].remove(),a.remove());n.linkDiv(),n.bus.fire("operation",{name:e==="before"?"moveNodeBefore":"moveNodeAfter",objs:t.map(a=>a.nodeObj),toObj:s})},f4=function(t,e){Yu(t,"before",e,this)},p4=function(t,e){Yu(t,"after",e,this)},m4=function(t){const e=t||this.currentNode;e&&(e.nodeObj.dangerouslySetInnerHTML||this.editTopic(e))},g4=function(t,e){t.text.textContent=e,t.nodeObj.topic=e,this.linkDiv()},Xu=Object.freeze(Object.defineProperty({__proto__:null,addChild:a4,beginEdit:m4,copyNode:o4,copyNodes:l4,insertParent:i4,insertSibling:s4,moveDownNode:u4,moveNodeAfter:p4,moveNodeBefore:f4,moveNodeIn:h4,moveUpNode:c4,removeNodes:d4,reshapeNode:n4,rmSubline:y0,setNodeTopic:g4},Symbol.toStringTag,{value:"Module"}));function v4(t){return{nodeData:t.isFocusMode?t.nodeDataBackup:t.nodeData,arrows:t.arrows,summaries:t.summaries,direction:t.direction,theme:t.theme}}const b4=function(t){const e=this.container,r=t.getBoundingClientRect(),n=e.getBoundingClientRect();if(r.top>n.bottom||r.bottomn.right||r.right{if(!(e==="parent"&&typeof r!="string"))return r})},T4=function(){return JSON.parse(this.getDataString())},A4=function(){this.editable=!0},E4=function(){this.editable=!1},C4=function(t,e={x:0,y:0}){if(tthis.scaleMax)return;const r=this.container.getBoundingClientRect(),n=e.x?e.x-r.left-r.width/2:0,s=e.y?e.y-r.top-r.height/2:0,{dx:i,dy:a}=Ju(this),o=this.map.style.transform,{x:l,y:c}=Fu(o),d=l-i,f=c-a,p=this.scaleVal,b=(-n+d)*(1-t/p),v=(-s+f)*(1-t/p);this.map.style.transform=`translate(${l-b}px, ${c-v}px) scale(${t})`,this.scaleVal=t,this.bus.fire("scale",t)},M4=function(){const t=this.nodes.offsetHeight/this.container.offsetHeight,e=this.nodes.offsetWidth/this.container.offsetWidth,r=1/Math.max(1,Math.max(t,e));this.scaleVal=r,this.map.style.transform="scale("+r+")",this.bus.fire("scale",r)},N4=function(t,e,r=!1){const{map:n,scaleVal:s,bus:i}=this,a=n.style.transform;let{x:o,y:l}=Fu(a);o+=t,l+=e,r&&(n.style.transition="transform 0.3s",setTimeout(()=>{n.style.transition="none"},300)),n.style.transform=`translate(${o}px, ${l}px) scale(${s})`,i.fire("move",{dx:t,dy:e})},Ju=t=>{const{container:e,map:r,nodes:n}=t,s=r.querySelector("me-root"),i=s.offsetTop,a=s.offsetLeft,o=s.offsetWidth,l=s.offsetHeight;let c,d;return t.alignment==="root"?(c=e.offsetWidth/2-a-o/2,d=e.offsetHeight/2-i-l/2,r.style.transformOrigin=`${a+o/2}px 50%`):(c=(e.offsetWidth-n.offsetWidth)/2,d=(e.offsetHeight-n.offsetHeight)/2,r.style.transformOrigin="50% 50%"),{dx:c,dy:d}},D4=function(){const{map:t}=this,{dx:e,dy:r}=Ju(this);t.style.transform=`translate(${e}px, ${r}px) scale(${this.scaleVal})`},R4=function(t){t(this)},I4=function(t){t.nodeObj.parent&&(this.clearSelection(),this.tempDirection===null&&(this.tempDirection=this.direction),this.isFocusMode||(this.nodeDataBackup=this.nodeData,this.isFocusMode=!0),this.nodeData=t.nodeObj,this.initRight(),this.toCenter())},_4=function(){this.isFocusMode=!1,this.tempDirection!==null&&(this.nodeData=this.nodeDataBackup,this.direction=this.tempDirection,this.tempDirection=null,this.refresh(),this.toCenter())},O4=function(){this.direction=0,this.refresh(),this.toCenter()},L4=function(){this.direction=1,this.refresh(),this.toCenter()},z4=function(){this.direction=2,this.refresh(),this.toCenter()},F4=function(t){this.locale=t,this.refresh()},$4=function(t,e){const r=t.nodeObj;typeof e=="boolean"?r.expanded=e:r.expanded!==!1?r.expanded=!1:r.expanded=!0;const n=t.getBoundingClientRect(),s={x:n.left,y:n.top},i=t.parentNode,a=i.children[1];if(a.expanded=r.expanded,a.className=r.expanded?"minus":"",y0(t),r.expanded){const f=this.createChildren(r.children.map(p=>this.createWrapper(p).grp));i.parentNode.appendChild(f)}else i.parentNode.children[1].remove();this.linkDiv(t.closest("me-main > me-wrapper"));const o=t.getBoundingClientRect(),l={x:o.left,y:o.top},c=s.x-l.x,d=s.y-l.y;this.move(c,d),this.bus.fire("expandNode",r)},B4=function(t,e){const r=t.nodeObj,n=t.getBoundingClientRect(),s={x:n.left,y:n.top};In(r,e??!r.expanded),this.refresh();const i=this.findEle(r.id).getBoundingClientRect(),a={x:i.left,y:i.top},o=s.x-a.x,l=s.y-a.y;this.move(o,l)},P4=function(t){this.clearSelection(),t&&(t=JSON.parse(JSON.stringify(t)),this.nodeData=t.nodeData,this.arrows=t.arrows||[],this.summaries=t.summaries||[],t.theme&&this.changeTheme(t.theme)),en(this.nodeData),this.layout(),this.linkDiv()},H4=Object.freeze(Object.defineProperty({__proto__:null,cancelFocus:_4,clearSelection:k4,disableEdit:E4,enableEdit:A4,expandNode:$4,expandNodeAll:B4,focusNode:I4,getData:T4,getDataString:S4,initLeft:O4,initRight:L4,initSide:z4,install:R4,move:N4,refresh:P4,scale:C4,scaleFit:M4,scrollIntoView:b4,selectNode:y4,selectNodes:w4,setLocale:F4,toCenter:D4,unselectNodes:x4},Symbol.toStringTag,{value:"Module"})),q4=function(t){return{dom:t,moved:!1,pointerdown:!1,lastX:0,lastY:0,handlePointerMove(e){if(this.pointerdown){this.moved=!0;const r=e.clientX-this.lastX,n=e.clientY-this.lastY;this.lastX=e.clientX,this.lastY=e.clientY,this.cb&&this.cb(r,n)}},handlePointerDown(e){e.button===0&&(this.pointerdown=!0,this.lastX=e.clientX,this.lastY=e.clientY,this.dom.setPointerCapture(e.pointerId))},handleClear(e){this.pointerdown=!1,e.pointerId!==void 0&&this.dom.releasePointerCapture(e.pointerId)},cb:null,init(e,r){this.cb=r,this.handleClear=this.handleClear.bind(this),this.handlePointerMove=this.handlePointerMove.bind(this),this.handlePointerDown=this.handlePointerDown.bind(this),this.destroy=Va([{dom:e,evt:"pointermove",func:this.handlePointerMove},{dom:e,evt:"pointerleave",func:this.handleClear},{dom:e,evt:"pointerup",func:this.handleClear},{dom:this.dom,evt:"pointerdown",func:this.handlePointerDown}])},destroy:null,clear(){this.moved=!1,this.pointerdown=!1}}},Tl={create:q4},j4="#4dc4ff";function Zu(t,e,r,n,s,i,a,o){return{x:t/8+r*3/8+s*3/8+a/8,y:e/8+n*3/8+i*3/8+o/8}}function U4(t,e,r){ft(t,{x:e+"",y:r+""})}function O0(t,e,r,n,s){ft(t,{x1:e+"",y1:r+"",x2:n+"",y2:s+""})}function Al(t,e,r,n,s,i,a,o,l,c){var d;const f=`M ${e} ${r} C ${n} ${s} ${i} ${a} ${o} ${l}`;if(t.line.setAttribute("d",f),c.style){const y=c.style;y.stroke&&t.line.setAttribute("stroke",y.stroke),y.strokeWidth&&t.line.setAttribute("stroke-width",String(y.strokeWidth)),y.strokeDasharray&&t.line.setAttribute("stroke-dasharray",y.strokeDasharray),y.strokeLinecap&&t.line.setAttribute("stroke-linecap",y.strokeLinecap),y.opacity!==void 0&&t.line.setAttribute("opacity",String(y.opacity))}const p=t.querySelectorAll('path[stroke="transparent"]');p.length>0&&p[0].setAttribute("d",f);const b=gs(i,a,o,l);if(b){const y=`M ${b.x1} ${b.y1} L ${o} ${l} L ${b.x2} ${b.y2}`;if(t.arrow1.setAttribute("d",y),p.length>1&&p[1].setAttribute("d",y),c.style){const M=c.style;M.stroke&&t.arrow1.setAttribute("stroke",M.stroke),M.strokeWidth&&t.arrow1.setAttribute("stroke-width",String(M.strokeWidth)),M.strokeLinecap&&t.arrow1.setAttribute("stroke-linecap",M.strokeLinecap),M.opacity!==void 0&&t.arrow1.setAttribute("opacity",String(M.opacity))}}if(c.bidirectional){const y=gs(n,s,e,r);if(y){const M=`M ${y.x1} ${y.y1} L ${e} ${r} L ${y.x2} ${y.y2}`;if(t.arrow2.setAttribute("d",M),p.length>2&&p[2].setAttribute("d",M),c.style){const k=c.style;k.stroke&&t.arrow2.setAttribute("stroke",k.stroke),k.strokeWidth&&t.arrow2.setAttribute("stroke-width",String(k.strokeWidth)),k.strokeLinecap&&t.arrow2.setAttribute("stroke-linecap",k.strokeLinecap),k.opacity!==void 0&&t.arrow2.setAttribute("opacity",String(k.opacity))}}}const{x:v,y:x}=Zu(e,r,n,s,i,a,o,l);U4(t.label,v,x),(d=c.style)!=null&&d.labelColor&&t.label.setAttribute("fill",c.style.labelColor),Z4(t)}function ys(t,e,r){const{offsetLeft:n,offsetTop:s}=tn(t.nodes,e),i=e.offsetWidth,a=e.offsetHeight,o=n+i/2,l=s+a/2,c=o+r.x,d=l+r.y;return{w:i,h:a,cx:o,cy:l,ctrlX:c,ctrlY:d}}function En(t){let e,r;const n=(t.cy-t.ctrlY)/(t.ctrlX-t.cx);return n>t.h/t.w||n<-t.h/t.w?t.cy-t.ctrlY<0?(e=t.cx-t.h/2/n,r=t.cy+t.h/2):(e=t.cx+t.h/2/n,r=t.cy-t.h/2):t.cx-t.ctrlX<0?(e=t.cx+t.w/2,r=t.cy-t.w*n/2):(e=t.cx-t.w/2,r=t.cy+t.w*n/2),{x:e,y:r}}const Ya=function(t,e,r,n,s){var i;if(!e||!r)return;const a=ys(t,e,n.delta1),o=ys(t,r,n.delta2),{x:l,y:c}=En(a),{ctrlX:d,ctrlY:f}=a,{ctrlX:p,ctrlY:b}=o,{x:v,y:x}=En(o),y=gs(p,b,v,x);if(!y)return;const M=`M ${y.x1} ${y.y1} L ${v} ${x} L ${y.x2} ${y.y2}`;let k="";if(n.bidirectional){const W=gs(d,f,l,c);if(!W)return;k=`M ${W.x1} ${W.y1} L ${l} ${c} L ${W.x2} ${W.y2}`}const T=Sp(`M ${l} ${c} C ${d} ${f} ${p} ${b} ${v} ${x}`,M,k,n.style),{x:N,y:I}=Zu(l,c,d,f,p,b,v,x),O=(i=n.style)==null?void 0:i.labelColor,z=Ji(n.label,N,I,{anchor:"middle",color:O,dataType:"custom-link"});T.appendChild(z),T.label=z,T.arrowObj=n,T.dataset.linkid=n.id,t.linkSvgGroup.appendChild(T),s||(t.arrows.push(n),t.currentArrow=T,Qu(t,n,a,o))},V4=function(t,e,r={}){const n={id:gn(),label:"Custom Link",from:t.nodeObj.id,to:e.nodeObj.id,delta1:{x:t.offsetWidth/2+100,y:0},delta2:{x:e.offsetWidth/2+100,y:0},...r};Ya(this,t,e,n),this.bus.fire("operation",{name:"createArrow",obj:n})},W4=function(t){qs(this);const e={...t,id:gn()};Ya(this,this.findEle(e.from),this.findEle(e.to),e),this.bus.fire("operation",{name:"createArrow",obj:e})},G4=function(t){let e;if(t?e=t:e=this.currentArrow,!e)return;qs(this);const r=e.arrowObj.id;this.arrows=this.arrows.filter(n=>n.id!==r),e.remove(),this.bus.fire("operation",{name:"removeArrow",obj:{id:r}})},K4=function(t){this.currentArrow=t;const e=t.arrowObj,r=this.findEle(e.from),n=this.findEle(e.to),s=ys(this,r,e.delta1),i=ys(this,n,e.delta2);Qu(this,e,s,i)},Y4=function(){qs(this),this.currentArrow=null},bi=function(t,e){const r=document.createElementNS(Gt,"path");return ft(r,{d:t,stroke:e,fill:"none","stroke-width":"6","stroke-linecap":"round","stroke-linejoin":"round"}),r},X4=function(t,e){const r=document.createElementNS(Gt,"g");r.setAttribute("class","arrow-highlight"),r.setAttribute("opacity","0.45");const n=bi(t.line.getAttribute("d"),e);r.appendChild(n);const s=bi(t.arrow1.getAttribute("d"),e);if(r.appendChild(s),t.arrow2.getAttribute("d")){const i=bi(t.arrow2.getAttribute("d"),e);r.appendChild(i)}t.insertBefore(r,t.firstChild)},J4=function(t){const e=t.querySelector(".arrow-highlight");e&&e.remove()},Z4=function(t){const e=t.querySelector(".arrow-highlight");if(!e)return;const r=e.querySelectorAll("path");r.length>=1&&r[0].setAttribute("d",t.line.getAttribute("d")),r.length>=2&&r[1].setAttribute("d",t.arrow1.getAttribute("d")),r.length>=3&&t.arrow2.getAttribute("d")&&r[2].setAttribute("d",t.arrow2.getAttribute("d"))},qs=function(t){var e,r;(e=t.helper1)==null||e.destroy(),(r=t.helper2)==null||r.destroy(),t.linkController.style.display="none",t.P2.style.display="none",t.P3.style.display="none",t.currentArrow&&J4(t.currentArrow)},Qu=function(t,e,r,n){const{linkController:s,P2:i,P3:a,line1:o,line2:l,nodes:c,map:d,currentArrow:f,bus:p}=t;if(!f)return;s.style.display="initial",i.style.display="initial",a.style.display="initial",c.appendChild(s),c.appendChild(i),c.appendChild(a),X4(f,j4);let{x:b,y:v}=En(r),{ctrlX:x,ctrlY:y}=r,{ctrlX:M,ctrlY:k}=n,{x:T,y:N}=En(n);i.style.cssText=`top:${y}px;left:${x}px;`,a.style.cssText=`top:${k}px;left:${M}px;`,O0(o,b,v,x,y),O0(l,M,k,T,N),t.helper1=Tl.create(i),t.helper2=Tl.create(a),t.helper1.init(d,(I,O)=>{x=x+I/t.scaleVal,y=y+O/t.scaleVal;const z=En({...r,ctrlX:x,ctrlY:y});b=z.x,v=z.y,i.style.top=y+"px",i.style.left=x+"px",Al(f,b,v,x,y,M,k,T,N,e),O0(o,b,v,x,y),e.delta1.x=x-r.cx,e.delta1.y=y-r.cy,p.fire("updateArrowDelta",e)}),t.helper2.init(d,(I,O)=>{M=M+I/t.scaleVal,k=k+O/t.scaleVal;const z=En({...n,ctrlX:M,ctrlY:k});T=z.x,N=z.y,a.style.top=k+"px",a.style.left=M+"px",Al(f,b,v,x,y,M,k,T,N,e),O0(l,M,k,T,N),e.delta2.x=M-n.cx,e.delta2.y=k-n.cy,p.fire("updateArrowDelta",e)})};function Q4(){this.linkSvgGroup.innerHTML="";for(let t=0;tms(t.from,this.nodeData)&&ms(t.to,this.nodeData))}const rm=Object.freeze(Object.defineProperty({__proto__:null,createArrow:V4,createArrowFrom:W4,editArrowLabel:em,removeArrow:G4,renderArrow:Q4,selectArrow:K4,tidyArrow:tm,unselectArrow:Y4},Symbol.toStringTag,{value:"Module"})),nm=function(t){var e,r;if(t.length===0)throw new Error("No selected node.");if(t.length===1){const d=t[0].nodeObj,f=t[0].nodeObj.parent;if(!f)throw new Error("Can not select root node.");const p=f.children.findIndex(b=>d===b);return{parent:f.id,start:p,end:p}}let n=0;const s=t.map(d=>{let f=d.nodeObj;const p=[];for(;f.parent;){const b=f.parent,v=b.children,x=v==null?void 0:v.indexOf(f);f=b,p.unshift({node:f,index:x})}return p.length>n&&(n=p.length),p});let i=0;e:for(;id[i-1].index).sort(),o=a[0]||0,l=a[a.length-1]||0,c=s[0][i-1].node;if(!c.parent)throw new Error("Please select nodes in the same main topic.");return{parent:c.id,start:o,end:l}},sm=function(t){const e=document.createElementNS(Gt,"g");return e.setAttribute("id",t),e},El=function(t,e){const r=document.createElementNS(Gt,"path");return ft(r,{d:t,stroke:e||"#666",fill:"none","stroke-linecap":"round","stroke-width":"2"}),r},im=t=>t.parentElement.parentElement,am=function(t,{parent:e,start:r}){const n=t.findEle(e),s=n.nodeObj;let i;return s.parent?i=n.closest("me-main").className:i=t.findEle(s.children[r].id).closest("me-main").className,i},Xa=function(t,e){var r;const{id:n,label:s,parent:i,start:a,end:o}=e,{nodes:l,theme:c,summarySvg:d}=t,f=t.findEle(i).nodeObj,p=am(t,e);let b=1/0,v=0,x=0,y=0;for(let W=a;W<=o;W++){const U=(r=f.children)==null?void 0:r[W];if(!U)return t.removeSummary(n),null;const he=im(t.findEle(U.id)),{offsetLeft:ge,offsetTop:Ae}=tn(l,he),et=a===o?10:20;W===a&&(x=Ae+et),W===o&&(y=Ae+he.offsetHeight-et),gev&&(v=he.offsetWidth+ge)}let M,k;const T=x+10,N=y+10,I=(T+N)/2,O=c.cssVar["--color"];p===sr.LHS?(M=El(`M ${b+10} ${T} c -5 0 -10 5 -10 10 L ${b} ${N-10} c 0 5 5 10 10 10 M ${b} ${I} h -10`,O),k=Ji(s,b-20,I+6,{anchor:"end",color:O})):(M=El(`M ${v-10} ${T} c 5 0 10 5 10 10 L ${v} ${N-10} c 0 5 -5 10 -10 10 M ${v} ${I} h 10`,O),k=Ji(s,v+20,I+6,{anchor:"start",color:O}));const z=sm("s-"+n);return z.appendChild(M),z.appendChild(k),z.summaryObj=e,d.appendChild(z),z},om=function(){if(!this.currentNodes)return;const{currentNodes:t,summaries:e,bus:r}=this,{parent:n,start:s,end:i}=nm(t),a={id:gn(),parent:n,start:s,end:i,label:"summary"},o=Xa(this,a);e.push(a),this.editSummary(o),r.fire("operation",{name:"createSummary",obj:a})},lm=function(t){const e=gn(),r={...t,id:e};Xa(this,r),this.summaries.push(r),this.bus.fire("operation",{name:"createSummary",obj:r})},cm=function(t){var e;const r=this.summaries.findIndex(n=>n.id===t);r>-1&&(this.summaries.splice(r,1),(e=document.querySelector("#s-"+t))==null||e.remove()),this.bus.fire("operation",{name:"removeSummary",obj:{id:t}})},um=function(t){const e=t.children[1].getBBox(),r=6,n=3,s=document.createElementNS(Gt,"rect");ft(s,{x:e.x-r+"",y:e.y-r+"",width:e.width+r*2+"",height:e.height+r*2+"",rx:n+"",stroke:this.theme.cssVar["--selected"]||"#4dc4ff","stroke-width":"2",fill:"none"}),t.appendChild(s),this.currentSummary=t},dm=function(){var t,e;(e=(t=this.currentSummary)==null?void 0:t.querySelector("rect"))==null||e.remove(),this.currentSummary=null},hm=function(){this.summarySvg.innerHTML="",this.summaries.forEach(t=>{try{Xa(this,t)}catch{}}),this.nodes.insertAdjacentElement("beforeend",this.summarySvg)},fm=function(t){if(!t)return;const e=t.childNodes[1];Hu(this,e,t.summaryObj)},pm=Object.freeze(Object.defineProperty({__proto__:null,createSummary:om,createSummaryFrom:lm,editSummary:fm,removeSummary:cm,renderSummary:hm,selectSummary:um,unselectSummary:dm},Symbol.toStringTag,{value:"Module"})),qt="http://www.w3.org/2000/svg";function mm(t,e){const r=document.createElementNS(qt,"svg");return ft(r,{version:"1.1",xmlns:qt,height:t,width:e}),r}function gm(t,e){return(parseInt(t)-parseInt(e))/2}function vm(t,e,r,n){const s=document.createElementNS(qt,"g");let i="";return t.text?i=t.text.textContent:i=t.childNodes[0].textContent,i.split(` +`).forEach((a,o)=>{const l=document.createElementNS(qt,"text");ft(l,{x:r+parseInt(e.paddingLeft)+"",y:n+parseInt(e.paddingTop)+gm(e.lineHeight,e.fontSize)*(o+1)+parseFloat(e.fontSize)*(o+1)+"","text-anchor":"start","font-family":e.fontFamily,"font-size":`${e.fontSize}`,"font-weight":`${e.fontWeight}`,fill:`${e.color}`}),l.innerHTML=a,s.appendChild(l)}),s}function bm(t,e,r,n){var s;let i="";(s=t.nodeObj)!=null&&s.dangerouslySetInnerHTML?i=t.nodeObj.dangerouslySetInnerHTML:t.text?i=t.text.textContent:i=t.childNodes[0].textContent;const a=document.createElementNS(qt,"foreignObject");ft(a,{x:r+parseInt(e.paddingLeft)+"",y:n+parseInt(e.paddingTop)+"",width:e.width,height:e.height});const o=document.createElement("div");return ft(o,{xmlns:"http://www.w3.org/1999/xhtml",style:`font-family: ${e.fontFamily}; font-size: ${e.fontSize}; font-weight: ${e.fontWeight}; color: ${e.color}; white-space: pre-wrap;`}),o.innerHTML=i,a.appendChild(o),a}function ym(t,e){const r=getComputedStyle(e),{offsetLeft:n,offsetTop:s}=tn(t.nodes,e),i=document.createElementNS(qt,"rect");return ft(i,{x:n+"",y:s+"",rx:r.borderRadius,ry:r.borderRadius,width:r.width,height:r.height,fill:r.backgroundColor,stroke:r.borderColor,"stroke-width":r.borderWidth}),i}function L0(t,e,r=!1){const n=getComputedStyle(e),{offsetLeft:s,offsetTop:i}=tn(t.nodes,e),a=document.createElementNS(qt,"rect");ft(a,{x:s+"",y:i+"",rx:n.borderRadius,ry:n.borderRadius,width:n.width,height:n.height,fill:n.backgroundColor,stroke:n.borderColor,"stroke-width":n.borderWidth});const o=document.createElementNS(qt,"g");o.appendChild(a);let l;return r?l=bm(e,n,s,i):l=vm(e,n,s,i),o.appendChild(l),o}function wm(t,e){const r=getComputedStyle(e),{offsetLeft:n,offsetTop:s}=tn(t.nodes,e),i=document.createElementNS(qt,"a"),a=document.createElementNS(qt,"text");return ft(a,{x:n+"",y:s+parseInt(r.fontSize)+"","text-anchor":"start","font-family":r.fontFamily,"font-size":`${r.fontSize}`,"font-weight":`${r.fontWeight}`,fill:`${r.color}`}),a.innerHTML=e.textContent,i.appendChild(a),i.setAttribute("href",e.href),i}function xm(t,e){const r=getComputedStyle(e),{offsetLeft:n,offsetTop:s}=tn(t.nodes,e),i=document.createElementNS(qt,"image");return ft(i,{x:n+"",y:s+"",width:r.width+"",height:r.height+"",href:e.src}),i}const z0=100,km='',Sm=(t,e=!1)=>{var r,n,s;const i=t.nodes,a=i.offsetHeight+z0*2,o=i.offsetWidth+z0*2,l=mm(a+"px",o+"px"),c=document.createElementNS(qt,"svg"),d=document.createElementNS(qt,"rect");ft(d,{x:"0",y:"0",width:`${o}`,height:`${a}`,fill:t.theme.cssVar["--bgcolor"]}),l.appendChild(d),i.querySelectorAll(".subLines").forEach(v=>{const x=v.cloneNode(!0),{offsetLeft:y,offsetTop:M}=tn(i,v.parentElement);x.setAttribute("x",`${y}`),x.setAttribute("y",`${M}`),c.appendChild(x)});const f=(r=i.querySelector(".lines"))==null?void 0:r.cloneNode(!0);f&&c.appendChild(f);const p=(n=i.querySelector(".topiclinks"))==null?void 0:n.cloneNode(!0);p&&c.appendChild(p);const b=(s=i.querySelector(".summary"))==null?void 0:s.cloneNode(!0);return b&&c.appendChild(b),i.querySelectorAll("me-tpc").forEach(v=>{v.nodeObj.dangerouslySetInnerHTML?c.appendChild(L0(t,v,!e)):(c.appendChild(ym(t,v)),c.appendChild(L0(t,v.text,!e)))}),i.querySelectorAll(".tags > span").forEach(v=>{c.appendChild(L0(t,v))}),i.querySelectorAll(".icons > span").forEach(v=>{c.appendChild(L0(t,v))}),i.querySelectorAll(".hyper-link").forEach(v=>{c.appendChild(wm(t,v))}),i.querySelectorAll("img").forEach(v=>{c.appendChild(xm(t,v))}),ft(c,{x:z0+"",y:z0+"",overflow:"visible"}),l.appendChild(c),l},Tm=(t,e)=>(e&&t.insertAdjacentHTML("afterbegin",""),km+t.outerHTML);function Am(t){return new Promise((e,r)=>{const n=new FileReader;n.onload=s=>{e(s.target.result)},n.onerror=s=>{r(s)},n.readAsDataURL(t)})}const Em=function(t=!1,e){const r=Sm(this,t),n=Tm(r,e);return new Blob([n],{type:"image/svg+xml"})},Cm=async function(t=!1,e){const r=this.exportSvg(t,e),n=await Am(r);return new Promise((s,i)=>{const a=new Image;a.setAttribute("crossOrigin","anonymous"),a.onload=()=>{const o=document.createElement("canvas");o.width=a.width,o.height=a.height,o.getContext("2d").drawImage(a,0,0),o.toBlob(s,"image/png",1)},a.src=n,a.onerror=i})},Mm=Object.freeze(Object.defineProperty({__proto__:null,exportPng:Cm,exportSvg:Em},Symbol.toStringTag,{value:"Module"}));function Nm(t,e){return async function(...r){const n=this.before[e];n&&!await n.apply(this,r)||t.apply(this,r)}}const Cl=Object.keys(Xu),e1={};for(let t=0;te()),this.el&&(this.el.innerHTML=""),this.el=void 0,this.nodeData=void 0,this.arrows=void 0,this.summaries=void 0,this.currentArrow=void 0,this.currentNodes=void 0,this.currentSummary=void 0,this.waitCopy=void 0,this.theme=void 0,this.direction=void 0,this.bus=void 0,this.container=void 0,this.map=void 0,this.lines=void 0,this.linkController=void 0,this.linkSvgGroup=void 0,this.P2=void 0,this.P3=void 0,this.line1=void 0,this.line2=void 0,this.nodes=void 0,(t=this.selection)==null||t.destroy(),this.selection=void 0}};function Rm({pT:t,pL:e,pW:r,pH:n,cT:s,cL:i,cW:a,cH:o,direction:l,containerHeight:c}){let d=e+r/2;const f=t+n/2;let p;l===sr.LHS?p=i+a:p=i;const b=s+o/2,v=(1-Math.abs(b-f)/c)*.25*(r/2);return l===sr.LHS?d=d-r/10-v:d=d+r/10+v,`M ${d} ${f} Q ${d} ${b} ${p} ${b}`}function Im({pT:t,pL:e,pW:r,pH:n,cT:s,cL:i,cW:a,cH:o,direction:l,isFirst:c}){const d=parseInt(this.container.style.getPropertyValue("--node-gap-x"));let f=0,p=0;c?f=t+n/2:f=t+n;const b=s+o;let v=0,x=0,y=0;const M=Math.abs(f-b)/300*d;return l===sr.LHS?(y=e,v=y+d,x=y-d,p=i+d,`M ${v} ${f} C ${y} ${f} ${y+M} ${b} ${x} ${b} H ${p}`):(y=e+r,v=y-d,x=y+d,p=i+a-d,`M ${v} ${f} C ${y} ${f} ${y-M} ${b} ${x} ${b} H ${p}`)}const _m="5.1.1";function Om(t){return{x:0,y:0,moved:!1,mousedown:!1,onMove(e,r){this.mousedown&&(this.moved=!0,t.move(e,r))},clear(){this.mousedown=!1}}}const Wn=document;function vt({el:t,direction:e,locale:r,draggable:n,editable:s,contextMenu:i,toolBar:a,keypress:o,mouseSelectionButton:l,selectionContainer:c,before:d,newTopicName:f,allowUndo:p,generateMainBranch:b,generateSubBranch:v,overflowHidden:x,theme:y,alignment:M,scaleSensitivity:k,scaleMax:T,scaleMin:N,handleWheel:I,markdown:O,imageProxy:z}){let W=null;const U=Object.prototype.toString.call(t);if(U==="[object HTMLDivElement]"?W=t:U==="[object String]"&&(W=document.querySelector(t)),!W)throw new Error("MindElixir: el is not a valid element");W.style.position="relative",W.innerHTML="",this.el=W,this.disposable=[],this.before=d||{},this.locale=r||"en",this.newTopicName=f||"New Node",this.contextMenu=i??!0,this.toolBar=a??!0,this.keypress=o??!0,this.mouseSelectionButton=l??0,this.direction=e??1,this.draggable=n??!0,this.editable=s??!0,this.allowUndo=p??!0,this.scaleSensitivity=k??.1,this.scaleMax=T??1.4,this.scaleMin=N??.2,this.generateMainBranch=b||Rm,this.generateSubBranch=v||Im,this.overflowHidden=x??!1,this.alignment=M??"root",this.handleWheel=I??!0,this.markdown=O||void 0,this.imageProxy=z||void 0,this.currentNodes=[],this.currentArrow=null,this.scaleVal=1,this.tempDirection=null,this.dragMoveHelper=Om(this),this.bus=pp(),this.container=Wn.createElement("div"),this.selectionContainer=c||this.container,this.container.className="map-container";const he=window.matchMedia("(prefers-color-scheme: dark)");this.theme=y||(he.matches?qa:Ha);const ge=Wn.createElement("div");ge.className="map-canvas",this.map=ge,this.container.setAttribute("tabindex","0"),this.container.appendChild(this.map),this.el.appendChild(this.container),this.nodes=Wn.createElement("me-nodes"),this.lines=Jn("lines"),this.summarySvg=Jn("summary"),this.linkController=Jn("linkcontroller"),this.P2=Wn.createElement("div"),this.P3=Wn.createElement("div"),this.P2.className=this.P3.className="circle",this.P2.style.display=this.P3.style.display="none",this.line1=fl(),this.line2=fl(),this.linkController.appendChild(this.line1),this.linkController.appendChild(this.line2),this.linkSvgGroup=Jn("topiclinks"),this.map.appendChild(this.nodes),this.overflowHidden?this.container.style.overflow="hidden":this.disposable.push(fp(this))}vt.prototype=Dm;Object.defineProperty(vt.prototype,"currentNode",{get(){return this.currentNodes[this.currentNodes.length-1]},enumerable:!0});vt.LEFT=0;vt.RIGHT=1;vt.SIDE=2;vt.THEME=Ha;vt.DARK_THEME=qa;vt.version=_m;vt.E=$u;vt.new=t=>({nodeData:{id:gn(),topic:t||"new topic",children:[]}});function t1(t,e){return function(){return t.apply(e,arguments)}}const{toString:Lm}=Object.prototype,{getPrototypeOf:Ja}=Object,{iterator:js,toStringTag:r1}=Symbol,Us=(t=>e=>{const r=Lm.call(e);return t[r]||(t[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),ir=t=>(t=t.toLowerCase(),e=>Us(e)===t),Vs=t=>e=>typeof e===t,{isArray:Bn}=Array,p0=Vs("undefined");function w0(t){return t!==null&&!p0(t)&&t.constructor!==null&&!p0(t.constructor)&&Ot(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const n1=ir("ArrayBuffer");function zm(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&n1(t.buffer),e}const Fm=Vs("string"),Ot=Vs("function"),s1=Vs("number"),x0=t=>t!==null&&typeof t=="object",$m=t=>t===!0||t===!1,es=t=>{if(Us(t)!=="object")return!1;const e=Ja(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(r1 in t)&&!(js in t)},Bm=t=>{if(!x0(t)||w0(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},Pm=ir("Date"),Hm=ir("File"),qm=ir("Blob"),jm=ir("FileList"),Um=t=>x0(t)&&Ot(t.pipe),Vm=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||Ot(t.append)&&((e=Us(t))==="formdata"||e==="object"&&Ot(t.toString)&&t.toString()==="[object FormData]"))},Wm=ir("URLSearchParams"),[Gm,Km,Ym,Xm]=["ReadableStream","Request","Response","Headers"].map(ir),Jm=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function k0(t,e,{allOwnKeys:r=!1}={}){if(t===null||typeof t>"u")return;let n,s;if(typeof t!="object"&&(t=[t]),Bn(t))for(n=0,s=t.length;n0;)if(s=r[n],e===s.toLowerCase())return s;return null}const dn=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),a1=t=>!p0(t)&&t!==dn;function ta(){const{caseless:t}=a1(this)&&this||{},e={},r=(n,s)=>{const i=t&&i1(e,s)||s;es(e[i])&&es(n)?e[i]=ta(e[i],n):es(n)?e[i]=ta({},n):Bn(n)?e[i]=n.slice():e[i]=n};for(let n=0,s=arguments.length;n(k0(e,(s,i)=>{r&&Ot(s)?t[i]=t1(s,r):t[i]=s},{allOwnKeys:n}),t),Qm=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),e2=(t,e,r,n)=>{t.prototype=Object.create(e.prototype,n),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),r&&Object.assign(t.prototype,r)},t2=(t,e,r,n)=>{let s,i,a;const o={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),i=s.length;i-- >0;)a=s[i],(!n||n(a,t,e))&&!o[a]&&(e[a]=t[a],o[a]=!0);t=r!==!1&&Ja(t)}while(t&&(!r||r(t,e))&&t!==Object.prototype);return e},r2=(t,e,r)=>{t=String(t),(r===void 0||r>t.length)&&(r=t.length),r-=e.length;const n=t.indexOf(e,r);return n!==-1&&n===r},n2=t=>{if(!t)return null;if(Bn(t))return t;let e=t.length;if(!s1(e))return null;const r=new Array(e);for(;e-- >0;)r[e]=t[e];return r},s2=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Ja(Uint8Array)),i2=(t,e)=>{const n=(t&&t[js]).call(t);let s;for(;(s=n.next())&&!s.done;){const i=s.value;e.call(t,i[0],i[1])}},a2=(t,e)=>{let r;const n=[];for(;(r=t.exec(e))!==null;)n.push(r);return n},o2=ir("HTMLFormElement"),l2=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,s){return n.toUpperCase()+s}),Ml=(({hasOwnProperty:t})=>(e,r)=>t.call(e,r))(Object.prototype),c2=ir("RegExp"),o1=(t,e)=>{const r=Object.getOwnPropertyDescriptors(t),n={};k0(r,(s,i)=>{let a;(a=e(s,i,t))!==!1&&(n[i]=a||s)}),Object.defineProperties(t,n)},u2=t=>{o1(t,(e,r)=>{if(Ot(t)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const n=t[r];if(Ot(n)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},d2=(t,e)=>{const r={},n=s=>{s.forEach(i=>{r[i]=!0})};return Bn(t)?n(t):n(String(t).split(e)),r},h2=()=>{},f2=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function p2(t){return!!(t&&Ot(t.append)&&t[r1]==="FormData"&&t[js])}const m2=t=>{const e=new Array(10),r=(n,s)=>{if(x0(n)){if(e.indexOf(n)>=0)return;if(w0(n))return n;if(!("toJSON"in n)){e[s]=n;const i=Bn(n)?[]:{};return k0(n,(a,o)=>{const l=r(a,s+1);!p0(l)&&(i[o]=l)}),e[s]=void 0,i}}return n};return r(t,0)},g2=ir("AsyncFunction"),v2=t=>t&&(x0(t)||Ot(t))&&Ot(t.then)&&Ot(t.catch),l1=((t,e)=>t?setImmediate:e?((r,n)=>(dn.addEventListener("message",({source:s,data:i})=>{s===dn&&i===r&&n.length&&n.shift()()},!1),s=>{n.push(s),dn.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",Ot(dn.postMessage)),b2=typeof queueMicrotask<"u"?queueMicrotask.bind(dn):typeof process<"u"&&process.nextTick||l1,y2=t=>t!=null&&Ot(t[js]),B={isArray:Bn,isArrayBuffer:n1,isBuffer:w0,isFormData:Vm,isArrayBufferView:zm,isString:Fm,isNumber:s1,isBoolean:$m,isObject:x0,isPlainObject:es,isEmptyObject:Bm,isReadableStream:Gm,isRequest:Km,isResponse:Ym,isHeaders:Xm,isUndefined:p0,isDate:Pm,isFile:Hm,isBlob:qm,isRegExp:c2,isFunction:Ot,isStream:Um,isURLSearchParams:Wm,isTypedArray:s2,isFileList:jm,forEach:k0,merge:ta,extend:Zm,trim:Jm,stripBOM:Qm,inherits:e2,toFlatObject:t2,kindOf:Us,kindOfTest:ir,endsWith:r2,toArray:n2,forEachEntry:i2,matchAll:a2,isHTMLForm:o2,hasOwnProperty:Ml,hasOwnProp:Ml,reduceDescriptors:o1,freezeMethods:u2,toObjectSet:d2,toCamelCase:l2,noop:h2,toFiniteNumber:f2,findKey:i1,global:dn,isContextDefined:a1,isSpecCompliantForm:p2,toJSONObject:m2,isAsyncFn:g2,isThenable:v2,setImmediate:l1,asap:b2,isIterable:y2};function Ne(t,e,r,n,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),r&&(this.config=r),n&&(this.request=n),s&&(this.response=s,this.status=s.status?s.status:null)}B.inherits(Ne,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:B.toJSONObject(this.config),code:this.code,status:this.status}}});const c1=Ne.prototype,u1={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{u1[t]={value:t}});Object.defineProperties(Ne,u1);Object.defineProperty(c1,"isAxiosError",{value:!0});Ne.from=(t,e,r,n,s,i)=>{const a=Object.create(c1);return B.toFlatObject(t,a,function(l){return l!==Error.prototype},o=>o!=="isAxiosError"),Ne.call(a,t.message,e,r,n,s),a.cause=t,a.name=t.name,i&&Object.assign(a,i),a};const w2=null;function ra(t){return B.isPlainObject(t)||B.isArray(t)}function d1(t){return B.endsWith(t,"[]")?t.slice(0,-2):t}function Nl(t,e,r){return t?t.concat(e).map(function(s,i){return s=d1(s),!r&&i?"["+s+"]":s}).join(r?".":""):e}function x2(t){return B.isArray(t)&&!t.some(ra)}const k2=B.toFlatObject(B,{},null,function(e){return/^is[A-Z]/.test(e)});function Ws(t,e,r){if(!B.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,r=B.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(x,y){return!B.isUndefined(y[x])});const n=r.metaTokens,s=r.visitor||d,i=r.dots,a=r.indexes,l=(r.Blob||typeof Blob<"u"&&Blob)&&B.isSpecCompliantForm(e);if(!B.isFunction(s))throw new TypeError("visitor must be a function");function c(v){if(v===null)return"";if(B.isDate(v))return v.toISOString();if(B.isBoolean(v))return v.toString();if(!l&&B.isBlob(v))throw new Ne("Blob is not supported. Use a Buffer instead.");return B.isArrayBuffer(v)||B.isTypedArray(v)?l&&typeof Blob=="function"?new Blob([v]):Buffer.from(v):v}function d(v,x,y){let M=v;if(v&&!y&&typeof v=="object"){if(B.endsWith(x,"{}"))x=n?x:x.slice(0,-2),v=JSON.stringify(v);else if(B.isArray(v)&&x2(v)||(B.isFileList(v)||B.endsWith(x,"[]"))&&(M=B.toArray(v)))return x=d1(x),M.forEach(function(T,N){!(B.isUndefined(T)||T===null)&&e.append(a===!0?Nl([x],N,i):a===null?x:x+"[]",c(T))}),!1}return ra(v)?!0:(e.append(Nl(y,x,i),c(v)),!1)}const f=[],p=Object.assign(k2,{defaultVisitor:d,convertValue:c,isVisitable:ra});function b(v,x){if(!B.isUndefined(v)){if(f.indexOf(v)!==-1)throw Error("Circular reference detected in "+x.join("."));f.push(v),B.forEach(v,function(M,k){(!(B.isUndefined(M)||M===null)&&s.call(e,M,B.isString(k)?k.trim():k,x,p))===!0&&b(M,x?x.concat(k):[k])}),f.pop()}}if(!B.isObject(t))throw new TypeError("data must be an object");return b(t),e}function Dl(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(n){return e[n]})}function Za(t,e){this._pairs=[],t&&Ws(t,this,e)}const h1=Za.prototype;h1.append=function(e,r){this._pairs.push([e,r])};h1.toString=function(e){const r=e?function(n){return e.call(this,n,Dl)}:Dl;return this._pairs.map(function(s){return r(s[0])+"="+r(s[1])},"").join("&")};function S2(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function f1(t,e,r){if(!e)return t;const n=r&&r.encode||S2;B.isFunction(r)&&(r={serialize:r});const s=r&&r.serialize;let i;if(s?i=s(e,r):i=B.isURLSearchParams(e)?e.toString():new Za(e,r).toString(n),i){const a=t.indexOf("#");a!==-1&&(t=t.slice(0,a)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t}class T2{constructor(){this.handlers=[]}use(e,r,n){return this.handlers.push({fulfilled:e,rejected:r,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){B.forEach(this.handlers,function(n){n!==null&&e(n)})}}const Rl=T2,p1={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},A2=typeof URLSearchParams<"u"?URLSearchParams:Za,E2=typeof FormData<"u"?FormData:null,C2=typeof Blob<"u"?Blob:null,M2={isBrowser:!0,classes:{URLSearchParams:A2,FormData:E2,Blob:C2},protocols:["http","https","file","blob","url","data"]},Qa=typeof window<"u"&&typeof document<"u",na=typeof navigator=="object"&&navigator||void 0,N2=Qa&&(!na||["ReactNative","NativeScript","NS"].indexOf(na.product)<0),D2=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),R2=Qa&&window.location.href||"http://localhost",I2=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Qa,hasStandardBrowserEnv:N2,hasStandardBrowserWebWorkerEnv:D2,navigator:na,origin:R2},Symbol.toStringTag,{value:"Module"})),xt={...I2,...M2};function _2(t,e){return Ws(t,new xt.classes.URLSearchParams,{visitor:function(r,n,s,i){return xt.isNode&&B.isBuffer(r)?(this.append(n,r.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...e})}function O2(t){return B.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function L2(t){const e={},r=Object.keys(t);let n;const s=r.length;let i;for(n=0;n=r.length;return a=!a&&B.isArray(s)?s.length:a,l?(B.hasOwnProp(s,a)?s[a]=[s[a],n]:s[a]=n,!o):((!s[a]||!B.isObject(s[a]))&&(s[a]=[]),e(r,n,s[a],i)&&B.isArray(s[a])&&(s[a]=L2(s[a])),!o)}if(B.isFormData(t)&&B.isFunction(t.entries)){const r={};return B.forEachEntry(t,(n,s)=>{e(O2(n),s,r,0)}),r}return null}function z2(t,e,r){if(B.isString(t))try{return(e||JSON.parse)(t),B.trim(t)}catch(n){if(n.name!=="SyntaxError")throw n}return(r||JSON.stringify)(t)}const eo={transitional:p1,adapter:["xhr","http","fetch"],transformRequest:[function(e,r){const n=r.getContentType()||"",s=n.indexOf("application/json")>-1,i=B.isObject(e);if(i&&B.isHTMLForm(e)&&(e=new FormData(e)),B.isFormData(e))return s?JSON.stringify(m1(e)):e;if(B.isArrayBuffer(e)||B.isBuffer(e)||B.isStream(e)||B.isFile(e)||B.isBlob(e)||B.isReadableStream(e))return e;if(B.isArrayBufferView(e))return e.buffer;if(B.isURLSearchParams(e))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let o;if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return _2(e,this.formSerializer).toString();if((o=B.isFileList(e))||n.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return Ws(o?{"files[]":e}:e,l&&new l,this.formSerializer)}}return i||s?(r.setContentType("application/json",!1),z2(e)):e}],transformResponse:[function(e){const r=this.transitional||eo.transitional,n=r&&r.forcedJSONParsing,s=this.responseType==="json";if(B.isResponse(e)||B.isReadableStream(e))return e;if(e&&B.isString(e)&&(n&&!this.responseType||s)){const a=!(r&&r.silentJSONParsing)&&s;try{return JSON.parse(e)}catch(o){if(a)throw o.name==="SyntaxError"?Ne.from(o,Ne.ERR_BAD_RESPONSE,this,null,this.response):o}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:xt.classes.FormData,Blob:xt.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};B.forEach(["delete","get","head","post","put","patch"],t=>{eo.headers[t]={}});const to=eo,F2=B.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),$2=t=>{const e={};let r,n,s;return t&&t.split(` +`).forEach(function(a){s=a.indexOf(":"),r=a.substring(0,s).trim().toLowerCase(),n=a.substring(s+1).trim(),!(!r||e[r]&&F2[r])&&(r==="set-cookie"?e[r]?e[r].push(n):e[r]=[n]:e[r]=e[r]?e[r]+", "+n:n)}),e},Il=Symbol("internals");function Gn(t){return t&&String(t).trim().toLowerCase()}function ts(t){return t===!1||t==null?t:B.isArray(t)?t.map(ts):String(t)}function B2(t){const e=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(t);)e[n[1]]=n[2];return e}const P2=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function yi(t,e,r,n,s){if(B.isFunction(n))return n.call(this,e,r);if(s&&(e=r),!!B.isString(e)){if(B.isString(n))return e.indexOf(n)!==-1;if(B.isRegExp(n))return n.test(e)}}function H2(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,r,n)=>r.toUpperCase()+n)}function q2(t,e){const r=B.toCamelCase(" "+e);["get","set","has"].forEach(n=>{Object.defineProperty(t,n+r,{value:function(s,i,a){return this[n].call(this,e,s,i,a)},configurable:!0})})}class Gs{constructor(e){e&&this.set(e)}set(e,r,n){const s=this;function i(o,l,c){const d=Gn(l);if(!d)throw new Error("header name must be a non-empty string");const f=B.findKey(s,d);(!f||s[f]===void 0||c===!0||c===void 0&&s[f]!==!1)&&(s[f||l]=ts(o))}const a=(o,l)=>B.forEach(o,(c,d)=>i(c,d,l));if(B.isPlainObject(e)||e instanceof this.constructor)a(e,r);else if(B.isString(e)&&(e=e.trim())&&!P2(e))a($2(e),r);else if(B.isObject(e)&&B.isIterable(e)){let o={},l,c;for(const d of e){if(!B.isArray(d))throw TypeError("Object iterator must return a key-value pair");o[c=d[0]]=(l=o[c])?B.isArray(l)?[...l,d[1]]:[l,d[1]]:d[1]}a(o,r)}else e!=null&&i(r,e,n);return this}get(e,r){if(e=Gn(e),e){const n=B.findKey(this,e);if(n){const s=this[n];if(!r)return s;if(r===!0)return B2(s);if(B.isFunction(r))return r.call(this,s,n);if(B.isRegExp(r))return r.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,r){if(e=Gn(e),e){const n=B.findKey(this,e);return!!(n&&this[n]!==void 0&&(!r||yi(this,this[n],n,r)))}return!1}delete(e,r){const n=this;let s=!1;function i(a){if(a=Gn(a),a){const o=B.findKey(n,a);o&&(!r||yi(n,n[o],o,r))&&(delete n[o],s=!0)}}return B.isArray(e)?e.forEach(i):i(e),s}clear(e){const r=Object.keys(this);let n=r.length,s=!1;for(;n--;){const i=r[n];(!e||yi(this,this[i],i,e,!0))&&(delete this[i],s=!0)}return s}normalize(e){const r=this,n={};return B.forEach(this,(s,i)=>{const a=B.findKey(n,i);if(a){r[a]=ts(s),delete r[i];return}const o=e?H2(i):String(i).trim();o!==i&&delete r[i],r[o]=ts(s),n[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const r=Object.create(null);return B.forEach(this,(n,s)=>{n!=null&&n!==!1&&(r[s]=e&&B.isArray(n)?n.join(", "):n)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,r])=>e+": "+r).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...r){const n=new this(e);return r.forEach(s=>n.set(s)),n}static accessor(e){const n=(this[Il]=this[Il]={accessors:{}}).accessors,s=this.prototype;function i(a){const o=Gn(a);n[o]||(q2(s,a),n[o]=!0)}return B.isArray(e)?e.forEach(i):i(e),this}}Gs.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);B.reduceDescriptors(Gs.prototype,({value:t},e)=>{let r=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(n){this[r]=n}}});B.freezeMethods(Gs);const nr=Gs;function wi(t,e){const r=this||to,n=e||r,s=nr.from(n.headers);let i=n.data;return B.forEach(t,function(o){i=o.call(r,i,s.normalize(),e?e.status:void 0)}),s.normalize(),i}function g1(t){return!!(t&&t.__CANCEL__)}function Pn(t,e,r){Ne.call(this,t??"canceled",Ne.ERR_CANCELED,e,r),this.name="CanceledError"}B.inherits(Pn,Ne,{__CANCEL__:!0});function v1(t,e,r){const n=r.config.validateStatus;!r.status||!n||n(r.status)?t(r):e(new Ne("Request failed with status code "+r.status,[Ne.ERR_BAD_REQUEST,Ne.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function j2(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function U2(t,e){t=t||10;const r=new Array(t),n=new Array(t);let s=0,i=0,a;return e=e!==void 0?e:1e3,function(l){const c=Date.now(),d=n[i];a||(a=c),r[s]=l,n[s]=c;let f=i,p=0;for(;f!==s;)p+=r[f++],f=f%t;if(s=(s+1)%t,s===i&&(i=(i+1)%t),c-a{r=d,s=null,i&&(clearTimeout(i),i=null),t(...c)};return[(...c)=>{const d=Date.now(),f=d-r;f>=n?a(c,d):(s=c,i||(i=setTimeout(()=>{i=null,a(s)},n-f)))},()=>s&&a(s)]}const ws=(t,e,r=3)=>{let n=0;const s=U2(50,250);return V2(i=>{const a=i.loaded,o=i.lengthComputable?i.total:void 0,l=a-n,c=s(l),d=a<=o;n=a;const f={loaded:a,total:o,progress:o?a/o:void 0,bytes:l,rate:c||void 0,estimated:c&&o&&d?(o-a)/c:void 0,event:i,lengthComputable:o!=null,[e?"download":"upload"]:!0};t(f)},r)},_l=(t,e)=>{const r=t!=null;return[n=>e[0]({lengthComputable:r,total:t,loaded:n}),e[1]]},Ol=t=>(...e)=>B.asap(()=>t(...e)),W2=xt.hasStandardBrowserEnv?((t,e)=>r=>(r=new URL(r,xt.origin),t.protocol===r.protocol&&t.host===r.host&&(e||t.port===r.port)))(new URL(xt.origin),xt.navigator&&/(msie|trident)/i.test(xt.navigator.userAgent)):()=>!0,G2=xt.hasStandardBrowserEnv?{write(t,e,r,n,s,i){const a=[t+"="+encodeURIComponent(e)];B.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),B.isString(n)&&a.push("path="+n),B.isString(s)&&a.push("domain="+s),i===!0&&a.push("secure"),document.cookie=a.join("; ")},read(t){const e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function K2(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Y2(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function b1(t,e,r){let n=!K2(e);return t&&(n||r==!1)?Y2(t,e):e}const Ll=t=>t instanceof nr?{...t}:t;function pn(t,e){e=e||{};const r={};function n(c,d,f,p){return B.isPlainObject(c)&&B.isPlainObject(d)?B.merge.call({caseless:p},c,d):B.isPlainObject(d)?B.merge({},d):B.isArray(d)?d.slice():d}function s(c,d,f,p){if(B.isUndefined(d)){if(!B.isUndefined(c))return n(void 0,c,f,p)}else return n(c,d,f,p)}function i(c,d){if(!B.isUndefined(d))return n(void 0,d)}function a(c,d){if(B.isUndefined(d)){if(!B.isUndefined(c))return n(void 0,c)}else return n(void 0,d)}function o(c,d,f){if(f in e)return n(c,d);if(f in t)return n(void 0,c)}const l={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o,headers:(c,d,f)=>s(Ll(c),Ll(d),f,!0)};return B.forEach(Object.keys({...t,...e}),function(d){const f=l[d]||s,p=f(t[d],e[d],d);B.isUndefined(p)&&f!==o||(r[d]=p)}),r}const y1=t=>{const e=pn({},t);let{data:r,withXSRFToken:n,xsrfHeaderName:s,xsrfCookieName:i,headers:a,auth:o}=e;e.headers=a=nr.from(a),e.url=f1(b1(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),o&&a.set("Authorization","Basic "+btoa((o.username||"")+":"+(o.password?unescape(encodeURIComponent(o.password)):"")));let l;if(B.isFormData(r)){if(xt.hasStandardBrowserEnv||xt.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if((l=a.getContentType())!==!1){const[c,...d]=l?l.split(";").map(f=>f.trim()).filter(Boolean):[];a.setContentType([c||"multipart/form-data",...d].join("; "))}}if(xt.hasStandardBrowserEnv&&(n&&B.isFunction(n)&&(n=n(e)),n||n!==!1&&W2(e.url))){const c=s&&i&&G2.read(i);c&&a.set(s,c)}return e},X2=typeof XMLHttpRequest<"u",J2=X2&&function(t){return new Promise(function(r,n){const s=y1(t);let i=s.data;const a=nr.from(s.headers).normalize();let{responseType:o,onUploadProgress:l,onDownloadProgress:c}=s,d,f,p,b,v;function x(){b&&b(),v&&v(),s.cancelToken&&s.cancelToken.unsubscribe(d),s.signal&&s.signal.removeEventListener("abort",d)}let y=new XMLHttpRequest;y.open(s.method.toUpperCase(),s.url,!0),y.timeout=s.timeout;function M(){if(!y)return;const T=nr.from("getAllResponseHeaders"in y&&y.getAllResponseHeaders()),I={data:!o||o==="text"||o==="json"?y.responseText:y.response,status:y.status,statusText:y.statusText,headers:T,config:t,request:y};v1(function(z){r(z),x()},function(z){n(z),x()},I),y=null}"onloadend"in y?y.onloadend=M:y.onreadystatechange=function(){!y||y.readyState!==4||y.status===0&&!(y.responseURL&&y.responseURL.indexOf("file:")===0)||setTimeout(M)},y.onabort=function(){y&&(n(new Ne("Request aborted",Ne.ECONNABORTED,t,y)),y=null)},y.onerror=function(){n(new Ne("Network Error",Ne.ERR_NETWORK,t,y)),y=null},y.ontimeout=function(){let N=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const I=s.transitional||p1;s.timeoutErrorMessage&&(N=s.timeoutErrorMessage),n(new Ne(N,I.clarifyTimeoutError?Ne.ETIMEDOUT:Ne.ECONNABORTED,t,y)),y=null},i===void 0&&a.setContentType(null),"setRequestHeader"in y&&B.forEach(a.toJSON(),function(N,I){y.setRequestHeader(I,N)}),B.isUndefined(s.withCredentials)||(y.withCredentials=!!s.withCredentials),o&&o!=="json"&&(y.responseType=s.responseType),c&&([p,v]=ws(c,!0),y.addEventListener("progress",p)),l&&y.upload&&([f,b]=ws(l),y.upload.addEventListener("progress",f),y.upload.addEventListener("loadend",b)),(s.cancelToken||s.signal)&&(d=T=>{y&&(n(!T||T.type?new Pn(null,t,y):T),y.abort(),y=null)},s.cancelToken&&s.cancelToken.subscribe(d),s.signal&&(s.signal.aborted?d():s.signal.addEventListener("abort",d)));const k=j2(s.url);if(k&&xt.protocols.indexOf(k)===-1){n(new Ne("Unsupported protocol "+k+":",Ne.ERR_BAD_REQUEST,t));return}y.send(i||null)})},Z2=(t,e)=>{const{length:r}=t=t?t.filter(Boolean):[];if(e||r){let n=new AbortController,s;const i=function(c){if(!s){s=!0,o();const d=c instanceof Error?c:this.reason;n.abort(d instanceof Ne?d:new Pn(d instanceof Error?d.message:d))}};let a=e&&setTimeout(()=>{a=null,i(new Ne(`timeout ${e} of ms exceeded`,Ne.ETIMEDOUT))},e);const o=()=>{t&&(a&&clearTimeout(a),a=null,t.forEach(c=>{c.unsubscribe?c.unsubscribe(i):c.removeEventListener("abort",i)}),t=null)};t.forEach(c=>c.addEventListener("abort",i));const{signal:l}=n;return l.unsubscribe=()=>B.asap(o),l}},Q2=Z2,e3=function*(t,e){let r=t.byteLength;if(!e||r{const s=t3(t,e);let i=0,a,o=l=>{a||(a=!0,n&&n(l))};return new ReadableStream({async pull(l){try{const{done:c,value:d}=await s.next();if(c){o(),l.close();return}let f=d.byteLength;if(r){let p=i+=f;r(p)}l.enqueue(new Uint8Array(d))}catch(c){throw o(c),c}},cancel(l){return o(l),s.return()}},{highWaterMark:2})},Ks=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",w1=Ks&&typeof ReadableStream=="function",n3=Ks&&(typeof TextEncoder=="function"?(t=>e=>t.encode(e))(new TextEncoder):async t=>new Uint8Array(await new Response(t).arrayBuffer())),x1=(t,...e)=>{try{return!!t(...e)}catch{return!1}},s3=w1&&x1(()=>{let t=!1;const e=new Request(xt.origin,{body:new ReadableStream,method:"POST",get duplex(){return t=!0,"half"}}).headers.has("Content-Type");return t&&!e}),Fl=64*1024,sa=w1&&x1(()=>B.isReadableStream(new Response("").body)),xs={stream:sa&&(t=>t.body)};Ks&&(t=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!xs[e]&&(xs[e]=B.isFunction(t[e])?r=>r[e]():(r,n)=>{throw new Ne(`Response type '${e}' is not supported`,Ne.ERR_NOT_SUPPORT,n)})})})(new Response);const i3=async t=>{if(t==null)return 0;if(B.isBlob(t))return t.size;if(B.isSpecCompliantForm(t))return(await new Request(xt.origin,{method:"POST",body:t}).arrayBuffer()).byteLength;if(B.isArrayBufferView(t)||B.isArrayBuffer(t))return t.byteLength;if(B.isURLSearchParams(t)&&(t=t+""),B.isString(t))return(await n3(t)).byteLength},a3=async(t,e)=>{const r=B.toFiniteNumber(t.getContentLength());return r??i3(e)},o3=Ks&&(async t=>{let{url:e,method:r,data:n,signal:s,cancelToken:i,timeout:a,onDownloadProgress:o,onUploadProgress:l,responseType:c,headers:d,withCredentials:f="same-origin",fetchOptions:p}=y1(t);c=c?(c+"").toLowerCase():"text";let b=Q2([s,i&&i.toAbortSignal()],a),v;const x=b&&b.unsubscribe&&(()=>{b.unsubscribe()});let y;try{if(l&&s3&&r!=="get"&&r!=="head"&&(y=await a3(d,n))!==0){let I=new Request(e,{method:"POST",body:n,duplex:"half"}),O;if(B.isFormData(n)&&(O=I.headers.get("content-type"))&&d.setContentType(O),I.body){const[z,W]=_l(y,ws(Ol(l)));n=zl(I.body,Fl,z,W)}}B.isString(f)||(f=f?"include":"omit");const M="credentials"in Request.prototype;v=new Request(e,{...p,signal:b,method:r.toUpperCase(),headers:d.normalize().toJSON(),body:n,duplex:"half",credentials:M?f:void 0});let k=await fetch(v,p);const T=sa&&(c==="stream"||c==="response");if(sa&&(o||T&&x)){const I={};["status","statusText","headers"].forEach(U=>{I[U]=k[U]});const O=B.toFiniteNumber(k.headers.get("content-length")),[z,W]=o&&_l(O,ws(Ol(o),!0))||[];k=new Response(zl(k.body,Fl,z,()=>{W&&W(),x&&x()}),I)}c=c||"text";let N=await xs[B.findKey(xs,c)||"text"](k,t);return!T&&x&&x(),await new Promise((I,O)=>{v1(I,O,{data:N,headers:nr.from(k.headers),status:k.status,statusText:k.statusText,config:t,request:v})})}catch(M){throw x&&x(),M&&M.name==="TypeError"&&/Load failed|fetch/i.test(M.message)?Object.assign(new Ne("Network Error",Ne.ERR_NETWORK,t,v),{cause:M.cause||M}):Ne.from(M,M&&M.code,t,v)}}),ia={http:w2,xhr:J2,fetch:o3};B.forEach(ia,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const $l=t=>`- ${t}`,l3=t=>B.isFunction(t)||t===null||t===!1,k1={getAdapter:t=>{t=B.isArray(t)?t:[t];const{length:e}=t;let r,n;const s={};for(let i=0;i`adapter ${o} `+(l===!1?"is not supported by the environment":"is not available in the build"));let a=e?i.length>1?`since : +`+i.map($l).join(` +`):" "+$l(i[0]):"as no adapter specified";throw new Ne("There is no suitable adapter to dispatch the request "+a,"ERR_NOT_SUPPORT")}return n},adapters:ia};function xi(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new Pn(null,t)}function Bl(t){return xi(t),t.headers=nr.from(t.headers),t.data=wi.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),k1.getAdapter(t.adapter||to.adapter)(t).then(function(n){return xi(t),n.data=wi.call(t,t.transformResponse,n),n.headers=nr.from(n.headers),n},function(n){return g1(n)||(xi(t),n&&n.response&&(n.response.data=wi.call(t,t.transformResponse,n.response),n.response.headers=nr.from(n.response.headers))),Promise.reject(n)})}const S1="1.11.0",Ys={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{Ys[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}});const Pl={};Ys.transitional=function(e,r,n){function s(i,a){return"[Axios v"+S1+"] Transitional option '"+i+"'"+a+(n?". "+n:"")}return(i,a,o)=>{if(e===!1)throw new Ne(s(a," has been removed"+(r?" in "+r:"")),Ne.ERR_DEPRECATED);return r&&!Pl[a]&&(Pl[a]=!0,console.warn(s(a," has been deprecated since v"+r+" and will be removed in the near future"))),e?e(i,a,o):!0}};Ys.spelling=function(e){return(r,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};function c3(t,e,r){if(typeof t!="object")throw new Ne("options must be an object",Ne.ERR_BAD_OPTION_VALUE);const n=Object.keys(t);let s=n.length;for(;s-- >0;){const i=n[s],a=e[i];if(a){const o=t[i],l=o===void 0||a(o,i,t);if(l!==!0)throw new Ne("option "+i+" must be "+l,Ne.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new Ne("Unknown option "+i,Ne.ERR_BAD_OPTION)}}const rs={assertOptions:c3,validators:Ys},or=rs.validators;class ks{constructor(e){this.defaults=e||{},this.interceptors={request:new Rl,response:new Rl}}async request(e,r){try{return await this._request(e,r)}catch(n){if(n instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.stack.replace(/^.+\n/,""):"";try{n.stack?i&&!String(n.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(n.stack+=` +`+i):n.stack=i}catch{}}throw n}}_request(e,r){typeof e=="string"?(r=r||{},r.url=e):r=e||{},r=pn(this.defaults,r);const{transitional:n,paramsSerializer:s,headers:i}=r;n!==void 0&&rs.assertOptions(n,{silentJSONParsing:or.transitional(or.boolean),forcedJSONParsing:or.transitional(or.boolean),clarifyTimeoutError:or.transitional(or.boolean)},!1),s!=null&&(B.isFunction(s)?r.paramsSerializer={serialize:s}:rs.assertOptions(s,{encode:or.function,serialize:or.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),rs.assertOptions(r,{baseUrl:or.spelling("baseURL"),withXsrfToken:or.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let a=i&&B.merge(i.common,i[r.method]);i&&B.forEach(["delete","get","head","post","put","patch","common"],v=>{delete i[v]}),r.headers=nr.concat(a,i);const o=[];let l=!0;this.interceptors.request.forEach(function(x){typeof x.runWhen=="function"&&x.runWhen(r)===!1||(l=l&&x.synchronous,o.unshift(x.fulfilled,x.rejected))});const c=[];this.interceptors.response.forEach(function(x){c.push(x.fulfilled,x.rejected)});let d,f=0,p;if(!l){const v=[Bl.bind(this),void 0];for(v.unshift(...o),v.push(...c),p=v.length,d=Promise.resolve(r);f{if(!n._listeners)return;let i=n._listeners.length;for(;i-- >0;)n._listeners[i](s);n._listeners=null}),this.promise.then=s=>{let i;const a=new Promise(o=>{n.subscribe(o),i=o}).then(s);return a.cancel=function(){n.unsubscribe(i)},a},e(function(i,a,o){n.reason||(n.reason=new Pn(i,a,o),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const r=this._listeners.indexOf(e);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const e=new AbortController,r=n=>{e.abort(n)};return this.subscribe(r),e.signal.unsubscribe=()=>this.unsubscribe(r),e.signal}static source(){let e;return{token:new ro(function(s){e=s}),cancel:e}}}const u3=ro;function d3(t){return function(r){return t.apply(null,r)}}function h3(t){return B.isObject(t)&&t.isAxiosError===!0}const aa={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(aa).forEach(([t,e])=>{aa[e]=t});const f3=aa;function T1(t){const e=new ns(t),r=t1(ns.prototype.request,e);return B.extend(r,ns.prototype,e,{allOwnKeys:!0}),B.extend(r,e,null,{allOwnKeys:!0}),r.create=function(s){return T1(pn(t,s))},r}const dt=T1(to);dt.Axios=ns;dt.CanceledError=Pn;dt.CancelToken=u3;dt.isCancel=g1;dt.VERSION=S1;dt.toFormData=Ws;dt.AxiosError=Ne;dt.Cancel=dt.CanceledError;dt.all=function(e){return Promise.all(e)};dt.spread=d3;dt.isAxiosError=h3;dt.mergeConfig=pn;dt.AxiosHeaders=nr;dt.formToJSON=t=>m1(B.isHTMLForm(t)?new FormData(t):t);dt.getAdapter=k1.getAdapter;dt.HttpStatusCode=f3;dt.default=dt;const p3=dt,m3="http://127.0.0.1:8000/api",kn=p3.create({baseURL:m3,timeout:1e4,headers:{"Content-Type":"application/json"}}),lt={createMindmap:(t="思维导图",e=null)=>kn.post("/mindMaps",{title:t,data:e}),getMindmap:t=>kn.get(`/mindMaps/${t}`),getAllMindmaps:()=>kn.get("/mindmaps"),addNodes:(t,e)=>kn.post("/mindMaps/addNodes",{mindMapId:t,nodes:e}),updateNode:(t,e)=>kn.patch("/mindMaps/updateNode",{id:t,...e}),deleteNodes:t=>kn.delete("/mindMaps/deleteNodes",{data:{nodeIds:t}})};function no(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var vn=no();function A1(t){vn=t}var o0={exec:()=>null};function je(t,e=""){let r=typeof t=="string"?t:t.source,n={replace:(s,i)=>{let a=typeof i=="string"?i:i.source;return a=a.replace(Mt.caret,"$1"),r=r.replace(s,a),n},getRegex:()=>new RegExp(r,e)};return n}var Mt={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},g3=/^(?:[ \t]*(?:\n|$))+/,v3=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,b3=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,S0=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,y3=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,so=/(?:[*+-]|\d{1,9}[.)])/,E1=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,C1=je(E1).replace(/bull/g,so).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),w3=je(E1).replace(/bull/g,so).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),io=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,x3=/^[^\n]+/,ao=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,k3=je(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",ao).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),S3=je(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,so).getRegex(),Xs="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",oo=/|$))/,T3=je("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",oo).replace("tag",Xs).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),M1=je(io).replace("hr",S0).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Xs).getRegex(),A3=je(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",M1).getRegex(),lo={blockquote:A3,code:v3,def:k3,fences:b3,heading:y3,hr:S0,html:T3,lheading:C1,list:S3,newline:g3,paragraph:M1,table:o0,text:x3},Hl=je("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",S0).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Xs).getRegex(),E3={...lo,lheading:w3,table:Hl,paragraph:je(io).replace("hr",S0).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Hl).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Xs).getRegex()},C3={...lo,html:je(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",oo).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:o0,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:je(io).replace("hr",S0).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",C1).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},M3=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,N3=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,N1=/^( {2,}|\\)\n(?!\s*$)/,D3=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,I1=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,L3=je(I1,"u").replace(/punct/g,Js).getRegex(),z3=je(I1,"u").replace(/punct/g,R1).getRegex(),_1="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",F3=je(_1,"gu").replace(/notPunctSpace/g,D1).replace(/punctSpace/g,co).replace(/punct/g,Js).getRegex(),$3=je(_1,"gu").replace(/notPunctSpace/g,_3).replace(/punctSpace/g,I3).replace(/punct/g,R1).getRegex(),B3=je("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,D1).replace(/punctSpace/g,co).replace(/punct/g,Js).getRegex(),P3=je(/\\(punct)/,"gu").replace(/punct/g,Js).getRegex(),H3=je(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),q3=je(oo).replace("(?:-->|$)","-->").getRegex(),j3=je("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",q3).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Ss=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,U3=je(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Ss).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),O1=je(/^!?\[(label)\]\[(ref)\]/).replace("label",Ss).replace("ref",ao).getRegex(),L1=je(/^!?\[(ref)\](?:\[\])?/).replace("ref",ao).getRegex(),V3=je("reflink|nolink(?!\\()","g").replace("reflink",O1).replace("nolink",L1).getRegex(),uo={_backpedal:o0,anyPunctuation:P3,autolink:H3,blockSkip:O3,br:N1,code:N3,del:o0,emStrongLDelim:L3,emStrongRDelimAst:F3,emStrongRDelimUnd:B3,escape:M3,link:U3,nolink:L1,punctuation:R3,reflink:O1,reflinkSearch:V3,tag:j3,text:D3,url:o0},W3={...uo,link:je(/^!?\[(label)\]\((.*?)\)/).replace("label",Ss).getRegex(),reflink:je(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ss).getRegex()},oa={...uo,emStrongRDelimAst:$3,emStrongLDelim:z3,url:je(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},ql=t=>K3[t];function lr(t,e){if(e){if(Mt.escapeTest.test(t))return t.replace(Mt.escapeReplace,ql)}else if(Mt.escapeTestNoEncode.test(t))return t.replace(Mt.escapeReplaceNoEncode,ql);return t}function jl(t){try{t=encodeURI(t).replace(Mt.percentDecode,"%")}catch{return null}return t}function Ul(t,e){var i;let r=t.replace(Mt.findPipe,(a,o,l)=>{let c=!1,d=o;for(;--d>=0&&l[d]==="\\";)c=!c;return c?"|":" |"}),n=r.split(Mt.splitPipe),s=0;if(n[0].trim()||n.shift(),n.length>0&&!((i=n.at(-1))!=null&&i.trim())&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length0?-2:-1}function Vl(t,e,r,n,s){let i=e.href,a=e.title||null,o=t[1].replace(s.other.outputLinkReplace,"$1");n.state.inLink=!0;let l={type:t[0].charAt(0)==="!"?"image":"link",raw:r,href:i,title:a,text:o,tokens:n.inlineTokens(o)};return n.state.inLink=!1,l}function X3(t,e,r){let n=t.match(r.other.indentCodeCompensation);if(n===null)return e;let s=n[1];return e.split(` +`).map(i=>{let a=i.match(r.other.beginningSpace);if(a===null)return i;let[o]=a;return o.length>=s.length?i.slice(s.length):i}).join(` +`)}var Ts=class{constructor(t){Ge(this,"options");Ge(this,"rules");Ge(this,"lexer");this.options=t||vn}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:Yn(r,` +`)}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let r=e[0],n=X3(r,e[3]||"",this.rules);return{type:"code",raw:r,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:n}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let n=Yn(r,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(r=n.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:Yn(e[0],` +`)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let r=Yn(e[0],` +`).split(` +`),n="",s="",i=[];for(;r.length>0;){let a=!1,o=[],l;for(l=0;l1,s={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");let i=this.rules.other.listItemRegex(r),a=!1;for(;t;){let l=!1,c="",d="";if(!(e=i.exec(t))||this.rules.block.hr.test(t))break;c=e[0],t=t.substring(c.length);let f=e[2].split(` +`,1)[0].replace(this.rules.other.listReplaceTabs,M=>" ".repeat(3*M.length)),p=t.split(` +`,1)[0],b=!f.trim(),v=0;if(this.options.pedantic?(v=2,d=f.trimStart()):b?v=e[1].length+1:(v=e[2].search(this.rules.other.nonSpaceChar),v=v>4?1:v,d=f.slice(v),v+=e[1].length),b&&this.rules.other.blankLine.test(p)&&(c+=p+` +`,t=t.substring(p.length+1),l=!0),!l){let M=this.rules.other.nextBulletRegex(v),k=this.rules.other.hrRegex(v),T=this.rules.other.fencesBeginRegex(v),N=this.rules.other.headingBeginRegex(v),I=this.rules.other.htmlBeginRegex(v);for(;t;){let O=t.split(` +`,1)[0],z;if(p=O,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),z=p):z=p.replace(this.rules.other.tabCharGlobal," "),T.test(p)||N.test(p)||I.test(p)||M.test(p)||k.test(p))break;if(z.search(this.rules.other.nonSpaceChar)>=v||!p.trim())d+=` +`+z.slice(v);else{if(b||f.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||T.test(f)||N.test(f)||k.test(f))break;d+=` +`+p}!b&&!p.trim()&&(b=!0),c+=O+` +`,t=t.substring(O.length+1),f=z.slice(v)}}s.loose||(a?s.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(a=!0));let x=null,y;this.options.gfm&&(x=this.rules.other.listIsTask.exec(d),x&&(y=x[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,""))),s.items.push({type:"list_item",raw:c,task:!!x,checked:y,loose:!1,text:d,tokens:[]}),s.raw+=c}let o=s.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;s.raw=s.raw.trimEnd();for(let l=0;lf.type==="space"),d=c.length>0&&c.some(f=>this.rules.other.anyLine.test(f.raw));s.loose=d}if(s.loose)for(let l=0;l({text:l,tokens:this.lexer.inline(l),header:!1,align:i.align[c]})));return i}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let r=e[1].charAt(e[1].length-1)===` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:r,tokens:this.lexer.inline(r)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let r=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let i=Yn(r.slice(0,-1),"\\");if((r.length-i.length)%2===0)return}else{let i=Y3(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],s="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],s=i[3])}else s=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?n=n.slice(1):n=n.slice(1,-1)),Vl(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:s&&s.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let n=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),s=e[n.toLowerCase()];if(!s){let i=r[0].charAt(0);return{type:"text",raw:i,text:i}}return Vl(r,s,r[0],this.lexer,this.rules)}}emStrong(t,e,r=""){let n=this.rules.inline.emStrongLDelim.exec(t);if(!(!n||n[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[2])||!r||this.rules.inline.punctuation.exec(r))){let s=[...n[0]].length-1,i,a,o=s,l=0,c=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,e=e.slice(-1*t.length+s);(n=c.exec(e))!=null;){if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!i)continue;if(a=[...i].length,n[3]||n[4]){o+=a;continue}else if((n[5]||n[6])&&s%3&&!((s+a)%3)){l+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o+l);let d=[...n[0]][0].length,f=t.slice(0,s+n.index+d+a);if(Math.min(s,a)%2){let b=f.slice(1,-1);return{type:"em",raw:f,text:b,tokens:this.lexer.inlineTokens(b)}}let p=f.slice(2,-2);return{type:"strong",raw:f,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(r),s=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return n&&s&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let r,n;return e[2]==="@"?(r=e[1],n="mailto:"+r):(r=e[1],n=r),{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}url(t){var r;let e;if(e=this.rules.inline.url.exec(t)){let n,s;if(e[2]==="@")n=e[0],s="mailto:"+n;else{let i;do i=e[0],e[0]=((r=this.rules.inline._backpedal.exec(e[0]))==null?void 0:r[0])??"";while(i!==e[0]);n=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},Cr=class la{constructor(e){Ge(this,"tokens");Ge(this,"options");Ge(this,"state");Ge(this,"tokenizer");Ge(this,"inlineQueue");this.tokens=[],this.tokens.links=Object.create(null),this.options=e||vn,this.options.tokenizer=this.options.tokenizer||new Ts,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:Mt,block:F0.normal,inline:Kn.normal};this.options.pedantic?(r.block=F0.pedantic,r.inline=Kn.pedantic):this.options.gfm&&(r.block=F0.gfm,this.options.breaks?r.inline=Kn.breaks:r.inline=Kn.gfm),this.tokenizer.rules=r}static get rules(){return{block:F0,inline:Kn}}static lex(e,r){return new la(r).lex(e)}static lexInline(e,r){return new la(r).inlineTokens(e)}lex(e){e=e.replace(Mt.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let r=0;r(o=c.call({lexer:this},e,r))?(e=e.substring(o.raw.length),r.push(o),!0):!1))continue;if(o=this.tokenizer.space(e)){e=e.substring(o.raw.length);let c=r.at(-1);o.raw.length===1&&c!==void 0?c.raw+=` +`:r.push(o);continue}if(o=this.tokenizer.code(e)){e=e.substring(o.raw.length);let c=r.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith(` +`)?"":` +`)+o.raw,c.text+=` +`+o.text,this.inlineQueue.at(-1).src=c.text):r.push(o);continue}if(o=this.tokenizer.fences(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.heading(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.hr(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.blockquote(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.list(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.html(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.def(e)){e=e.substring(o.raw.length);let c=r.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith(` +`)?"":` +`)+o.raw,c.text+=` +`+o.raw,this.inlineQueue.at(-1).src=c.text):this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title},r.push(o));continue}if(o=this.tokenizer.table(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.lheading(e)){e=e.substring(o.raw.length),r.push(o);continue}let l=e;if((a=this.options.extensions)!=null&&a.startBlock){let c=1/0,d=e.slice(1),f;this.options.extensions.startBlock.forEach(p=>{f=p.call({lexer:this},d),typeof f=="number"&&f>=0&&(c=Math.min(c,f))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(this.state.top&&(o=this.tokenizer.paragraph(l))){let c=r.at(-1);n&&(c==null?void 0:c.type)==="paragraph"?(c.raw+=(c.raw.endsWith(` +`)?"":` +`)+o.raw,c.text+=` +`+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):r.push(o),n=l.length!==e.length,e=e.substring(o.raw.length);continue}if(o=this.tokenizer.text(e)){e=e.substring(o.raw.length);let c=r.at(-1);(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith(` +`)?"":` +`)+o.raw,c.text+=` +`+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):r.push(o);continue}if(e){let c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){var o,l,c;let n=e,s=null;if(this.tokens.links){let d=Object.keys(this.tokens.links);if(d.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)d.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,s.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(s=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let i=!1,a="";for(;e;){i||(a=""),i=!1;let d;if((l=(o=this.options.extensions)==null?void 0:o.inline)!=null&&l.some(p=>(d=p.call({lexer:this},e,r))?(e=e.substring(d.raw.length),r.push(d),!0):!1))continue;if(d=this.tokenizer.escape(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.tag(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.link(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(d.raw.length);let p=r.at(-1);d.type==="text"&&(p==null?void 0:p.type)==="text"?(p.raw+=d.raw,p.text+=d.text):r.push(d);continue}if(d=this.tokenizer.emStrong(e,n,a)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.codespan(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.br(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.del(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.autolink(e)){e=e.substring(d.raw.length),r.push(d);continue}if(!this.state.inLink&&(d=this.tokenizer.url(e))){e=e.substring(d.raw.length),r.push(d);continue}let f=e;if((c=this.options.extensions)!=null&&c.startInline){let p=1/0,b=e.slice(1),v;this.options.extensions.startInline.forEach(x=>{v=x.call({lexer:this},b),typeof v=="number"&&v>=0&&(p=Math.min(p,v))}),p<1/0&&p>=0&&(f=e.substring(0,p+1))}if(d=this.tokenizer.inlineText(f)){e=e.substring(d.raw.length),d.raw.slice(-1)!=="_"&&(a=d.raw.slice(-1)),i=!0;let p=r.at(-1);(p==null?void 0:p.type)==="text"?(p.raw+=d.raw,p.text+=d.text):r.push(d);continue}if(e){let p="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return r}},As=class{constructor(t){Ge(this,"options");Ge(this,"parser");this.options=t||vn}space(t){return""}code({text:t,lang:e,escaped:r}){var i;let n=(i=(e||"").match(Mt.notSpaceStart))==null?void 0:i[0],s=t.replace(Mt.endingNewline,"")+` +`;return n?'
'+(r?s:lr(s,!0))+`
+`:"
"+(r?s:lr(s,!0))+`
+`}blockquote({tokens:t}){return`
+${this.parser.parse(t)}
+`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`${this.parser.parseInline(t)} +`}hr(t){return`
+`}list(t){let e=t.ordered,r=t.start,n="";for(let a=0;a +`+n+" +`}listitem(t){var r;let e="";if(t.task){let n=this.checkbox({checked:!!t.checked});t.loose?((r=t.tokens[0])==null?void 0:r.type)==="paragraph"?(t.tokens[0].text=n+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&t.tokens[0].tokens[0].type==="text"&&(t.tokens[0].tokens[0].text=n+" "+lr(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):e+=n+" "}return e+=this.parser.parse(t.tokens,!!t.loose),`
  • ${e}
  • +`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    +`}table(t){let e="",r="";for(let s=0;s${n}`),` + +`+e+` +`+n+`
    +`}tablerow({text:t}){return` +${t} +`}tablecell(t){let e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+` +`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${lr(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:r}){let n=this.parser.parseInline(r),s=jl(t);if(s===null)return n;t=s;let i='
    ",i}image({href:t,title:e,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let s=jl(t);if(s===null)return lr(r);t=s;let i=`${r}{let l=a[o].flat(1/0);r=r.concat(this.walkTokens(l,e))}):a.tokens&&(r=r.concat(this.walkTokens(a.tokens,e)))}}return r}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(r=>{let n={...r};if(n.async=this.defaults.async||n.async||!1,r.extensions&&(r.extensions.forEach(s=>{if(!s.name)throw new Error("extension name required");if("renderer"in s){let i=e.renderers[s.name];i?e.renderers[s.name]=function(...a){let o=s.renderer.apply(this,a);return o===!1&&(o=i.apply(this,a)),o}:e.renderers[s.name]=s.renderer}if("tokenizer"in s){if(!s.level||s.level!=="block"&&s.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=e[s.level];i?i.unshift(s.tokenizer):e[s.level]=[s.tokenizer],s.start&&(s.level==="block"?e.startBlock?e.startBlock.push(s.start):e.startBlock=[s.start]:s.level==="inline"&&(e.startInline?e.startInline.push(s.start):e.startInline=[s.start]))}"childTokens"in s&&s.childTokens&&(e.childTokens[s.name]=s.childTokens)}),n.extensions=e),r.renderer){let s=this.defaults.renderer||new As(this.defaults);for(let i in r.renderer){if(!(i in s))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let a=i,o=r.renderer[a],l=s[a];s[a]=(...c)=>{let d=o.apply(s,c);return d===!1&&(d=l.apply(s,c)),d||""}}n.renderer=s}if(r.tokenizer){let s=this.defaults.tokenizer||new Ts(this.defaults);for(let i in r.tokenizer){if(!(i in s))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let a=i,o=r.tokenizer[a],l=s[a];s[a]=(...c)=>{let d=o.apply(s,c);return d===!1&&(d=l.apply(s,c)),d}}n.tokenizer=s}if(r.hooks){let s=this.defaults.hooks||new ss;for(let i in r.hooks){if(!(i in s))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let a=i,o=r.hooks[a],l=s[a];ss.passThroughHooks.has(i)?s[a]=c=>{if(this.defaults.async)return Promise.resolve(o.call(s,c)).then(f=>l.call(s,f));let d=o.call(s,c);return l.call(s,d)}:s[a]=(...c)=>{let d=o.apply(s,c);return d===!1&&(d=l.apply(s,c)),d}}n.hooks=s}if(r.walkTokens){let s=this.defaults.walkTokens,i=r.walkTokens;n.walkTokens=function(a){let o=[];return o.push(i.call(this,a)),s&&(o=o.concat(s.call(this,a))),o}}this.defaults={...this.defaults,...n}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Cr.lex(t,e??this.defaults)}parser(t,e){return Mr.parse(t,e??this.defaults)}parseMarkdown(t){return(e,r)=>{let n={...r},s={...this.defaults,...n},i=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&n.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));s.hooks&&(s.hooks.options=s,s.hooks.block=t);let a=s.hooks?s.hooks.provideLexer():t?Cr.lex:Cr.lexInline,o=s.hooks?s.hooks.provideParser():t?Mr.parse:Mr.parseInline;if(s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(e):e).then(l=>a(l,s)).then(l=>s.hooks?s.hooks.processAllTokens(l):l).then(l=>s.walkTokens?Promise.all(this.walkTokens(l,s.walkTokens)).then(()=>l):l).then(l=>o(l,s)).then(l=>s.hooks?s.hooks.postprocess(l):l).catch(i);try{s.hooks&&(e=s.hooks.preprocess(e));let l=a(e,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let c=o(l,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(l){return i(l)}}}onError(t,e){return r=>{if(r.message+=` +Please report this to https://github.com/markedjs/marked.`,t){let n="

    An error occurred:

    "+lr(r.message+"",!0)+"
    ";return e?Promise.resolve(n):n}if(e)return Promise.reject(r);throw r}}},mn=new J3;function qe(t,e){return mn.parse(t,e)}qe.options=qe.setOptions=function(t){return mn.setOptions(t),qe.defaults=mn.defaults,A1(qe.defaults),qe};qe.getDefaults=no;qe.defaults=vn;qe.use=function(...t){return mn.use(...t),qe.defaults=mn.defaults,A1(qe.defaults),qe};qe.walkTokens=function(t,e){return mn.walkTokens(t,e)};qe.parseInline=mn.parseInline;qe.Parser=Mr;qe.parser=Mr.parse;qe.Renderer=As;qe.TextRenderer=ho;qe.Lexer=Cr;qe.lexer=Cr.lex;qe.Tokenizer=Ts;qe.Hooks=ss;qe.parse=qe;qe.options;qe.setOptions;qe.use;qe.walkTokens;qe.parseInline;Mr.parse;Cr.lex;var Wl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Z3(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function v8(t){if(t.__esModule)return t;var e=t.default;if(typeof e=="function"){var r=function n(){return this instanceof n?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};r.prototype=e.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(t).forEach(function(n){var s=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(r,n,s.get?s:{enumerable:!0,get:function(){return t[n]}})}),r}var z1={exports:{}};(function(t){var e=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT + * @author Lea Verou + * @namespace + * @public + */var r=function(n){var s=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,i=0,a={},o={manual:n.Prism&&n.Prism.manual,disableWorkerMessageHandler:n.Prism&&n.Prism.disableWorkerMessageHandler,util:{encode:function k(T){return T instanceof l?new l(T.type,k(T.content),T.alias):Array.isArray(T)?T.map(k):T.replace(/&/g,"&").replace(/"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT"&&1<2)return document.currentScript;try{throw new Error}catch(I){var k=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(I.stack)||[])[1];if(k){var T=document.getElementsByTagName("script");for(var N in T)if(T[N].src==k)return T[N]}return null}},isActive:function(k,T,N){for(var I="no-"+T;k;){var O=k.classList;if(O.contains(T))return!0;if(O.contains(I))return!1;k=k.parentElement}return!!N}},languages:{plain:a,plaintext:a,text:a,txt:a,extend:function(k,T){var N=o.util.clone(o.languages[k]);for(var I in T)N[I]=T[I];return N},insertBefore:function(k,T,N,I){I=I||o.languages;var O=I[k],z={};for(var W in O)if(O.hasOwnProperty(W)){if(W==T)for(var U in N)N.hasOwnProperty(U)&&(z[U]=N[U]);N.hasOwnProperty(W)||(z[W]=O[W])}var he=I[k];return I[k]=z,o.languages.DFS(o.languages,function(ge,Ae){Ae===he&&ge!=k&&(this[ge]=z)}),z},DFS:function k(T,N,I,O){O=O||{};var z=o.util.objId;for(var W in T)if(T.hasOwnProperty(W)){N.call(T,W,T[W],I||W);var U=T[W],he=o.util.type(U);he==="Object"&&!O[z(U)]?(O[z(U)]=!0,k(U,N,null,O)):he==="Array"&&!O[z(U)]&&(O[z(U)]=!0,k(U,N,W,O))}}},plugins:{},highlightAll:function(k,T){o.highlightAllUnder(document,k,T)},highlightAllUnder:function(k,T,N){var I={callback:N,container:k,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};o.hooks.run("before-highlightall",I),I.elements=Array.prototype.slice.apply(I.container.querySelectorAll(I.selector)),o.hooks.run("before-all-elements-highlight",I);for(var O=0,z;z=I.elements[O++];)o.highlightElement(z,T===!0,I.callback)},highlightElement:function(k,T,N){var I=o.util.getLanguage(k),O=o.languages[I];o.util.setLanguage(k,I);var z=k.parentElement;z&&z.nodeName.toLowerCase()==="pre"&&o.util.setLanguage(z,I);var W=k.textContent,U={element:k,language:I,grammar:O,code:W};function he(Ae){U.highlightedCode=Ae,o.hooks.run("before-insert",U),U.element.innerHTML=U.highlightedCode,o.hooks.run("after-highlight",U),o.hooks.run("complete",U),N&&N.call(U.element)}if(o.hooks.run("before-sanity-check",U),z=U.element.parentElement,z&&z.nodeName.toLowerCase()==="pre"&&!z.hasAttribute("tabindex")&&z.setAttribute("tabindex","0"),!U.code){o.hooks.run("complete",U),N&&N.call(U.element);return}if(o.hooks.run("before-highlight",U),!U.grammar){he(o.util.encode(U.code));return}if(T&&n.Worker){var ge=new Worker(o.filename);ge.onmessage=function(Ae){he(Ae.data)},ge.postMessage(JSON.stringify({language:U.language,code:U.code,immediateClose:!0}))}else he(o.highlight(U.code,U.grammar,U.language))},highlight:function(k,T,N){var I={code:k,grammar:T,language:N};if(o.hooks.run("before-tokenize",I),!I.grammar)throw new Error('The language "'+I.language+'" has no grammar.');return I.tokens=o.tokenize(I.code,I.grammar),o.hooks.run("after-tokenize",I),l.stringify(o.util.encode(I.tokens),I.language)},tokenize:function(k,T){var N=T.rest;if(N){for(var I in N)T[I]=N[I];delete T.rest}var O=new f;return p(O,O.head,k),d(k,O,T,O.head,0),v(O)},hooks:{all:{},add:function(k,T){var N=o.hooks.all;N[k]=N[k]||[],N[k].push(T)},run:function(k,T){var N=o.hooks.all[k];if(!(!N||!N.length))for(var I=0,O;O=N[I++];)O(T)}},Token:l};n.Prism=o;function l(k,T,N,I){this.type=k,this.content=T,this.alias=N,this.length=(I||"").length|0}l.stringify=function k(T,N){if(typeof T=="string")return T;if(Array.isArray(T)){var I="";return T.forEach(function(he){I+=k(he,N)}),I}var O={type:T.type,content:k(T.content,N),tag:"span",classes:["token",T.type],attributes:{},language:N},z=T.alias;z&&(Array.isArray(z)?Array.prototype.push.apply(O.classes,z):O.classes.push(z)),o.hooks.run("wrap",O);var W="";for(var U in O.attributes)W+=" "+U+'="'+(O.attributes[U]||"").replace(/"/g,""")+'"';return"<"+O.tag+' class="'+O.classes.join(" ")+'"'+W+">"+O.content+""};function c(k,T,N,I){k.lastIndex=T;var O=k.exec(N);if(O&&I&&O[1]){var z=O[1].length;O.index+=z,O[0]=O[0].slice(z)}return O}function d(k,T,N,I,O,z){for(var W in N)if(!(!N.hasOwnProperty(W)||!N[W])){var U=N[W];U=Array.isArray(U)?U:[U];for(var he=0;he=z.reach);Me+=ve.value.length,ve=ve.next){var tt=ve.value;if(T.length>k.length)return;if(!(tt instanceof l)){var We=1,_e;if(Je){if(_e=c(Ie,Me,k,et),!_e||_e.index>=k.length)break;var V=_e.index,St=_e.index+_e[0].length,mt=Me;for(mt+=ve.value.length;V>=mt;)ve=ve.next,mt+=ve.value.length;if(mt-=ve.value.length,Me=mt,ve.value instanceof l)continue;for(var j=ve;j!==T.tail&&(mtz.reach&&(z.reach=ye);var fe=ve.prev;ie&&(fe=p(T,fe,ie),Me+=ie.length),b(T,fe,We);var Ue=new l(W,Ae?o.tokenize(re,Ae):re,ot,re);if(ve=p(T,fe,Ue),Ee&&p(T,ve,Ee),We>1){var S={cause:W+","+he,reach:ye};d(k,T,N,ve.prev,Me,S),z&&S.reach>z.reach&&(z.reach=S.reach)}}}}}}function f(){var k={value:null,prev:null,next:null},T={value:null,prev:k,next:null};k.next=T,this.head=k,this.tail=T,this.length=0}function p(k,T,N){var I=T.next,O={value:N,prev:T,next:I};return T.next=O,I.prev=O,k.length++,O}function b(k,T,N){for(var I=T.next,O=0;O/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.languages.markup.doctype.inside["internal-subset"].inside=r.languages.markup,r.hooks.add("wrap",function(n){n.type==="entity"&&(n.attributes.title=n.content.replace(/&/,"&"))}),Object.defineProperty(r.languages.markup.tag,"addInlined",{value:function(s,i){var a={};a["language-"+i]={pattern:/(^$)/i,lookbehind:!0,inside:r.languages[i]},a.cdata=/^$/i;var o={"included-cdata":{pattern://i,inside:a}};o["language-"+i]={pattern:/[\s\S]+/,inside:r.languages[i]};var l={};l[s]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return s}),"i"),lookbehind:!0,greedy:!0,inside:o},r.languages.insertBefore("markup","cdata",l)}}),Object.defineProperty(r.languages.markup.tag,"addAttribute",{value:function(n,s){r.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+n+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[s,"language-"+s],inside:r.languages[s]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.xml=r.languages.extend("markup",{}),r.languages.ssml=r.languages.xml,r.languages.atom=r.languages.xml,r.languages.rss=r.languages.xml,function(n){var s=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;n.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+s.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+s.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+s.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+s.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:s,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},n.languages.css.atrule.inside.rest=n.languages.css;var i=n.languages.markup;i&&(i.tag.addInlined("style","css"),i.tag.addAttribute("style","css"))}(r),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},r.languages.javascript=r.languages.extend("clike",{"class-name":[r.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),r.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,r.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:r.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:r.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:r.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:r.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:r.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),r.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:r.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),r.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),r.languages.markup&&(r.languages.markup.tag.addInlined("script","javascript"),r.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),r.languages.js=r.languages.javascript,function(){if(typeof r>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var n="Loading…",s=function(x,y){return"✖ Error "+x+" while fetching file: "+y},i="✖ Error: File does not exist or is empty",a={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},o="data-src-status",l="loading",c="loaded",d="failed",f="pre[data-src]:not(["+o+'="'+c+'"]):not(['+o+'="'+l+'"])';function p(x,y,M){var k=new XMLHttpRequest;k.open("GET",x,!0),k.onreadystatechange=function(){k.readyState==4&&(k.status<400&&k.responseText?y(k.responseText):k.status>=400?M(s(k.status,k.statusText)):M(i))},k.send(null)}function b(x){var y=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(x||"");if(y){var M=Number(y[1]),k=y[2],T=y[3];return k?T?[M,Number(T)]:[M,void 0]:[M,M]}}r.hooks.add("before-highlightall",function(x){x.selector+=", "+f}),r.hooks.add("before-sanity-check",function(x){var y=x.element;if(y.matches(f)){x.code="",y.setAttribute(o,l);var M=y.appendChild(document.createElement("CODE"));M.textContent=n;var k=y.getAttribute("data-src"),T=x.language;if(T==="none"){var N=(/\.(\w+)$/.exec(k)||[,"none"])[1];T=a[N]||N}r.util.setLanguage(M,T),r.util.setLanguage(y,T);var I=r.plugins.autoloader;I&&I.loadLanguages(T),p(k,function(O){y.setAttribute(o,c);var z=b(y.getAttribute("data-range"));if(z){var W=O.split(/\r\n?|\n/g),U=z[0],he=z[1]==null?W.length:z[1];U<0&&(U+=W.length),U=Math.max(0,Math.min(U-1,W.length)),he<0&&(he+=W.length),he=Math.max(0,Math.min(he,W.length)),O=W.slice(U,he).join(` +`),y.hasAttribute("data-start")||y.setAttribute("data-start",String(U+1))}M.textContent=O,r.highlightElement(M)},function(O){y.setAttribute(o,d),M.textContent=O})}}),r.plugins.fileHighlight={highlight:function(y){for(var M=(y||document).querySelectorAll(f),k=0,T;T=M[k++];)r.highlightElement(T)}};var v=!1;r.fileHighlight=function(){v||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),v=!0),r.plugins.fileHighlight.highlight.apply(this,arguments)}}()})(z1);var Q3=z1.exports;const Gl=Z3(Q3);class Ft{constructor(e,r,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=r,this.end=n}static range(e,r){return r?!e||!e.loc||!r.loc||e.loc.lexer!==r.loc.lexer?null:new Ft(e.loc.lexer,e.loc.start,r.loc.end):e&&e.loc}}class Kt{constructor(e,r){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=r}range(e,r){return new Kt(r,Ft.range(this,e))}}class te{constructor(e,r){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var n="KaTeX parse error: "+e,s,i,a=r&&r.loc;if(a&&a.start<=a.end){var o=a.lexer.input;s=a.start,i=a.end,s===o.length?n+=" at end of input: ":n+=" at position "+(s+1)+": ";var l=o.slice(s,i).replace(/[^]/g,"$&̲"),c;s>15?c="…"+o.slice(s-15,s):c=o.slice(0,s);var d;i+15":">","<":"<",'"':""","'":"'"},i6=/[&><"']/g;function a6(t){return String(t).replace(i6,e=>s6[e])}var F1=function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},o6=function(e){var r=F1(e);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},l6=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},c6=function(e){var r=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return r?r[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1])?null:r[1].toLowerCase():"_relative"},we={contains:e6,deflt:t6,escape:a6,hyphenate:n6,getBaseElem:F1,isCharacterBox:o6,protocolFromUrl:c6},is={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:t=>Math.max(0,t),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:t=>Math.max(0,t),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};function u6(t){if(t.default)return t.default;var e=t.type,r=Array.isArray(e)?e[0]:e;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class fo{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var r in is)if(is.hasOwnProperty(r)){var n=is[r];this[r]=e[r]!==void 0?n.processor?n.processor(e[r]):e[r]:u6(n)}}reportNonstrict(e,r,n){var s=this.strict;if(typeof s=="function"&&(s=s(e,r,n)),!(!s||s==="ignore")){if(s===!0||s==="error")throw new te("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+e+"]"),n);s==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+r+" ["+e+"]"))}}useStrictBehavior(e,r,n){var s=this.strict;if(typeof s=="function")try{s=s(e,r,n)}catch{s="error"}return!s||s==="ignore"?!1:s===!0||s==="error"?!0:s==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+r+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var r=we.protocolFromUrl(e.url);if(r==null)return!1;e.protocol=r}var n=typeof this.trust=="function"?this.trust(e):this.trust;return!!n}}class Pr{constructor(e,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=r,this.cramped=n}sup(){return hr[d6[this.id]]}sub(){return hr[h6[this.id]]}fracNum(){return hr[f6[this.id]]}fracDen(){return hr[p6[this.id]]}cramp(){return hr[m6[this.id]]}text(){return hr[g6[this.id]]}isTight(){return this.size>=2}}var po=0,Es=1,_n=2,Nr=3,m0=4,Vt=5,Fn=6,Nt=7,hr=[new Pr(po,0,!1),new Pr(Es,0,!0),new Pr(_n,1,!1),new Pr(Nr,1,!0),new Pr(m0,2,!1),new Pr(Vt,2,!0),new Pr(Fn,3,!1),new Pr(Nt,3,!0)],d6=[m0,Vt,m0,Vt,Fn,Nt,Fn,Nt],h6=[Vt,Vt,Vt,Vt,Nt,Nt,Nt,Nt],f6=[_n,Nr,m0,Vt,Fn,Nt,Fn,Nt],p6=[Nr,Nr,Vt,Vt,Nt,Nt,Nt,Nt],m6=[Es,Es,Nr,Nr,Vt,Vt,Nt,Nt],g6=[po,Es,_n,Nr,_n,Nr,_n,Nr],ke={DISPLAY:hr[po],TEXT:hr[_n],SCRIPT:hr[m0],SCRIPTSCRIPT:hr[Fn]},ua=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function v6(t){for(var e=0;e=s[0]&&t<=s[1])return r.name}return null}var as=[];ua.forEach(t=>t.blocks.forEach(e=>as.push(...e)));function $1(t){for(var e=0;e=as[e]&&t<=as[e+1])return!0;return!1}var Sn=80,b6=function(e,r){return"M95,"+(622+e+r)+` +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l`+e/2.075+" -"+e+` +c5.3,-9.3,12,-14,20,-14 +H400000v`+(40+e)+`H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M`+(834+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},y6=function(e,r){return"M263,"+(601+e+r)+`c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l`+e/2.084+" -"+e+` +c4.7,-7.3,11,-11,19,-11 +H40000v`+(40+e)+`H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},w6=function(e,r){return"M983 "+(10+e+r)+` +l`+e/3.13+" -"+e+` +c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},x6=function(e,r){return"M424,"+(2398+e+r)+` +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 +v`+(40+e)+`H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+r+` +h400000v`+(40+e)+"h-400000z"},k6=function(e,r){return"M473,"+(2713+e+r)+` +c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` +c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM`+(1001+e)+" "+r+"h400000v"+(40+e)+"H1017.7z"},S6=function(e){var r=e/2;return"M400000 "+e+" H0 L"+r+" 0 l65 45 L145 "+(e-80)+" H400000z"},T6=function(e,r,n){var s=n-54-r-e;return"M702 "+(e+r)+"H400000"+(40+e)+` +H742v`+s+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 `+r+"H400000v"+(40+e)+"H742z"},A6=function(e,r,n){r=1e3*r;var s="";switch(e){case"sqrtMain":s=b6(r,Sn);break;case"sqrtSize1":s=y6(r,Sn);break;case"sqrtSize2":s=w6(r,Sn);break;case"sqrtSize3":s=x6(r,Sn);break;case"sqrtSize4":s=k6(r,Sn);break;case"sqrtTall":s=T6(r,Sn,n)}return s},E6=function(e,r){switch(e){case"⎜":return"M291 0 H417 V"+r+" H291z M291 0 H417 V"+r+" H291z";case"∣":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z";case"∥":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z"+("M367 0 H410 V"+r+" H367z M367 0 H410 V"+r+" H367z");case"⎟":return"M457 0 H583 V"+r+" H457z M457 0 H583 V"+r+" H457z";case"⎢":return"M319 0 H403 V"+r+" H319z M319 0 H403 V"+r+" H319z";case"⎥":return"M263 0 H347 V"+r+" H263z M263 0 H347 V"+r+" H263z";case"⎪":return"M384 0 H504 V"+r+" H384z M384 0 H504 V"+r+" H384z";case"⏐":return"M312 0 H355 V"+r+" H312z M312 0 H355 V"+r+" H312z";case"‖":return"M257 0 H300 V"+r+" H257z M257 0 H300 V"+r+" H257z"+("M478 0 H521 V"+r+" H478z M478 0 H521 V"+r+" H478z");default:return""}},Kl={doubleleftarrow:`M262 157 +l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 + 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 + 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 +c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 + 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l +-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 + 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 +-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 +-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 + 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 +-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 +c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 + 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 + 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 + l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 + 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 +H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 + 435 0h399565z`,leftgroupunder:`M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 +-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 +-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 + 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 +-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 +-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 + 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 +-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 + 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z +M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z +M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 +-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 +c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z +M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 +c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 +c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 +-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 +60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 +-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 + 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 + 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 +-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 + 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l +-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 + 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 + 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 +-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 +-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 + 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 +-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 + 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z +m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 + 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 +-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 +-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 + 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 + 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 + 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 +-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:`M399960 241 V94 h40 V428 h-40 V281 H0 v-40z +M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 + 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 +c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 + 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 +-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 + 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 + 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, +-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 +s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 +121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 +s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 +-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 +13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 +-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 +-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, +1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},C6=function(e,r){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v`+r+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z +M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z +MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z +MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z +M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z +M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 +c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, +-36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, +949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 +c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, +-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 +l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, +-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, +63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 +c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` +c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 +c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 +c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 +c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 +l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};class T0{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return we.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),r=0;rr.toText();return this.children.map(e).join("")}}var fr={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},$0={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Yl={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function M6(t,e){fr[t]=e}function mo(t,e,r){if(!fr[e])throw new Error("Font metrics not found for font: "+e+".");var n=t.charCodeAt(0),s=fr[e][n];if(!s&&t[0]in Yl&&(n=Yl[t[0]].charCodeAt(0),s=fr[e][n]),!s&&r==="text"&&$1(n)&&(s=fr[e][77]),s)return{depth:s[0],height:s[1],italic:s[2],skew:s[3],width:s[4]}}var ki={};function N6(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!ki[e]){var r=ki[e]={cssEmPerMu:$0.quad[e]/18};for(var n in $0)$0.hasOwnProperty(n)&&(r[n]=$0[n][e])}return ki[e]}var D6=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Xl=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Jl=function(e,r){return r.size<2?e:D6[e-1][r.size-1]};class Tr{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||Tr.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=Xl[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);return new Tr(r)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:Jl(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:Xl[e-1]})}havingBaseStyle(e){e=e||this.style.text();var r=Jl(Tr.BASESIZE,e);return this.size===r&&this.textSize===Tr.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Tr.BASESIZE?["sizing","reset-size"+this.size,"size"+Tr.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=N6(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Tr.BASESIZE=6;var da={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},R6={ex:!0,em:!0,mu:!0},B1=function(e){return typeof e!="string"&&(e=e.unit),e in da||e in R6||e==="ex"},st=function(e,r){var n;if(e.unit in da)n=da[e.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(e.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var s;if(r.style.isTight()?s=r.havingStyle(r.style.text()):s=r,e.unit==="ex")n=s.fontMetrics().xHeight;else if(e.unit==="em")n=s.fontMetrics().quad;else throw new te("Invalid unit: '"+e.unit+"'");s!==r&&(n*=s.sizeMultiplier/r.sizeMultiplier)}return Math.min(e.number*n,r.maxSize)},ae=function(e){return+e.toFixed(4)+"em"},Yr=function(e){return e.filter(r=>r).join(" ")},P1=function(e,r,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var s=r.getColor();s&&(this.style.color=s)}},H1=function(e){var r=document.createElement(e);r.className=Yr(this.classes);for(var n in this.style)this.style.hasOwnProperty(n)&&(r.style[n]=this.style[n]);for(var s in this.attributes)this.attributes.hasOwnProperty(s)&&r.setAttribute(s,this.attributes[s]);for(var i=0;i/=\x00-\x1f]/,q1=function(e){var r="<"+e;this.classes.length&&(r+=' class="'+we.escape(Yr(this.classes))+'"');var n="";for(var s in this.style)this.style.hasOwnProperty(s)&&(n+=we.hyphenate(s)+":"+this.style[s]+";");n&&(r+=' style="'+we.escape(n)+'"');for(var i in this.attributes)if(this.attributes.hasOwnProperty(i)){if(I6.test(i))throw new te("Invalid attribute name '"+i+"'");r+=" "+i+'="'+we.escape(this.attributes[i])+'"'}r+=">";for(var a=0;a",r};class A0{constructor(e,r,n,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,P1.call(this,e,n,s),this.children=r||[]}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return we.contains(this.classes,e)}toNode(){return H1.call(this,"span")}toMarkup(){return q1.call(this,"span")}}class go{constructor(e,r,n,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,P1.call(this,r,s),this.children=n||[],this.setAttribute("href",e)}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return we.contains(this.classes,e)}toNode(){return H1.call(this,"a")}toMarkup(){return q1.call(this,"a")}}class _6{constructor(e,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=e,this.classes=["mord"],this.style=n}hasClass(e){return we.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var r in this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);return e}toMarkup(){var e=''+we.escape(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=ae(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=Yr(this.classes));for(var n in this.style)this.style.hasOwnProperty(n)&&(r=r||document.createElement("span"),r.style[n]=this.style[n]);return r?(r.appendChild(e),r):e}toMarkup(){var e=!1,r="0&&(n+="margin-right:"+this.italic+"em;");for(var s in this.style)this.style.hasOwnProperty(s)&&(n+=we.hyphenate(s)+":"+this.style[s]+";");n&&(e=!0,r+=' style="'+we.escape(n)+'"');var i=we.escape(this.text);return e?(r+=">",r+=i,r+="",r):i}}class _r{constructor(e,r){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=r||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"svg");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);for(var s=0;s':''}}class ha{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"line");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var e=" but got "+String(t)+".")}var z6={bin:1,close:1,inner:1,open:1,punct:1,rel:1},F6={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},Qe={math:{},text:{}};function u(t,e,r,n,s,i){Qe[t][s]={font:e,group:r,replace:n},i&&n&&(Qe[t][n]=Qe[t][s])}var h="math",K="text",m="main",A="ams",rt="accent-token",ce="bin",Dt="close",Hn="inner",xe="mathord",ht="op-token",jt="open",Zs="punct",C="rel",Fr="spacing",R="textord";u(h,m,C,"≡","\\equiv",!0);u(h,m,C,"≺","\\prec",!0);u(h,m,C,"≻","\\succ",!0);u(h,m,C,"∼","\\sim",!0);u(h,m,C,"⊥","\\perp");u(h,m,C,"⪯","\\preceq",!0);u(h,m,C,"⪰","\\succeq",!0);u(h,m,C,"≃","\\simeq",!0);u(h,m,C,"∣","\\mid",!0);u(h,m,C,"≪","\\ll",!0);u(h,m,C,"≫","\\gg",!0);u(h,m,C,"≍","\\asymp",!0);u(h,m,C,"∥","\\parallel");u(h,m,C,"⋈","\\bowtie",!0);u(h,m,C,"⌣","\\smile",!0);u(h,m,C,"⊑","\\sqsubseteq",!0);u(h,m,C,"⊒","\\sqsupseteq",!0);u(h,m,C,"≐","\\doteq",!0);u(h,m,C,"⌢","\\frown",!0);u(h,m,C,"∋","\\ni",!0);u(h,m,C,"∝","\\propto",!0);u(h,m,C,"⊢","\\vdash",!0);u(h,m,C,"⊣","\\dashv",!0);u(h,m,C,"∋","\\owns");u(h,m,Zs,".","\\ldotp");u(h,m,Zs,"⋅","\\cdotp");u(h,m,R,"#","\\#");u(K,m,R,"#","\\#");u(h,m,R,"&","\\&");u(K,m,R,"&","\\&");u(h,m,R,"ℵ","\\aleph",!0);u(h,m,R,"∀","\\forall",!0);u(h,m,R,"ℏ","\\hbar",!0);u(h,m,R,"∃","\\exists",!0);u(h,m,R,"∇","\\nabla",!0);u(h,m,R,"♭","\\flat",!0);u(h,m,R,"ℓ","\\ell",!0);u(h,m,R,"♮","\\natural",!0);u(h,m,R,"♣","\\clubsuit",!0);u(h,m,R,"℘","\\wp",!0);u(h,m,R,"♯","\\sharp",!0);u(h,m,R,"♢","\\diamondsuit",!0);u(h,m,R,"ℜ","\\Re",!0);u(h,m,R,"♡","\\heartsuit",!0);u(h,m,R,"ℑ","\\Im",!0);u(h,m,R,"♠","\\spadesuit",!0);u(h,m,R,"§","\\S",!0);u(K,m,R,"§","\\S");u(h,m,R,"¶","\\P",!0);u(K,m,R,"¶","\\P");u(h,m,R,"†","\\dag");u(K,m,R,"†","\\dag");u(K,m,R,"†","\\textdagger");u(h,m,R,"‡","\\ddag");u(K,m,R,"‡","\\ddag");u(K,m,R,"‡","\\textdaggerdbl");u(h,m,Dt,"⎱","\\rmoustache",!0);u(h,m,jt,"⎰","\\lmoustache",!0);u(h,m,Dt,"⟯","\\rgroup",!0);u(h,m,jt,"⟮","\\lgroup",!0);u(h,m,ce,"∓","\\mp",!0);u(h,m,ce,"⊖","\\ominus",!0);u(h,m,ce,"⊎","\\uplus",!0);u(h,m,ce,"⊓","\\sqcap",!0);u(h,m,ce,"∗","\\ast");u(h,m,ce,"⊔","\\sqcup",!0);u(h,m,ce,"◯","\\bigcirc",!0);u(h,m,ce,"∙","\\bullet",!0);u(h,m,ce,"‡","\\ddagger");u(h,m,ce,"≀","\\wr",!0);u(h,m,ce,"⨿","\\amalg");u(h,m,ce,"&","\\And");u(h,m,C,"⟵","\\longleftarrow",!0);u(h,m,C,"⇐","\\Leftarrow",!0);u(h,m,C,"⟸","\\Longleftarrow",!0);u(h,m,C,"⟶","\\longrightarrow",!0);u(h,m,C,"⇒","\\Rightarrow",!0);u(h,m,C,"⟹","\\Longrightarrow",!0);u(h,m,C,"↔","\\leftrightarrow",!0);u(h,m,C,"⟷","\\longleftrightarrow",!0);u(h,m,C,"⇔","\\Leftrightarrow",!0);u(h,m,C,"⟺","\\Longleftrightarrow",!0);u(h,m,C,"↦","\\mapsto",!0);u(h,m,C,"⟼","\\longmapsto",!0);u(h,m,C,"↗","\\nearrow",!0);u(h,m,C,"↩","\\hookleftarrow",!0);u(h,m,C,"↪","\\hookrightarrow",!0);u(h,m,C,"↘","\\searrow",!0);u(h,m,C,"↼","\\leftharpoonup",!0);u(h,m,C,"⇀","\\rightharpoonup",!0);u(h,m,C,"↙","\\swarrow",!0);u(h,m,C,"↽","\\leftharpoondown",!0);u(h,m,C,"⇁","\\rightharpoondown",!0);u(h,m,C,"↖","\\nwarrow",!0);u(h,m,C,"⇌","\\rightleftharpoons",!0);u(h,A,C,"≮","\\nless",!0);u(h,A,C,"","\\@nleqslant");u(h,A,C,"","\\@nleqq");u(h,A,C,"⪇","\\lneq",!0);u(h,A,C,"≨","\\lneqq",!0);u(h,A,C,"","\\@lvertneqq");u(h,A,C,"⋦","\\lnsim",!0);u(h,A,C,"⪉","\\lnapprox",!0);u(h,A,C,"⊀","\\nprec",!0);u(h,A,C,"⋠","\\npreceq",!0);u(h,A,C,"⋨","\\precnsim",!0);u(h,A,C,"⪹","\\precnapprox",!0);u(h,A,C,"≁","\\nsim",!0);u(h,A,C,"","\\@nshortmid");u(h,A,C,"∤","\\nmid",!0);u(h,A,C,"⊬","\\nvdash",!0);u(h,A,C,"⊭","\\nvDash",!0);u(h,A,C,"⋪","\\ntriangleleft");u(h,A,C,"⋬","\\ntrianglelefteq",!0);u(h,A,C,"⊊","\\subsetneq",!0);u(h,A,C,"","\\@varsubsetneq");u(h,A,C,"⫋","\\subsetneqq",!0);u(h,A,C,"","\\@varsubsetneqq");u(h,A,C,"≯","\\ngtr",!0);u(h,A,C,"","\\@ngeqslant");u(h,A,C,"","\\@ngeqq");u(h,A,C,"⪈","\\gneq",!0);u(h,A,C,"≩","\\gneqq",!0);u(h,A,C,"","\\@gvertneqq");u(h,A,C,"⋧","\\gnsim",!0);u(h,A,C,"⪊","\\gnapprox",!0);u(h,A,C,"⊁","\\nsucc",!0);u(h,A,C,"⋡","\\nsucceq",!0);u(h,A,C,"⋩","\\succnsim",!0);u(h,A,C,"⪺","\\succnapprox",!0);u(h,A,C,"≆","\\ncong",!0);u(h,A,C,"","\\@nshortparallel");u(h,A,C,"∦","\\nparallel",!0);u(h,A,C,"⊯","\\nVDash",!0);u(h,A,C,"⋫","\\ntriangleright");u(h,A,C,"⋭","\\ntrianglerighteq",!0);u(h,A,C,"","\\@nsupseteqq");u(h,A,C,"⊋","\\supsetneq",!0);u(h,A,C,"","\\@varsupsetneq");u(h,A,C,"⫌","\\supsetneqq",!0);u(h,A,C,"","\\@varsupsetneqq");u(h,A,C,"⊮","\\nVdash",!0);u(h,A,C,"⪵","\\precneqq",!0);u(h,A,C,"⪶","\\succneqq",!0);u(h,A,C,"","\\@nsubseteqq");u(h,A,ce,"⊴","\\unlhd");u(h,A,ce,"⊵","\\unrhd");u(h,A,C,"↚","\\nleftarrow",!0);u(h,A,C,"↛","\\nrightarrow",!0);u(h,A,C,"⇍","\\nLeftarrow",!0);u(h,A,C,"⇏","\\nRightarrow",!0);u(h,A,C,"↮","\\nleftrightarrow",!0);u(h,A,C,"⇎","\\nLeftrightarrow",!0);u(h,A,C,"△","\\vartriangle");u(h,A,R,"ℏ","\\hslash");u(h,A,R,"▽","\\triangledown");u(h,A,R,"◊","\\lozenge");u(h,A,R,"Ⓢ","\\circledS");u(h,A,R,"®","\\circledR");u(K,A,R,"®","\\circledR");u(h,A,R,"∡","\\measuredangle",!0);u(h,A,R,"∄","\\nexists");u(h,A,R,"℧","\\mho");u(h,A,R,"Ⅎ","\\Finv",!0);u(h,A,R,"⅁","\\Game",!0);u(h,A,R,"‵","\\backprime");u(h,A,R,"▲","\\blacktriangle");u(h,A,R,"▼","\\blacktriangledown");u(h,A,R,"■","\\blacksquare");u(h,A,R,"⧫","\\blacklozenge");u(h,A,R,"★","\\bigstar");u(h,A,R,"∢","\\sphericalangle",!0);u(h,A,R,"∁","\\complement",!0);u(h,A,R,"ð","\\eth",!0);u(K,m,R,"ð","ð");u(h,A,R,"╱","\\diagup");u(h,A,R,"╲","\\diagdown");u(h,A,R,"□","\\square");u(h,A,R,"□","\\Box");u(h,A,R,"◊","\\Diamond");u(h,A,R,"¥","\\yen",!0);u(K,A,R,"¥","\\yen",!0);u(h,A,R,"✓","\\checkmark",!0);u(K,A,R,"✓","\\checkmark");u(h,A,R,"ℶ","\\beth",!0);u(h,A,R,"ℸ","\\daleth",!0);u(h,A,R,"ℷ","\\gimel",!0);u(h,A,R,"ϝ","\\digamma",!0);u(h,A,R,"ϰ","\\varkappa");u(h,A,jt,"┌","\\@ulcorner",!0);u(h,A,Dt,"┐","\\@urcorner",!0);u(h,A,jt,"└","\\@llcorner",!0);u(h,A,Dt,"┘","\\@lrcorner",!0);u(h,A,C,"≦","\\leqq",!0);u(h,A,C,"⩽","\\leqslant",!0);u(h,A,C,"⪕","\\eqslantless",!0);u(h,A,C,"≲","\\lesssim",!0);u(h,A,C,"⪅","\\lessapprox",!0);u(h,A,C,"≊","\\approxeq",!0);u(h,A,ce,"⋖","\\lessdot");u(h,A,C,"⋘","\\lll",!0);u(h,A,C,"≶","\\lessgtr",!0);u(h,A,C,"⋚","\\lesseqgtr",!0);u(h,A,C,"⪋","\\lesseqqgtr",!0);u(h,A,C,"≑","\\doteqdot");u(h,A,C,"≓","\\risingdotseq",!0);u(h,A,C,"≒","\\fallingdotseq",!0);u(h,A,C,"∽","\\backsim",!0);u(h,A,C,"⋍","\\backsimeq",!0);u(h,A,C,"⫅","\\subseteqq",!0);u(h,A,C,"⋐","\\Subset",!0);u(h,A,C,"⊏","\\sqsubset",!0);u(h,A,C,"≼","\\preccurlyeq",!0);u(h,A,C,"⋞","\\curlyeqprec",!0);u(h,A,C,"≾","\\precsim",!0);u(h,A,C,"⪷","\\precapprox",!0);u(h,A,C,"⊲","\\vartriangleleft");u(h,A,C,"⊴","\\trianglelefteq");u(h,A,C,"⊨","\\vDash",!0);u(h,A,C,"⊪","\\Vvdash",!0);u(h,A,C,"⌣","\\smallsmile");u(h,A,C,"⌢","\\smallfrown");u(h,A,C,"≏","\\bumpeq",!0);u(h,A,C,"≎","\\Bumpeq",!0);u(h,A,C,"≧","\\geqq",!0);u(h,A,C,"⩾","\\geqslant",!0);u(h,A,C,"⪖","\\eqslantgtr",!0);u(h,A,C,"≳","\\gtrsim",!0);u(h,A,C,"⪆","\\gtrapprox",!0);u(h,A,ce,"⋗","\\gtrdot");u(h,A,C,"⋙","\\ggg",!0);u(h,A,C,"≷","\\gtrless",!0);u(h,A,C,"⋛","\\gtreqless",!0);u(h,A,C,"⪌","\\gtreqqless",!0);u(h,A,C,"≖","\\eqcirc",!0);u(h,A,C,"≗","\\circeq",!0);u(h,A,C,"≜","\\triangleq",!0);u(h,A,C,"∼","\\thicksim");u(h,A,C,"≈","\\thickapprox");u(h,A,C,"⫆","\\supseteqq",!0);u(h,A,C,"⋑","\\Supset",!0);u(h,A,C,"⊐","\\sqsupset",!0);u(h,A,C,"≽","\\succcurlyeq",!0);u(h,A,C,"⋟","\\curlyeqsucc",!0);u(h,A,C,"≿","\\succsim",!0);u(h,A,C,"⪸","\\succapprox",!0);u(h,A,C,"⊳","\\vartriangleright");u(h,A,C,"⊵","\\trianglerighteq");u(h,A,C,"⊩","\\Vdash",!0);u(h,A,C,"∣","\\shortmid");u(h,A,C,"∥","\\shortparallel");u(h,A,C,"≬","\\between",!0);u(h,A,C,"⋔","\\pitchfork",!0);u(h,A,C,"∝","\\varpropto");u(h,A,C,"◀","\\blacktriangleleft");u(h,A,C,"∴","\\therefore",!0);u(h,A,C,"∍","\\backepsilon");u(h,A,C,"▶","\\blacktriangleright");u(h,A,C,"∵","\\because",!0);u(h,A,C,"⋘","\\llless");u(h,A,C,"⋙","\\gggtr");u(h,A,ce,"⊲","\\lhd");u(h,A,ce,"⊳","\\rhd");u(h,A,C,"≂","\\eqsim",!0);u(h,m,C,"⋈","\\Join");u(h,A,C,"≑","\\Doteq",!0);u(h,A,ce,"∔","\\dotplus",!0);u(h,A,ce,"∖","\\smallsetminus");u(h,A,ce,"⋒","\\Cap",!0);u(h,A,ce,"⋓","\\Cup",!0);u(h,A,ce,"⩞","\\doublebarwedge",!0);u(h,A,ce,"⊟","\\boxminus",!0);u(h,A,ce,"⊞","\\boxplus",!0);u(h,A,ce,"⋇","\\divideontimes",!0);u(h,A,ce,"⋉","\\ltimes",!0);u(h,A,ce,"⋊","\\rtimes",!0);u(h,A,ce,"⋋","\\leftthreetimes",!0);u(h,A,ce,"⋌","\\rightthreetimes",!0);u(h,A,ce,"⋏","\\curlywedge",!0);u(h,A,ce,"⋎","\\curlyvee",!0);u(h,A,ce,"⊝","\\circleddash",!0);u(h,A,ce,"⊛","\\circledast",!0);u(h,A,ce,"⋅","\\centerdot");u(h,A,ce,"⊺","\\intercal",!0);u(h,A,ce,"⋒","\\doublecap");u(h,A,ce,"⋓","\\doublecup");u(h,A,ce,"⊠","\\boxtimes",!0);u(h,A,C,"⇢","\\dashrightarrow",!0);u(h,A,C,"⇠","\\dashleftarrow",!0);u(h,A,C,"⇇","\\leftleftarrows",!0);u(h,A,C,"⇆","\\leftrightarrows",!0);u(h,A,C,"⇚","\\Lleftarrow",!0);u(h,A,C,"↞","\\twoheadleftarrow",!0);u(h,A,C,"↢","\\leftarrowtail",!0);u(h,A,C,"↫","\\looparrowleft",!0);u(h,A,C,"⇋","\\leftrightharpoons",!0);u(h,A,C,"↶","\\curvearrowleft",!0);u(h,A,C,"↺","\\circlearrowleft",!0);u(h,A,C,"↰","\\Lsh",!0);u(h,A,C,"⇈","\\upuparrows",!0);u(h,A,C,"↿","\\upharpoonleft",!0);u(h,A,C,"⇃","\\downharpoonleft",!0);u(h,m,C,"⊶","\\origof",!0);u(h,m,C,"⊷","\\imageof",!0);u(h,A,C,"⊸","\\multimap",!0);u(h,A,C,"↭","\\leftrightsquigarrow",!0);u(h,A,C,"⇉","\\rightrightarrows",!0);u(h,A,C,"⇄","\\rightleftarrows",!0);u(h,A,C,"↠","\\twoheadrightarrow",!0);u(h,A,C,"↣","\\rightarrowtail",!0);u(h,A,C,"↬","\\looparrowright",!0);u(h,A,C,"↷","\\curvearrowright",!0);u(h,A,C,"↻","\\circlearrowright",!0);u(h,A,C,"↱","\\Rsh",!0);u(h,A,C,"⇊","\\downdownarrows",!0);u(h,A,C,"↾","\\upharpoonright",!0);u(h,A,C,"⇂","\\downharpoonright",!0);u(h,A,C,"⇝","\\rightsquigarrow",!0);u(h,A,C,"⇝","\\leadsto");u(h,A,C,"⇛","\\Rrightarrow",!0);u(h,A,C,"↾","\\restriction");u(h,m,R,"‘","`");u(h,m,R,"$","\\$");u(K,m,R,"$","\\$");u(K,m,R,"$","\\textdollar");u(h,m,R,"%","\\%");u(K,m,R,"%","\\%");u(h,m,R,"_","\\_");u(K,m,R,"_","\\_");u(K,m,R,"_","\\textunderscore");u(h,m,R,"∠","\\angle",!0);u(h,m,R,"∞","\\infty",!0);u(h,m,R,"′","\\prime");u(h,m,R,"△","\\triangle");u(h,m,R,"Γ","\\Gamma",!0);u(h,m,R,"Δ","\\Delta",!0);u(h,m,R,"Θ","\\Theta",!0);u(h,m,R,"Λ","\\Lambda",!0);u(h,m,R,"Ξ","\\Xi",!0);u(h,m,R,"Π","\\Pi",!0);u(h,m,R,"Σ","\\Sigma",!0);u(h,m,R,"Υ","\\Upsilon",!0);u(h,m,R,"Φ","\\Phi",!0);u(h,m,R,"Ψ","\\Psi",!0);u(h,m,R,"Ω","\\Omega",!0);u(h,m,R,"A","Α");u(h,m,R,"B","Β");u(h,m,R,"E","Ε");u(h,m,R,"Z","Ζ");u(h,m,R,"H","Η");u(h,m,R,"I","Ι");u(h,m,R,"K","Κ");u(h,m,R,"M","Μ");u(h,m,R,"N","Ν");u(h,m,R,"O","Ο");u(h,m,R,"P","Ρ");u(h,m,R,"T","Τ");u(h,m,R,"X","Χ");u(h,m,R,"¬","\\neg",!0);u(h,m,R,"¬","\\lnot");u(h,m,R,"⊤","\\top");u(h,m,R,"⊥","\\bot");u(h,m,R,"∅","\\emptyset");u(h,A,R,"∅","\\varnothing");u(h,m,xe,"α","\\alpha",!0);u(h,m,xe,"β","\\beta",!0);u(h,m,xe,"γ","\\gamma",!0);u(h,m,xe,"δ","\\delta",!0);u(h,m,xe,"ϵ","\\epsilon",!0);u(h,m,xe,"ζ","\\zeta",!0);u(h,m,xe,"η","\\eta",!0);u(h,m,xe,"θ","\\theta",!0);u(h,m,xe,"ι","\\iota",!0);u(h,m,xe,"κ","\\kappa",!0);u(h,m,xe,"λ","\\lambda",!0);u(h,m,xe,"μ","\\mu",!0);u(h,m,xe,"ν","\\nu",!0);u(h,m,xe,"ξ","\\xi",!0);u(h,m,xe,"ο","\\omicron",!0);u(h,m,xe,"π","\\pi",!0);u(h,m,xe,"ρ","\\rho",!0);u(h,m,xe,"σ","\\sigma",!0);u(h,m,xe,"τ","\\tau",!0);u(h,m,xe,"υ","\\upsilon",!0);u(h,m,xe,"ϕ","\\phi",!0);u(h,m,xe,"χ","\\chi",!0);u(h,m,xe,"ψ","\\psi",!0);u(h,m,xe,"ω","\\omega",!0);u(h,m,xe,"ε","\\varepsilon",!0);u(h,m,xe,"ϑ","\\vartheta",!0);u(h,m,xe,"ϖ","\\varpi",!0);u(h,m,xe,"ϱ","\\varrho",!0);u(h,m,xe,"ς","\\varsigma",!0);u(h,m,xe,"φ","\\varphi",!0);u(h,m,ce,"∗","*",!0);u(h,m,ce,"+","+");u(h,m,ce,"−","-",!0);u(h,m,ce,"⋅","\\cdot",!0);u(h,m,ce,"∘","\\circ",!0);u(h,m,ce,"÷","\\div",!0);u(h,m,ce,"±","\\pm",!0);u(h,m,ce,"×","\\times",!0);u(h,m,ce,"∩","\\cap",!0);u(h,m,ce,"∪","\\cup",!0);u(h,m,ce,"∖","\\setminus",!0);u(h,m,ce,"∧","\\land");u(h,m,ce,"∨","\\lor");u(h,m,ce,"∧","\\wedge",!0);u(h,m,ce,"∨","\\vee",!0);u(h,m,R,"√","\\surd");u(h,m,jt,"⟨","\\langle",!0);u(h,m,jt,"∣","\\lvert");u(h,m,jt,"∥","\\lVert");u(h,m,Dt,"?","?");u(h,m,Dt,"!","!");u(h,m,Dt,"⟩","\\rangle",!0);u(h,m,Dt,"∣","\\rvert");u(h,m,Dt,"∥","\\rVert");u(h,m,C,"=","=");u(h,m,C,":",":");u(h,m,C,"≈","\\approx",!0);u(h,m,C,"≅","\\cong",!0);u(h,m,C,"≥","\\ge");u(h,m,C,"≥","\\geq",!0);u(h,m,C,"←","\\gets");u(h,m,C,">","\\gt",!0);u(h,m,C,"∈","\\in",!0);u(h,m,C,"","\\@not");u(h,m,C,"⊂","\\subset",!0);u(h,m,C,"⊃","\\supset",!0);u(h,m,C,"⊆","\\subseteq",!0);u(h,m,C,"⊇","\\supseteq",!0);u(h,A,C,"⊈","\\nsubseteq",!0);u(h,A,C,"⊉","\\nsupseteq",!0);u(h,m,C,"⊨","\\models");u(h,m,C,"←","\\leftarrow",!0);u(h,m,C,"≤","\\le");u(h,m,C,"≤","\\leq",!0);u(h,m,C,"<","\\lt",!0);u(h,m,C,"→","\\rightarrow",!0);u(h,m,C,"→","\\to");u(h,A,C,"≱","\\ngeq",!0);u(h,A,C,"≰","\\nleq",!0);u(h,m,Fr," ","\\ ");u(h,m,Fr," ","\\space");u(h,m,Fr," ","\\nobreakspace");u(K,m,Fr," ","\\ ");u(K,m,Fr," "," ");u(K,m,Fr," ","\\space");u(K,m,Fr," ","\\nobreakspace");u(h,m,Fr,null,"\\nobreak");u(h,m,Fr,null,"\\allowbreak");u(h,m,Zs,",",",");u(h,m,Zs,";",";");u(h,A,ce,"⊼","\\barwedge",!0);u(h,A,ce,"⊻","\\veebar",!0);u(h,m,ce,"⊙","\\odot",!0);u(h,m,ce,"⊕","\\oplus",!0);u(h,m,ce,"⊗","\\otimes",!0);u(h,m,R,"∂","\\partial",!0);u(h,m,ce,"⊘","\\oslash",!0);u(h,A,ce,"⊚","\\circledcirc",!0);u(h,A,ce,"⊡","\\boxdot",!0);u(h,m,ce,"△","\\bigtriangleup");u(h,m,ce,"▽","\\bigtriangledown");u(h,m,ce,"†","\\dagger");u(h,m,ce,"⋄","\\diamond");u(h,m,ce,"⋆","\\star");u(h,m,ce,"◃","\\triangleleft");u(h,m,ce,"▹","\\triangleright");u(h,m,jt,"{","\\{");u(K,m,R,"{","\\{");u(K,m,R,"{","\\textbraceleft");u(h,m,Dt,"}","\\}");u(K,m,R,"}","\\}");u(K,m,R,"}","\\textbraceright");u(h,m,jt,"{","\\lbrace");u(h,m,Dt,"}","\\rbrace");u(h,m,jt,"[","\\lbrack",!0);u(K,m,R,"[","\\lbrack",!0);u(h,m,Dt,"]","\\rbrack",!0);u(K,m,R,"]","\\rbrack",!0);u(h,m,jt,"(","\\lparen",!0);u(h,m,Dt,")","\\rparen",!0);u(K,m,R,"<","\\textless",!0);u(K,m,R,">","\\textgreater",!0);u(h,m,jt,"⌊","\\lfloor",!0);u(h,m,Dt,"⌋","\\rfloor",!0);u(h,m,jt,"⌈","\\lceil",!0);u(h,m,Dt,"⌉","\\rceil",!0);u(h,m,R,"\\","\\backslash");u(h,m,R,"∣","|");u(h,m,R,"∣","\\vert");u(K,m,R,"|","\\textbar",!0);u(h,m,R,"∥","\\|");u(h,m,R,"∥","\\Vert");u(K,m,R,"∥","\\textbardbl");u(K,m,R,"~","\\textasciitilde");u(K,m,R,"\\","\\textbackslash");u(K,m,R,"^","\\textasciicircum");u(h,m,C,"↑","\\uparrow",!0);u(h,m,C,"⇑","\\Uparrow",!0);u(h,m,C,"↓","\\downarrow",!0);u(h,m,C,"⇓","\\Downarrow",!0);u(h,m,C,"↕","\\updownarrow",!0);u(h,m,C,"⇕","\\Updownarrow",!0);u(h,m,ht,"∐","\\coprod");u(h,m,ht,"⋁","\\bigvee");u(h,m,ht,"⋀","\\bigwedge");u(h,m,ht,"⨄","\\biguplus");u(h,m,ht,"⋂","\\bigcap");u(h,m,ht,"⋃","\\bigcup");u(h,m,ht,"∫","\\int");u(h,m,ht,"∫","\\intop");u(h,m,ht,"∬","\\iint");u(h,m,ht,"∭","\\iiint");u(h,m,ht,"∏","\\prod");u(h,m,ht,"∑","\\sum");u(h,m,ht,"⨂","\\bigotimes");u(h,m,ht,"⨁","\\bigoplus");u(h,m,ht,"⨀","\\bigodot");u(h,m,ht,"∮","\\oint");u(h,m,ht,"∯","\\oiint");u(h,m,ht,"∰","\\oiiint");u(h,m,ht,"⨆","\\bigsqcup");u(h,m,ht,"∫","\\smallint");u(K,m,Hn,"…","\\textellipsis");u(h,m,Hn,"…","\\mathellipsis");u(K,m,Hn,"…","\\ldots",!0);u(h,m,Hn,"…","\\ldots",!0);u(h,m,Hn,"⋯","\\@cdots",!0);u(h,m,Hn,"⋱","\\ddots",!0);u(h,m,R,"⋮","\\varvdots");u(K,m,R,"⋮","\\varvdots");u(h,m,rt,"ˊ","\\acute");u(h,m,rt,"ˋ","\\grave");u(h,m,rt,"¨","\\ddot");u(h,m,rt,"~","\\tilde");u(h,m,rt,"ˉ","\\bar");u(h,m,rt,"˘","\\breve");u(h,m,rt,"ˇ","\\check");u(h,m,rt,"^","\\hat");u(h,m,rt,"⃗","\\vec");u(h,m,rt,"˙","\\dot");u(h,m,rt,"˚","\\mathring");u(h,m,xe,"","\\@imath");u(h,m,xe,"","\\@jmath");u(h,m,R,"ı","ı");u(h,m,R,"ȷ","ȷ");u(K,m,R,"ı","\\i",!0);u(K,m,R,"ȷ","\\j",!0);u(K,m,R,"ß","\\ss",!0);u(K,m,R,"æ","\\ae",!0);u(K,m,R,"œ","\\oe",!0);u(K,m,R,"ø","\\o",!0);u(K,m,R,"Æ","\\AE",!0);u(K,m,R,"Œ","\\OE",!0);u(K,m,R,"Ø","\\O",!0);u(K,m,rt,"ˊ","\\'");u(K,m,rt,"ˋ","\\`");u(K,m,rt,"ˆ","\\^");u(K,m,rt,"˜","\\~");u(K,m,rt,"ˉ","\\=");u(K,m,rt,"˘","\\u");u(K,m,rt,"˙","\\.");u(K,m,rt,"¸","\\c");u(K,m,rt,"˚","\\r");u(K,m,rt,"ˇ","\\v");u(K,m,rt,"¨",'\\"');u(K,m,rt,"˝","\\H");u(K,m,rt,"◯","\\textcircled");var j1={"--":!0,"---":!0,"``":!0,"''":!0};u(K,m,R,"–","--",!0);u(K,m,R,"–","\\textendash");u(K,m,R,"—","---",!0);u(K,m,R,"—","\\textemdash");u(K,m,R,"‘","`",!0);u(K,m,R,"‘","\\textquoteleft");u(K,m,R,"’","'",!0);u(K,m,R,"’","\\textquoteright");u(K,m,R,"“","``",!0);u(K,m,R,"“","\\textquotedblleft");u(K,m,R,"”","''",!0);u(K,m,R,"”","\\textquotedblright");u(h,m,R,"°","\\degree",!0);u(K,m,R,"°","\\degree");u(K,m,R,"°","\\textdegree",!0);u(h,m,R,"£","\\pounds");u(h,m,R,"£","\\mathsterling",!0);u(K,m,R,"£","\\pounds");u(K,m,R,"£","\\textsterling",!0);u(h,A,R,"✠","\\maltese");u(K,A,R,"✠","\\maltese");var Ql='0123456789/@."';for(var Si=0;Si0)return Qt(i,c,s,r,a.concat(d));if(l){var f,p;if(l==="boldsymbol"){var b=P6(i,s,r,a,n);f=b.fontName,p=[b.fontClass]}else o?(f=W1[l].fontName,p=[l]):(f=q0(l,r.fontWeight,r.fontShape),p=[l,r.fontWeight,r.fontShape]);if(Qs(i,f,s).metrics)return Qt(i,f,s,r,a.concat(p));if(j1.hasOwnProperty(i)&&f.slice(0,10)==="Typewriter"){for(var v=[],x=0;x{if(Yr(t.classes)!==Yr(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var r=t.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n in t.style)if(t.style.hasOwnProperty(n)&&t.style[n]!==e.style[n])return!1;for(var s in e.style)if(e.style.hasOwnProperty(s)&&t.style[s]!==e.style[s])return!1;return!0},j6=t=>{for(var e=0;er&&(r=a.height),a.depth>n&&(n=a.depth),a.maxFontSize>s&&(s=a.maxFontSize)}e.height=r,e.depth=n,e.maxFontSize=s},_t=function(e,r,n,s){var i=new A0(e,r,n,s);return vo(i),i},U1=(t,e,r,n)=>new A0(t,e,r,n),U6=function(e,r,n){var s=_t([e],[],r);return s.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),s.style.borderBottomWidth=ae(s.height),s.maxFontSize=1,s},V6=function(e,r,n,s){var i=new go(e,r,n,s);return vo(i),i},V1=function(e){var r=new T0(e);return vo(r),r},W6=function(e,r){return e instanceof T0?_t([],[e],r):e},G6=function(e){if(e.positionType==="individualShift"){for(var r=e.children,n=[r[0]],s=-r[0].shift-r[0].elem.depth,i=s,a=1;a{var r=_t(["mspace"],[],e),n=st(t,e);return r.style.marginRight=ae(n),r},q0=function(e,r,n){var s="";switch(e){case"amsrm":s="AMS";break;case"textrm":s="Main";break;case"textsf":s="SansSerif";break;case"texttt":s="Typewriter";break;default:s=e}var i;return r==="textbf"&&n==="textit"?i="BoldItalic":r==="textbf"?i="Bold":r==="textit"?i="Italic":i="Regular",s+"-"+i},W1={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},G1={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},X6=function(e,r){var[n,s,i]=G1[e],a=new Xr(n),o=new _r([a],{width:ae(s),height:ae(i),style:"width:"+ae(s),viewBox:"0 0 "+1e3*s+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=U1(["overlay"],[o],r);return l.height=i,l.style.height=ae(i),l.style.width=ae(s),l},L={fontMap:W1,makeSymbol:Qt,mathsym:B6,makeSpan:_t,makeSvgSpan:U1,makeLineSpan:U6,makeAnchor:V6,makeFragment:V1,wrapFragment:W6,makeVList:K6,makeOrd:H6,makeGlue:Y6,staticSvg:X6,svgData:G1,tryCombineChars:j6},nt={number:3,unit:"mu"},ln={number:4,unit:"mu"},xr={number:5,unit:"mu"},J6={mord:{mop:nt,mbin:ln,mrel:xr,minner:nt},mop:{mord:nt,mop:nt,mrel:xr,minner:nt},mbin:{mord:ln,mop:ln,mopen:ln,minner:ln},mrel:{mord:xr,mop:xr,mopen:xr,minner:xr},mopen:{},mclose:{mop:nt,mbin:ln,mrel:xr,minner:nt},mpunct:{mord:nt,mop:nt,mrel:xr,mopen:nt,mclose:nt,mpunct:nt,minner:nt},minner:{mord:nt,mop:nt,mbin:ln,mrel:xr,mopen:nt,mpunct:nt,minner:nt}},Z6={mord:{mop:nt},mop:{mord:nt,mop:nt},mbin:{},mrel:{},mopen:{},mclose:{mop:nt},mpunct:{},minner:{mop:nt}},K1={},Ms={},Ns={};function oe(t){for(var{type:e,names:r,props:n,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,o={type:e,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:s},l=0;l{var y=x.classes[0],M=v.classes[0];y==="mbin"&&we.contains(e5,M)?x.classes[0]="mord":M==="mbin"&&we.contains(Q6,y)&&(v.classes[0]="mord")},{node:f},p,b),sc(i,(v,x)=>{var y=pa(x),M=pa(v),k=y&&M?v.hasClass("mtight")?Z6[y][M]:J6[y][M]:null;if(k)return L.makeGlue(k,c)},{node:f},p,b),i},sc=function t(e,r,n,s,i){s&&e.push(s);for(var a=0;ap=>{e.splice(f+1,0,p),a++})(a)}s&&e.pop()},Y1=function(e){return e instanceof T0||e instanceof go||e instanceof A0&&e.hasClass("enclosing")?e:null},n5=function t(e,r){var n=Y1(e);if(n){var s=n.children;if(s.length){if(r==="right")return t(s[s.length-1],"right");if(r==="left")return t(s[0],"left")}}return e},pa=function(e,r){return e?(r&&(e=n5(e,r)),r5[e.classes[0]]||null):null},g0=function(e,r){var n=["nulldelimiter"].concat(e.baseSizingClasses());return Or(r.concat(n))},$e=function(e,r,n){if(!e)return Or();if(Ms[e.type]){var s=Ms[e.type](e,r);if(n&&r.size!==n.size){s=Or(r.sizingClasses(n),[s],r);var i=r.sizeMultiplier/n.sizeMultiplier;s.height*=i,s.depth*=i}return s}else throw new te("Got group of unknown type: '"+e.type+"'")};function j0(t,e){var r=Or(["base"],t,e),n=Or(["strut"]);return n.style.height=ae(r.height+r.depth),r.depth&&(n.style.verticalAlign=ae(-r.depth)),r.children.unshift(n),r}function ma(t,e){var r=null;t.length===1&&t[0].type==="tag"&&(r=t[0].tag,t=t[0].body);var n=pt(t,e,"root"),s;n.length===2&&n[1].hasClass("tag")&&(s=n.pop());for(var i=[],a=[],o=0;o0&&(i.push(j0(a,e)),a=[]),i.push(n[o]));a.length>0&&i.push(j0(a,e));var c;r?(c=j0(pt(r,e,!0)),c.classes=["tag"],i.push(c)):s&&i.push(s);var d=Or(["katex-html"],i);if(d.setAttribute("aria-hidden","true"),c){var f=c.children[0];f.style.height=ae(d.height+d.depth),d.depth&&(f.style.verticalAlign=ae(-d.depth))}return d}function X1(t){return new T0(t)}class Bt{constructor(e,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(e,r){this.attributes[e]=r}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&e.setAttribute(r,this.attributes[r]);this.classes.length>0&&(e.className=Yr(this.classes));for(var n=0;n0&&(e+=' class ="'+we.escape(Yr(this.classes))+'"'),e+=">";for(var n=0;n",e}toText(){return this.children.map(e=>e.toText()).join("")}}class pr{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return we.escape(this.toText())}toText(){return this.text}}class s5{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=" ":e>=.1666&&e<=.1667?this.character=" ":e>=.2222&&e<=.2223?this.character=" ":e>=.2777&&e<=.2778?this.character="  ":e>=-.05556&&e<=-.05555?this.character=" ⁣":e>=-.1667&&e<=-.1666?this.character=" ⁣":e>=-.2223&&e<=-.2222?this.character=" ⁣":e>=-.2778&&e<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",ae(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var ee={MathNode:Bt,TextNode:pr,SpaceNode:s5,newDocumentFragment:X1},Xt=function(e,r,n){return Qe[r][e]&&Qe[r][e].replace&&e.charCodeAt(0)!==55349&&!(j1.hasOwnProperty(e)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(e=Qe[r][e].replace),new ee.TextNode(e)},bo=function(e){return e.length===1?e[0]:new ee.MathNode("mrow",e)},yo=function(e,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var s=e.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathsfit")return"sans-serif-italic";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var i=e.text;if(we.contains(["\\imath","\\jmath"],i))return null;Qe[s][i]&&Qe[s][i].replace&&(i=Qe[s][i].replace);var a=L.fontMap[n].fontName;return mo(i,a,s)?L.fontMap[n].variant:null};function Ci(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof pr&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var r=t.children[0];return r instanceof pr&&r.text===","}else return!1}var Lt=function(e,r,n){if(e.length===1){var s=Xe(e[0],r);return n&&s instanceof Bt&&s.type==="mo"&&(s.setAttribute("lspace","0em"),s.setAttribute("rspace","0em")),[s]}for(var i=[],a,o=0;o=1&&(a.type==="mn"||Ci(a))){var c=l.children[0];c instanceof Bt&&c.type==="mn"&&(c.children=[...a.children,...c.children],i.pop())}else if(a.type==="mi"&&a.children.length===1){var d=a.children[0];if(d instanceof pr&&d.text==="̸"&&(l.type==="mo"||l.type==="mi"||l.type==="mn")){var f=l.children[0];f instanceof pr&&f.text.length>0&&(f.text=f.text.slice(0,1)+"̸"+f.text.slice(1),i.pop())}}}i.push(l),a=l}return i},Jr=function(e,r,n){return bo(Lt(e,r,n))},Xe=function(e,r){if(!e)return new ee.MathNode("mrow");if(Ns[e.type]){var n=Ns[e.type](e,r);return n}else throw new te("Got group of unknown type: '"+e.type+"'")};function ic(t,e,r,n,s){var i=Lt(t,r),a;i.length===1&&i[0]instanceof Bt&&we.contains(["mrow","mtable"],i[0].type)?a=i[0]:a=new ee.MathNode("mrow",i);var o=new ee.MathNode("annotation",[new ee.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var l=new ee.MathNode("semantics",[a,o]),c=new ee.MathNode("math",[l]);c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&c.setAttribute("display","block");var d=s?"katex":"katex-mathml";return L.makeSpan([d],[c])}var J1=function(e){return new Tr({style:e.displayMode?ke.DISPLAY:ke.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Z1=function(e,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),e=L.makeSpan(n,[e])}return e},i5=function(e,r,n){var s=J1(n),i;if(n.output==="mathml")return ic(e,r,s,n.displayMode,!0);if(n.output==="html"){var a=ma(e,s);i=L.makeSpan(["katex"],[a])}else{var o=ic(e,r,s,n.displayMode,!1),l=ma(e,s);i=L.makeSpan(["katex"],[o,l])}return Z1(i,n)},a5=function(e,r,n){var s=J1(n),i=ma(e,s),a=L.makeSpan(["katex"],[i]);return Z1(a,n)},o5={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},l5=function(e){var r=new ee.MathNode("mo",[new ee.TextNode(o5[e.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},c5={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},u5=function(e){return e.type==="ordgroup"?e.body.length:1},d5=function(e,r){function n(){var o=4e5,l=e.label.slice(1);if(we.contains(["widehat","widecheck","widetilde","utilde"],l)){var c=e,d=u5(c.base),f,p,b;if(d>5)l==="widehat"||l==="widecheck"?(f=420,o=2364,b=.42,p=l+"4"):(f=312,o=2340,b=.34,p="tilde4");else{var v=[1,1,2,2,3,3][d];l==="widehat"||l==="widecheck"?(o=[0,1062,2364,2364,2364][v],f=[0,239,300,360,420][v],b=[0,.24,.3,.3,.36,.42][v],p=l+v):(o=[0,600,1033,2339,2340][v],f=[0,260,286,306,312][v],b=[0,.26,.286,.3,.306,.34][v],p="tilde"+v)}var x=new Xr(p),y=new _r([x],{width:"100%",height:ae(b),viewBox:"0 0 "+o+" "+f,preserveAspectRatio:"none"});return{span:L.makeSvgSpan([],[y],r),minWidth:0,height:b}}else{var M=[],k=c5[l],[T,N,I]=k,O=I/1e3,z=T.length,W,U;if(z===1){var he=k[3];W=["hide-tail"],U=[he]}else if(z===2)W=["halfarrow-left","halfarrow-right"],U=["xMinYMin","xMaxYMin"];else if(z===3)W=["brace-left","brace-center","brace-right"],U=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+z+" children.");for(var ge=0;ge0&&(s.style.minWidth=ae(i)),s},h5=function(e,r,n,s,i){var a,o=e.height+e.depth+n+s;if(/fbox|color|angl/.test(r)){if(a=L.makeSpan(["stretchy",r],[],i),r==="fbox"){var l=i.color&&i.getColor();l&&(a.style.borderColor=l)}}else{var c=[];/^[bx]cancel$/.test(r)&&c.push(new ha({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&c.push(new ha({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var d=new _r(c,{width:"100%",height:ae(o)});a=L.makeSvgSpan([],[d],i)}return a.height=o,a.style.height=ae(o),a},Lr={encloseSpan:h5,mathMLnode:l5,svgSpan:d5};function Re(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function wo(t){var e=ei(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function ei(t){return t&&(t.type==="atom"||F6.hasOwnProperty(t.type))?t:null}var xo=(t,e)=>{var r,n,s;t&&t.type==="supsub"?(n=Re(t.base,"accent"),r=n.base,t.base=r,s=L6($e(t,e)),t.base=n):(n=Re(t,"accent"),r=n.base);var i=$e(r,e.havingCrampedStyle()),a=n.isShifty&&we.isCharacterBox(r),o=0;if(a){var l=we.getBaseElem(r),c=$e(l,e.havingCrampedStyle());o=Zl(c).skew}var d=n.label==="\\c",f=d?i.height+i.depth:Math.min(i.height,e.fontMetrics().xHeight),p;if(n.isStretchy)p=Lr.svgSpan(n,e),p=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+ae(2*o)+")",marginLeft:ae(2*o)}:void 0}]},e);else{var b,v;n.label==="\\vec"?(b=L.staticSvg("vec",e),v=L.svgData.vec[1]):(b=L.makeOrd({mode:n.mode,text:n.label},e,"textord"),b=Zl(b),b.italic=0,v=b.width,d&&(f+=b.depth)),p=L.makeSpan(["accent-body"],[b]);var x=n.label==="\\textcircled";x&&(p.classes.push("accent-full"),f=i.height);var y=o;x||(y-=v/2),p.style.left=ae(y),n.label==="\\textcircled"&&(p.style.top=".2em"),p=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-f},{type:"elem",elem:p}]},e)}var M=L.makeSpan(["mord","accent"],[p],e);return s?(s.children[0]=M,s.height=Math.max(M.height,s.height),s.classes[0]="mord",s):M},Q1=(t,e)=>{var r=t.isStretchy?Lr.mathMLnode(t.label):new ee.MathNode("mo",[Xt(t.label,t.mode)]),n=new ee.MathNode("mover",[Xe(t.base,e),r]);return n.setAttribute("accent","true"),n},f5=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));oe({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(t,e)=>{var r=Ds(e[0]),n=!f5.test(t.funcName),s=!n||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:n,isShifty:s,base:r}},htmlBuilder:xo,mathmlBuilder:Q1});oe({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var r=e[0],n=t.parser.mode;return n==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:xo,mathmlBuilder:Q1});oe({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:r,funcName:n}=t,s=e[0];return{type:"accentUnder",mode:r.mode,label:n,base:s}},htmlBuilder:(t,e)=>{var r=$e(t.base,e),n=Lr.svgSpan(t,e),s=t.label==="\\utilde"?.12:0,i=L.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:s},{type:"elem",elem:r}]},e);return L.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:(t,e)=>{var r=Lr.mathMLnode(t.label),n=new ee.MathNode("munder",[Xe(t.base,e),r]);return n.setAttribute("accentunder","true"),n}});var U0=t=>{var e=new ee.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};oe({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n,funcName:s}=t;return{type:"xArrow",mode:n.mode,label:s,body:e[0],below:r[0]}},htmlBuilder(t,e){var r=e.style,n=e.havingStyle(r.sup()),s=L.wrapFragment($e(t.body,n,e),e),i=t.label.slice(0,2)==="\\x"?"x":"cd";s.classes.push(i+"-arrow-pad");var a;t.below&&(n=e.havingStyle(r.sub()),a=L.wrapFragment($e(t.below,n,e),e),a.classes.push(i+"-arrow-pad"));var o=Lr.svgSpan(t,e),l=-e.fontMetrics().axisHeight+.5*o.height,c=-e.fontMetrics().axisHeight-.5*o.height-.111;(s.depth>.25||t.label==="\\xleftequilibrium")&&(c-=s.depth);var d;if(a){var f=-e.fontMetrics().axisHeight+a.height+.5*o.height+.111;d=L.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:c},{type:"elem",elem:o,shift:l},{type:"elem",elem:a,shift:f}]},e)}else d=L.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:c},{type:"elem",elem:o,shift:l}]},e);return d.children[0].children[0].children[1].classes.push("svg-align"),L.makeSpan(["mrel","x-arrow"],[d],e)},mathmlBuilder(t,e){var r=Lr.mathMLnode(t.label);r.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(t.body){var s=U0(Xe(t.body,e));if(t.below){var i=U0(Xe(t.below,e));n=new ee.MathNode("munderover",[r,i,s])}else n=new ee.MathNode("mover",[r,s])}else if(t.below){var a=U0(Xe(t.below,e));n=new ee.MathNode("munder",[r,a])}else n=U0(),n=new ee.MathNode("mover",[r,n]);return n}});var p5=L.makeSpan;function ed(t,e){var r=pt(t.body,e,!0);return p5([t.mclass],r,e)}function td(t,e){var r,n=Lt(t.body,e);return t.mclass==="minner"?r=new ee.MathNode("mpadded",n):t.mclass==="mord"?t.isCharacterBox?(r=n[0],r.type="mi"):r=new ee.MathNode("mi",n):(t.isCharacterBox?(r=n[0],r.type="mo"):r=new ee.MathNode("mo",n),t.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):t.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):t.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}oe({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:r,funcName:n}=t,s=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:ct(s),isCharacterBox:we.isCharacterBox(s)}},htmlBuilder:ed,mathmlBuilder:td});var ti=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};oe({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:r}=t;return{type:"mclass",mode:r.mode,mclass:ti(e[0]),body:ct(e[1]),isCharacterBox:we.isCharacterBox(e[1])}}});oe({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:r,funcName:n}=t,s=e[1],i=e[0],a;n!=="\\stackrel"?a=ti(s):a="mrel";var o={type:"op",mode:s.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:ct(s)},l={type:"supsub",mode:i.mode,base:o,sup:n==="\\underset"?null:i,sub:n==="\\underset"?i:null};return{type:"mclass",mode:r.mode,mclass:a,body:[l],isCharacterBox:we.isCharacterBox(l)}},htmlBuilder:ed,mathmlBuilder:td});oe({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"pmb",mode:r.mode,mclass:ti(e[0]),body:ct(e[0])}},htmlBuilder(t,e){var r=pt(t.body,e,!0),n=L.makeSpan([t.mclass],r,e);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(t,e){var r=Lt(t.body,e),n=new ee.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});var m5={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},ac=()=>({type:"styling",body:[],mode:"math",style:"display"}),oc=t=>t.type==="textord"&&t.text==="@",g5=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;function v5(t,e,r){var n=m5[t];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var s=r.callFunction("\\\\cdleft",[e[0]],[]),i={type:"atom",text:n,mode:"math",family:"rel"},a=r.callFunction("\\Big",[i],[]),o=r.callFunction("\\\\cdright",[e[1]],[]),l={type:"ordgroup",mode:"math",body:[s,a,o]};return r.callFunction("\\\\cdparent",[l],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var c={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[c],[])}default:return{type:"textord",text:" ",mode:"math"}}}function b5(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var r=t.fetch().text;if(r==="&"||r==="\\\\")t.consume();else if(r==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new te("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var n=[],s=[n],i=0;i-1))if("<>AV".indexOf(c)>-1)for(var f=0;f<2;f++){for(var p=!0,b=l+1;bAV=|." after @',a[l]);var v=v5(c,d,t),x={type:"styling",body:[v],mode:"math",style:"display"};n.push(x),o=ac()}i%2===0?n.push(o):n.shift(),n=[],s.push(n)}t.gullet.endGroup(),t.gullet.endGroup();var y=new Array(s[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:s,arraystretch:1,addJot:!0,rowGaps:[null],cols:y,colSeparationType:"CD",hLinesBeforeRow:new Array(s.length+1).fill([])}}oe({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:e[0]}},htmlBuilder(t,e){var r=e.havingStyle(e.style.sup()),n=L.wrapFragment($e(t.label,r,e),e);return n.classes.push("cd-label-"+t.side),n.style.bottom=ae(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(t,e){var r=new ee.MathNode("mrow",[Xe(t.label,e)]);return r=new ee.MathNode("mpadded",[r]),r.setAttribute("width","0"),t.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new ee.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});oe({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:r}=t;return{type:"cdlabelparent",mode:r.mode,fragment:e[0]}},htmlBuilder(t,e){var r=L.wrapFragment($e(t.fragment,e),e);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(t,e){return new ee.MathNode("mrow",[Xe(t.fragment,e)])}});oe({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:r}=t,n=Re(e[0],"ordgroup"),s=n.body,i="",a=0;a=1114111)throw new te("\\@char with invalid code point "+i);return l<=65535?c=String.fromCharCode(l):(l-=65536,c=String.fromCharCode((l>>10)+55296,(l&1023)+56320)),{type:"textord",mode:r.mode,text:c}}});var rd=(t,e)=>{var r=pt(t.body,e.withColor(t.color),!1);return L.makeFragment(r)},nd=(t,e)=>{var r=Lt(t.body,e.withColor(t.color)),n=new ee.MathNode("mstyle",r);return n.setAttribute("mathcolor",t.color),n};oe({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:r}=t,n=Re(e[0],"color-token").color,s=e[1];return{type:"color",mode:r.mode,color:n,body:ct(s)}},htmlBuilder:rd,mathmlBuilder:nd});oe({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:r,breakOnTokenText:n}=t,s=Re(e[0],"color-token").color;r.gullet.macros.set("\\current@color",s);var i=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:s,body:i}},htmlBuilder:rd,mathmlBuilder:nd});oe({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,r){var{parser:n}=t,s=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,i=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:i,size:s&&Re(s,"size").value}},htmlBuilder(t,e){var r=L.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=ae(st(t.size,e)))),r},mathmlBuilder(t,e){var r=new ee.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",ae(st(t.size,e)))),r}});var ga={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},sd=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new te("Expected a control sequence",t);return e},y5=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},id=(t,e,r,n)=>{var s=t.gullet.macros.get(r.text);s==null&&(r.noexpand=!0,s={tokens:[r],numArgs:0,unexpandable:!t.gullet.isExpandable(r.text)}),t.gullet.macros.set(e,s,n)};oe({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:r}=t;e.consumeSpaces();var n=e.fetch();if(ga[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=ga[n.text]),Re(e.parseFunction(),"internal");throw new te("Invalid token after macro prefix",n)}});oe({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=e.gullet.popToken(),s=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new te("Expected a control sequence",n);for(var i=0,a,o=[[]];e.gullet.future().text!=="{";)if(n=e.gullet.popToken(),n.text==="#"){if(e.gullet.future().text==="{"){a=e.gullet.future(),o[i].push("{");break}if(n=e.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new te('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==i+1)throw new te('Argument number "'+n.text+'" out of order');i++,o.push([])}else{if(n.text==="EOF")throw new te("Expected a macro definition");o[i].push(n.text)}var{tokens:l}=e.gullet.consumeArg();return a&&l.unshift(a),(r==="\\edef"||r==="\\xdef")&&(l=e.gullet.expandTokens(l),l.reverse()),e.gullet.macros.set(s,{tokens:l,numArgs:i,delimiters:o},r===ga[r]),{type:"internal",mode:e.mode}}});oe({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=sd(e.gullet.popToken());e.gullet.consumeSpaces();var s=y5(e);return id(e,n,s,r==="\\\\globallet"),{type:"internal",mode:e.mode}}});oe({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=sd(e.gullet.popToken()),s=e.gullet.popToken(),i=e.gullet.popToken();return id(e,n,i,r==="\\\\globalfuture"),e.gullet.pushToken(i),e.gullet.pushToken(s),{type:"internal",mode:e.mode}}});var Zn=function(e,r,n){var s=Qe.math[e]&&Qe.math[e].replace,i=mo(s||e,r,n);if(!i)throw new Error("Unsupported symbol "+e+" and font size "+r+".");return i},ko=function(e,r,n,s){var i=n.havingBaseStyle(r),a=L.makeSpan(s.concat(i.sizingClasses(n)),[e],n),o=i.sizeMultiplier/n.sizeMultiplier;return a.height*=o,a.depth*=o,a.maxFontSize=i.sizeMultiplier,a},ad=function(e,r,n){var s=r.havingBaseStyle(n),i=(1-r.sizeMultiplier/s.sizeMultiplier)*r.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=ae(i),e.height-=i,e.depth+=i},w5=function(e,r,n,s,i,a){var o=L.makeSymbol(e,"Main-Regular",i,s),l=ko(o,r,s,a);return n&&ad(l,s,r),l},x5=function(e,r,n,s){return L.makeSymbol(e,"Size"+r+"-Regular",n,s)},od=function(e,r,n,s,i,a){var o=x5(e,r,i,s),l=ko(L.makeSpan(["delimsizing","size"+r],[o],s),ke.TEXT,s,a);return n&&ad(l,s,ke.TEXT),l},Mi=function(e,r,n){var s;r==="Size1-Regular"?s="delim-size1":s="delim-size4";var i=L.makeSpan(["delimsizinginner",s],[L.makeSpan([],[L.makeSymbol(e,r,n)])]);return{type:"elem",elem:i}},Ni=function(e,r,n){var s=fr["Size4-Regular"][e.charCodeAt(0)]?fr["Size4-Regular"][e.charCodeAt(0)][4]:fr["Size1-Regular"][e.charCodeAt(0)][4],i=new Xr("inner",E6(e,Math.round(1e3*r))),a=new _r([i],{width:ae(s),height:ae(r),style:"width:"+ae(s),viewBox:"0 0 "+1e3*s+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),o=L.makeSvgSpan([],[a],n);return o.height=r,o.style.height=ae(r),o.style.width=ae(s),{type:"elem",elem:o}},va=.008,V0={type:"kern",size:-1*va},k5=["|","\\lvert","\\rvert","\\vert"],S5=["\\|","\\lVert","\\rVert","\\Vert"],ld=function(e,r,n,s,i,a){var o,l,c,d,f="",p=0;o=c=d=e,l=null;var b="Size1-Regular";e==="\\uparrow"?c=d="⏐":e==="\\Uparrow"?c=d="‖":e==="\\downarrow"?o=c="⏐":e==="\\Downarrow"?o=c="‖":e==="\\updownarrow"?(o="\\uparrow",c="⏐",d="\\downarrow"):e==="\\Updownarrow"?(o="\\Uparrow",c="‖",d="\\Downarrow"):we.contains(k5,e)?(c="∣",f="vert",p=333):we.contains(S5,e)?(c="∥",f="doublevert",p=556):e==="["||e==="\\lbrack"?(o="⎡",c="⎢",d="⎣",b="Size4-Regular",f="lbrack",p=667):e==="]"||e==="\\rbrack"?(o="⎤",c="⎥",d="⎦",b="Size4-Regular",f="rbrack",p=667):e==="\\lfloor"||e==="⌊"?(c=o="⎢",d="⎣",b="Size4-Regular",f="lfloor",p=667):e==="\\lceil"||e==="⌈"?(o="⎡",c=d="⎢",b="Size4-Regular",f="lceil",p=667):e==="\\rfloor"||e==="⌋"?(c=o="⎥",d="⎦",b="Size4-Regular",f="rfloor",p=667):e==="\\rceil"||e==="⌉"?(o="⎤",c=d="⎥",b="Size4-Regular",f="rceil",p=667):e==="("||e==="\\lparen"?(o="⎛",c="⎜",d="⎝",b="Size4-Regular",f="lparen",p=875):e===")"||e==="\\rparen"?(o="⎞",c="⎟",d="⎠",b="Size4-Regular",f="rparen",p=875):e==="\\{"||e==="\\lbrace"?(o="⎧",l="⎨",d="⎩",c="⎪",b="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(o="⎫",l="⎬",d="⎭",c="⎪",b="Size4-Regular"):e==="\\lgroup"||e==="⟮"?(o="⎧",d="⎩",c="⎪",b="Size4-Regular"):e==="\\rgroup"||e==="⟯"?(o="⎫",d="⎭",c="⎪",b="Size4-Regular"):e==="\\lmoustache"||e==="⎰"?(o="⎧",d="⎭",c="⎪",b="Size4-Regular"):(e==="\\rmoustache"||e==="⎱")&&(o="⎫",d="⎩",c="⎪",b="Size4-Regular");var v=Zn(o,b,i),x=v.height+v.depth,y=Zn(c,b,i),M=y.height+y.depth,k=Zn(d,b,i),T=k.height+k.depth,N=0,I=1;if(l!==null){var O=Zn(l,b,i);N=O.height+O.depth,I=2}var z=x+T+N,W=Math.max(0,Math.ceil((r-z)/(I*M))),U=z+W*I*M,he=s.fontMetrics().axisHeight;n&&(he*=s.sizeMultiplier);var ge=U/2-he,Ae=[];if(f.length>0){var et=U-x-T,Je=Math.round(U*1e3),ot=C6(f,Math.round(et*1e3)),Fe=new Xr(f,ot),Ie=(p/1e3).toFixed(3)+"em",ve=(Je/1e3).toFixed(3)+"em",Me=new _r([Fe],{width:Ie,height:ve,viewBox:"0 0 "+p+" "+Je}),tt=L.makeSvgSpan([],[Me],s);tt.height=Je/1e3,tt.style.width=Ie,tt.style.height=ve,Ae.push({type:"elem",elem:tt})}else{if(Ae.push(Mi(d,b,i)),Ae.push(V0),l===null){var We=U-x-T+2*va;Ae.push(Ni(c,We,s))}else{var _e=(U-x-T-N)/2+2*va;Ae.push(Ni(c,_e,s)),Ae.push(V0),Ae.push(Mi(l,b,i)),Ae.push(V0),Ae.push(Ni(c,_e,s))}Ae.push(V0),Ae.push(Mi(o,b,i))}var St=s.havingBaseStyle(ke.TEXT),mt=L.makeVList({positionType:"bottom",positionData:ge,children:Ae},St);return ko(L.makeSpan(["delimsizing","mult"],[mt],St),ke.TEXT,s,a)},Di=80,Ri=.08,Ii=function(e,r,n,s,i){var a=A6(e,s,n),o=new Xr(e,a),l=new _r([o],{width:"400em",height:ae(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return L.makeSvgSpan(["hide-tail"],[l],i)},T5=function(e,r){var n=r.havingBaseSizing(),s=hd("\\surd",e*n.sizeMultiplier,dd,n),i=n.sizeMultiplier,a=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),o,l=0,c=0,d=0,f;return s.type==="small"?(d=1e3+1e3*a+Di,e<1?i=1:e<1.4&&(i=.7),l=(1+a+Ri)/i,c=(1+a)/i,o=Ii("sqrtMain",l,d,a,r),o.style.minWidth="0.853em",f=.833/i):s.type==="large"?(d=(1e3+Di)*l0[s.size],c=(l0[s.size]+a)/i,l=(l0[s.size]+a+Ri)/i,o=Ii("sqrtSize"+s.size,l,d,a,r),o.style.minWidth="1.02em",f=1/i):(l=e+a+Ri,c=e+a,d=Math.floor(1e3*e+a)+Di,o=Ii("sqrtTall",l,d,a,r),o.style.minWidth="0.742em",f=1.056),o.height=c,o.style.height=ae(l),{span:o,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+a)*i}},cd=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],A5=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],ud=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],l0=[0,1.2,1.8,2.4,3],E5=function(e,r,n,s,i){if(e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle"),we.contains(cd,e)||we.contains(ud,e))return od(e,r,!1,n,s,i);if(we.contains(A5,e))return ld(e,l0[r],!1,n,s,i);throw new te("Illegal delimiter: '"+e+"'")},C5=[{type:"small",style:ke.SCRIPTSCRIPT},{type:"small",style:ke.SCRIPT},{type:"small",style:ke.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],M5=[{type:"small",style:ke.SCRIPTSCRIPT},{type:"small",style:ke.SCRIPT},{type:"small",style:ke.TEXT},{type:"stack"}],dd=[{type:"small",style:ke.SCRIPTSCRIPT},{type:"small",style:ke.SCRIPT},{type:"small",style:ke.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],N5=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},hd=function(e,r,n,s){for(var i=Math.min(2,3-s.style.size),a=i;ar)return n[a]}return n[n.length-1]},fd=function(e,r,n,s,i,a){e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle");var o;we.contains(ud,e)?o=C5:we.contains(cd,e)?o=dd:o=M5;var l=hd(e,r,o,s);return l.type==="small"?w5(e,l.style,n,s,i,a):l.type==="large"?od(e,l.size,n,s,i,a):ld(e,r,n,s,i,a)},D5=function(e,r,n,s,i,a){var o=s.fontMetrics().axisHeight*s.sizeMultiplier,l=901,c=5/s.fontMetrics().ptPerEm,d=Math.max(r-o,n+o),f=Math.max(d/500*l,2*d-c);return fd(e,f,!0,s,i,a)},Dr={sqrtImage:T5,sizedDelim:E5,sizeToMaxHeight:l0,customSizedDelim:fd,leftRightDelim:D5},lc={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},R5=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function ri(t,e){var r=ei(t);if(r&&we.contains(R5,r.text))return r;throw r?new te("Invalid delimiter '"+r.text+"' after '"+e.funcName+"'",t):new te("Invalid delimiter type '"+t.type+"'",t)}oe({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,e)=>{var r=ri(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:lc[t.funcName].size,mclass:lc[t.funcName].mclass,delim:r.text}},htmlBuilder:(t,e)=>t.delim==="."?L.makeSpan([t.mclass]):Dr.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push(Xt(t.delim,t.mode));var r=new ee.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=ae(Dr.sizeToMaxHeight[t.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}});function cc(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}oe({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var r=t.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new te("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:ri(e[0],t).text,color:r}}});oe({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var r=ri(e[0],t),n=t.parser;++n.leftrightDepth;var s=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var i=Re(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:s,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:(t,e)=>{cc(t);for(var r=pt(t.body,e,!0,["mopen","mclose"]),n=0,s=0,i=!1,a=0;a{cc(t);var r=Lt(t.body,e);if(t.left!=="."){var n=new ee.MathNode("mo",[Xt(t.left,t.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(t.right!=="."){var s=new ee.MathNode("mo",[Xt(t.right,t.mode)]);s.setAttribute("fence","true"),t.rightColor&&s.setAttribute("mathcolor",t.rightColor),r.push(s)}return bo(r)}});oe({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var r=ri(e[0],t);if(!t.parser.leftrightDepth)throw new te("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},htmlBuilder:(t,e)=>{var r;if(t.delim===".")r=g0(e,[]);else{r=Dr.sizedDelim(t.delim,1,e,t.mode,[]);var n={delim:t.delim,options:e};r.isMiddle=n}return r},mathmlBuilder:(t,e)=>{var r=t.delim==="\\vert"||t.delim==="|"?Xt("|","text"):Xt(t.delim,t.mode),n=new ee.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});var So=(t,e)=>{var r=L.wrapFragment($e(t.body,e),e),n=t.label.slice(1),s=e.sizeMultiplier,i,a=0,o=we.isCharacterBox(t.body);if(n==="sout")i=L.makeSpan(["stretchy","sout"]),i.height=e.fontMetrics().defaultRuleThickness/s,a=-.5*e.fontMetrics().xHeight;else if(n==="phase"){var l=st({number:.6,unit:"pt"},e),c=st({number:.35,unit:"ex"},e),d=e.havingBaseSizing();s=s/d.sizeMultiplier;var f=r.height+r.depth+l+c;r.style.paddingLeft=ae(f/2+l);var p=Math.floor(1e3*f*s),b=S6(p),v=new _r([new Xr("phase",b)],{width:"400em",height:ae(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});i=L.makeSvgSpan(["hide-tail"],[v],e),i.style.height=ae(f),a=r.depth+l+c}else{/cancel/.test(n)?o||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var x=0,y=0,M=0;/box/.test(n)?(M=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),x=e.fontMetrics().fboxsep+(n==="colorbox"?0:M),y=x):n==="angl"?(M=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),x=4*M,y=Math.max(0,.25-r.depth)):(x=o?.2:0,y=x),i=Lr.encloseSpan(r,n,x,y,e),/fbox|boxed|fcolorbox/.test(n)?(i.style.borderStyle="solid",i.style.borderWidth=ae(M)):n==="angl"&&M!==.049&&(i.style.borderTopWidth=ae(M),i.style.borderRightWidth=ae(M)),a=r.depth+y,t.backgroundColor&&(i.style.backgroundColor=t.backgroundColor,t.borderColor&&(i.style.borderColor=t.borderColor))}var k;if(t.backgroundColor)k=L.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:a},{type:"elem",elem:r,shift:0}]},e);else{var T=/cancel|phase/.test(n)?["svg-align"]:[];k=L.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:i,shift:a,wrapperClasses:T}]},e)}return/cancel/.test(n)&&(k.height=r.height,k.depth=r.depth),/cancel/.test(n)&&!o?L.makeSpan(["mord","cancel-lap"],[k],e):L.makeSpan(["mord"],[k],e)},To=(t,e)=>{var r=0,n=new ee.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Xe(t.body,e)]);switch(t.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),t.label==="\\fcolorbox"){var s=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);n.setAttribute("style","border: "+s+"em solid "+String(t.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&n.setAttribute("mathbackground",t.backgroundColor),n};oe({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,r){var{parser:n,funcName:s}=t,i=Re(e[0],"color-token").color,a=e[1];return{type:"enclose",mode:n.mode,label:s,backgroundColor:i,body:a}},htmlBuilder:So,mathmlBuilder:To});oe({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,r){var{parser:n,funcName:s}=t,i=Re(e[0],"color-token").color,a=Re(e[1],"color-token").color,o=e[2];return{type:"enclose",mode:n.mode,label:s,backgroundColor:a,borderColor:i,body:o}},htmlBuilder:So,mathmlBuilder:To});oe({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\fbox",body:e[0]}}});oe({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t,s=e[0];return{type:"enclose",mode:r.mode,label:n,body:s}},htmlBuilder:So,mathmlBuilder:To});oe({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\angl",body:e[0]}}});var pd={};function gr(t){for(var{type:e,names:r,props:n,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,o={type:e,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:s},l=0;l{var e=t.parser.settings;if(!e.displayMode)throw new te("{"+t.envName+"} can be used only in display mode.")};function Ao(t){if(t.indexOf("ed")===-1)return t.indexOf("*")===-1}function rn(t,e,r){var{hskipBeforeAndAfter:n,addJot:s,cols:i,arraystretch:a,colSeparationType:o,autoTag:l,singleRow:c,emptySingleRow:d,maxNumCols:f,leqno:p}=e;if(t.gullet.beginGroup(),c||t.gullet.macros.set("\\cr","\\\\\\relax"),!a){var b=t.gullet.expandMacroAsText("\\arraystretch");if(b==null)a=1;else if(a=parseFloat(b),!a||a<0)throw new te("Invalid \\arraystretch: "+b)}t.gullet.beginGroup();var v=[],x=[v],y=[],M=[],k=l!=null?[]:void 0;function T(){l&&t.gullet.macros.set("\\@eqnsw","1",!0)}function N(){k&&(t.gullet.macros.get("\\df@tag")?(k.push(t.subparse([new Kt("\\df@tag")])),t.gullet.macros.set("\\df@tag",void 0,!0)):k.push(!!l&&t.gullet.macros.get("\\@eqnsw")==="1"))}for(T(),M.push(uc(t));;){var I=t.parseExpression(!1,c?"\\end":"\\\\");t.gullet.endGroup(),t.gullet.beginGroup(),I={type:"ordgroup",mode:t.mode,body:I},r&&(I={type:"styling",mode:t.mode,style:r,body:[I]}),v.push(I);var O=t.fetch().text;if(O==="&"){if(f&&v.length===f){if(c||o)throw new te("Too many tab characters: &",t.nextToken);t.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}t.consume()}else if(O==="\\end"){N(),v.length===1&&I.type==="styling"&&I.body[0].body.length===0&&(x.length>1||!d)&&x.pop(),M.length0&&(T+=.25),c.push({pos:T,isDashed:H[X]})}for(N(a[0]),n=0;n0&&(ge+=k,zH))for(n=0;n=o)){var re=void 0;(s>0||e.hskipBeforeAndAfter)&&(re=we.deflt(_e.pregap,p),re!==0&&(ot=L.makeSpan(["arraycolsep"],[]),ot.style.width=ae(re),Je.push(ot)));var ie=[];for(n=0;n0){for(var Ue=L.makeLineSpan("hline",r,d),S=L.makeLineSpan("hdashline",r,d),D=[{type:"elem",elem:l,shift:0}];c.length>0;){var F=c.pop(),G=F.pos-Ae;F.isDashed?D.push({type:"elem",elem:S,shift:G}):D.push({type:"elem",elem:Ue,shift:G})}l=L.makeVList({positionType:"individualShift",children:D},r)}if(Ie.length===0)return L.makeSpan(["mord"],[l],r);var q=L.makeVList({positionType:"individualShift",children:Ie},r);return q=L.makeSpan(["tag"],[q],r),L.makeFragment([l,q])},I5={c:"center ",l:"left ",r:"right "},br=function(e,r){for(var n=[],s=new ee.MathNode("mtd",[],["mtr-glue"]),i=new ee.MathNode("mtd",[],["mml-eqn-num"]),a=0;a0){var v=e.cols,x="",y=!1,M=0,k=v.length;v[0].type==="separator"&&(p+="top ",M=1),v[v.length-1].type==="separator"&&(p+="bottom ",k-=1);for(var T=M;T0?"left ":"",p+=W[W.length-1].length>0?"right ":"";for(var U=1;U-1?"alignat":"align",i=e.envName==="split",a=rn(e.parser,{cols:n,addJot:!0,autoTag:i?void 0:Ao(e.envName),emptySingleRow:!0,colSeparationType:s,maxNumCols:i?2:void 0,leqno:e.parser.settings.leqno},"display"),o,l=0,c={type:"ordgroup",mode:e.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var d="",f=0;f0&&b&&(y=1),n[v]={type:"align",align:x,pregap:y,postgap:0}}return a.colSeparationType=b?"align":"alignat",a};gr({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var r=ei(e[0]),n=r?[e[0]]:Re(e[0],"ordgroup").body,s=n.map(function(a){var o=wo(a),l=o.text;if("lcr".indexOf(l)!==-1)return{type:"align",align:l};if(l==="|")return{type:"separator",separator:"|"};if(l===":")return{type:"separator",separator:":"};throw new te("Unknown column alignment: "+l,a)}),i={cols:s,hskipBeforeAndAfter:!0,maxNumCols:s.length};return rn(t.parser,i,Eo(t.envName))},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(t.envName.charAt(t.envName.length-1)==="*"){var s=t.parser;if(s.consumeSpaces(),s.fetch().text==="["){if(s.consume(),s.consumeSpaces(),r=s.fetch().text,"lcr".indexOf(r)===-1)throw new te("Expected l or c or r",s.nextToken);s.consume(),s.consumeSpaces(),s.expect("]"),s.consume(),n.cols=[{type:"align",align:r}]}}var i=rn(t.parser,n,Eo(t.envName)),a=Math.max(0,...i.body.map(o=>o.length));return i.cols=new Array(a).fill({type:"align",align:r}),e?{type:"leftright",mode:t.mode,body:[i],left:e[0],right:e[1],rightColor:void 0}:i},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},r=rn(t.parser,e,"script");return r.colSeparationType="small",r},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var r=ei(e[0]),n=r?[e[0]]:Re(e[0],"ordgroup").body,s=n.map(function(a){var o=wo(a),l=o.text;if("lc".indexOf(l)!==-1)return{type:"align",align:l};throw new te("Unknown column alignment: "+l,a)});if(s.length>1)throw new te("{subarray} can contain only one column");var i={cols:s,hskipBeforeAndAfter:!1,arraystretch:.5};if(i=rn(t.parser,i,"script"),i.body.length>0&&i.body[0].length>1)throw new te("{subarray} can contain only one column");return i},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=rn(t.parser,e,Eo(t.envName));return{type:"leftright",mode:t.mode,body:[r],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:gd,htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){we.contains(["gather","gather*"],t.envName)&&ni(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Ao(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return rn(t.parser,e,"display")},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:gd,htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){ni(t);var e={autoTag:Ao(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return rn(t.parser,e,"display")},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["CD"],props:{numArgs:0},handler(t){return ni(t),b5(t.parser)},htmlBuilder:vr,mathmlBuilder:br});g("\\nonumber","\\gdef\\@eqnsw{0}");g("\\notag","\\nonumber");oe({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new te(t.funcName+" valid only within array environment")}});var dc=pd;oe({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:r,funcName:n}=t,s=e[0];if(s.type!=="ordgroup")throw new te("Invalid environment name",s);for(var i="",a=0;a{var r=t.font,n=e.withFont(r);return $e(t.body,n)},bd=(t,e)=>{var r=t.font,n=e.withFont(r);return Xe(t.body,n)},hc={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};oe({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:r,funcName:n}=t,s=Ds(e[0]),i=n;return i in hc&&(i=hc[i]),{type:"font",mode:r.mode,font:i.slice(1),body:s}},htmlBuilder:vd,mathmlBuilder:bd});oe({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:r}=t,n=e[0],s=we.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:ti(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:s}}});oe({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:r,funcName:n,breakOnTokenText:s}=t,{mode:i}=r,a=r.parseExpression(!0,s),o="math"+n.slice(1);return{type:"font",mode:i,font:o,body:{type:"ordgroup",mode:r.mode,body:a}}},htmlBuilder:vd,mathmlBuilder:bd});var yd=(t,e)=>{var r=e;return t==="display"?r=r.id>=ke.SCRIPT.id?r.text():ke.DISPLAY:t==="text"&&r.size===ke.DISPLAY.size?r=ke.TEXT:t==="script"?r=ke.SCRIPT:t==="scriptscript"&&(r=ke.SCRIPTSCRIPT),r},Co=(t,e)=>{var r=yd(t.size,e.style),n=r.fracNum(),s=r.fracDen(),i;i=e.havingStyle(n);var a=$e(t.numer,i,e);if(t.continued){var o=8.5/e.fontMetrics().ptPerEm,l=3.5/e.fontMetrics().ptPerEm;a.height=a.height0?v=3*p:v=7*p,x=e.fontMetrics().denom1):(f>0?(b=e.fontMetrics().num2,v=p):(b=e.fontMetrics().num3,v=3*p),x=e.fontMetrics().denom2);var y;if(d){var k=e.fontMetrics().axisHeight;b-a.depth-(k+.5*f){var r=new ee.MathNode("mfrac",[Xe(t.numer,e),Xe(t.denom,e)]);if(!t.hasBarLine)r.setAttribute("linethickness","0px");else if(t.barSize){var n=st(t.barSize,e);r.setAttribute("linethickness",ae(n))}var s=yd(t.size,e.style);if(s.size!==e.style.size){r=new ee.MathNode("mstyle",[r]);var i=s.size===ke.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",i),r.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var a=[];if(t.leftDelim!=null){var o=new ee.MathNode("mo",[new ee.TextNode(t.leftDelim.replace("\\",""))]);o.setAttribute("fence","true"),a.push(o)}if(a.push(r),t.rightDelim!=null){var l=new ee.MathNode("mo",[new ee.TextNode(t.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),a.push(l)}return bo(a)}return r};oe({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:r,funcName:n}=t,s=e[0],i=e[1],a,o=null,l=null,c="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,o="(",l=")";break;case"\\\\bracefrac":a=!1,o="\\{",l="\\}";break;case"\\\\brackfrac":a=!1,o="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":c="display";break;case"\\tfrac":case"\\tbinom":c="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:s,denom:i,hasBarLine:a,leftDelim:o,rightDelim:l,size:c,barSize:null}},htmlBuilder:Co,mathmlBuilder:Mo});oe({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(t,e)=>{var{parser:r,funcName:n}=t,s=e[0],i=e[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:s,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});oe({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:r,token:n}=t,s;switch(r){case"\\over":s="\\frac";break;case"\\choose":s="\\binom";break;case"\\atop":s="\\\\atopfrac";break;case"\\brace":s="\\\\bracefrac";break;case"\\brack":s="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:s,token:n}}});var fc=["display","text","script","scriptscript"],pc=function(e){var r=null;return e.length>0&&(r=e,r=r==="."?null:r),r};oe({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:r}=t,n=e[4],s=e[5],i=Ds(e[0]),a=i.type==="atom"&&i.family==="open"?pc(i.text):null,o=Ds(e[1]),l=o.type==="atom"&&o.family==="close"?pc(o.text):null,c=Re(e[2],"size"),d,f=null;c.isBlank?d=!0:(f=c.value,d=f.number>0);var p="auto",b=e[3];if(b.type==="ordgroup"){if(b.body.length>0){var v=Re(b.body[0],"textord");p=fc[Number(v.text)]}}else b=Re(b,"textord"),p=fc[Number(b.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:s,continued:!1,hasBarLine:d,barSize:f,leftDelim:a,rightDelim:l,size:p}},htmlBuilder:Co,mathmlBuilder:Mo});oe({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:r,funcName:n,token:s}=t;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Re(e[0],"size").value,token:s}}});oe({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:r,funcName:n}=t,s=e[0],i=l6(Re(e[1],"infix").size),a=e[2],o=i.number>0;return{type:"genfrac",mode:r.mode,numer:s,denom:a,continued:!1,hasBarLine:o,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Co,mathmlBuilder:Mo});var wd=(t,e)=>{var r=e.style,n,s;t.type==="supsub"?(n=t.sup?$e(t.sup,e.havingStyle(r.sup()),e):$e(t.sub,e.havingStyle(r.sub()),e),s=Re(t.base,"horizBrace")):s=Re(t,"horizBrace");var i=$e(s.base,e.havingBaseStyle(ke.DISPLAY)),a=Lr.svgSpan(s,e),o;if(s.isOver?(o=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:a}]},e),o.children[0].children[0].children[1].classes.push("svg-align")):(o=L.makeVList({positionType:"bottom",positionData:i.depth+.1+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:i}]},e),o.children[0].children[0].children[0].classes.push("svg-align")),n){var l=L.makeSpan(["mord",s.isOver?"mover":"munder"],[o],e);s.isOver?o=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:n}]},e):o=L.makeVList({positionType:"bottom",positionData:l.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:l}]},e)}return L.makeSpan(["mord",s.isOver?"mover":"munder"],[o],e)},_5=(t,e)=>{var r=Lr.mathMLnode(t.label);return new ee.MathNode(t.isOver?"mover":"munder",[Xe(t.base,e),r])};oe({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:e[0]}},htmlBuilder:wd,mathmlBuilder:_5});oe({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[1],s=Re(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:s})?{type:"href",mode:r.mode,href:s,body:ct(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var r=pt(t.body,e,!1);return L.makeAnchor(t.href,[],r,e)},mathmlBuilder:(t,e)=>{var r=Jr(t.body,e);return r instanceof Bt||(r=new Bt("mrow",[r])),r.setAttribute("href",t.href),r}});oe({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=Re(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var s=[],i=0;i{var{parser:r,funcName:n,token:s}=t,i=Re(e[0],"raw").string,a=e[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var o,l={};switch(n){case"\\htmlClass":l.class=i,o={command:"\\htmlClass",class:i};break;case"\\htmlId":l.id=i,o={command:"\\htmlId",id:i};break;case"\\htmlStyle":l.style=i,o={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var c=i.split(","),d=0;d{var r=pt(t.body,e,!1),n=["enclosing"];t.attributes.class&&n.push(...t.attributes.class.trim().split(/\s+/));var s=L.makeSpan(n,r,e);for(var i in t.attributes)i!=="class"&&t.attributes.hasOwnProperty(i)&&s.setAttribute(i,t.attributes[i]);return s},mathmlBuilder:(t,e)=>Jr(t.body,e)});oe({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t;return{type:"htmlmathml",mode:r.mode,html:ct(e[0]),mathml:ct(e[1])}},htmlBuilder:(t,e)=>{var r=pt(t.html,e,!1);return L.makeFragment(r)},mathmlBuilder:(t,e)=>Jr(t.mathml,e)});var _i=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!r)throw new te("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!B1(n))throw new te("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};oe({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,r)=>{var{parser:n}=t,s={number:0,unit:"em"},i={number:.9,unit:"em"},a={number:0,unit:"em"},o="";if(r[0])for(var l=Re(r[0],"raw").string,c=l.split(","),d=0;d{var r=st(t.height,e),n=0;t.totalheight.number>0&&(n=st(t.totalheight,e)-r);var s=0;t.width.number>0&&(s=st(t.width,e));var i={height:ae(r+n)};s>0&&(i.width=ae(s)),n>0&&(i.verticalAlign=ae(-n));var a=new _6(t.src,t.alt,i);return a.height=r,a.depth=n,a},mathmlBuilder:(t,e)=>{var r=new ee.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var n=st(t.height,e),s=0;if(t.totalheight.number>0&&(s=st(t.totalheight,e)-n,r.setAttribute("valign",ae(-s))),r.setAttribute("height",ae(n+s)),t.width.number>0){var i=st(t.width,e);r.setAttribute("width",ae(i))}return r.setAttribute("src",t.src),r}});oe({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,s=Re(e[0],"size");if(r.settings.strict){var i=n[1]==="m",a=s.value.unit==="mu";i?(a||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+s.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):a&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:s.value}},htmlBuilder(t,e){return L.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var r=st(t.dimension,e);return new ee.SpaceNode(r)}});oe({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r,funcName:n}=t,s=e[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:s}},htmlBuilder:(t,e)=>{var r;t.alignment==="clap"?(r=L.makeSpan([],[$e(t.body,e)]),r=L.makeSpan(["inner"],[r],e)):r=L.makeSpan(["inner"],[$e(t.body,e)]);var n=L.makeSpan(["fix"],[]),s=L.makeSpan([t.alignment],[r,n],e),i=L.makeSpan(["strut"]);return i.style.height=ae(s.height+s.depth),s.depth&&(i.style.verticalAlign=ae(-s.depth)),s.children.unshift(i),s=L.makeSpan(["thinbox"],[s],e),L.makeSpan(["mord","vbox"],[s],e)},mathmlBuilder:(t,e)=>{var r=new ee.MathNode("mpadded",[Xe(t.body,e)]);if(t.alignment!=="rlap"){var n=t.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}});oe({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:r,parser:n}=t,s=n.mode;n.switchMode("math");var i=r==="\\("?"\\)":"$",a=n.parseExpression(!1,i);return n.expect(i),n.switchMode(s),{type:"styling",mode:n.mode,style:"text",body:a}}});oe({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new te("Mismatched "+t.funcName)}});var mc=(t,e)=>{switch(e.style.size){case ke.DISPLAY.size:return t.display;case ke.TEXT.size:return t.text;case ke.SCRIPT.size:return t.script;case ke.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};oe({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:r}=t;return{type:"mathchoice",mode:r.mode,display:ct(e[0]),text:ct(e[1]),script:ct(e[2]),scriptscript:ct(e[3])}},htmlBuilder:(t,e)=>{var r=mc(t,e),n=pt(r,e,!1);return L.makeFragment(n)},mathmlBuilder:(t,e)=>{var r=mc(t,e);return Jr(r,e)}});var xd=(t,e,r,n,s,i,a)=>{t=L.makeSpan([],[t]);var o=r&&we.isCharacterBox(r),l,c;if(e){var d=$e(e,n.havingStyle(s.sup()),n);c={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-d.depth)}}if(r){var f=$e(r,n.havingStyle(s.sub()),n);l={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-f.height)}}var p;if(c&&l){var b=n.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+t.depth+a;p=L.makeVList({positionType:"bottom",positionData:b,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:ae(-i)},{type:"kern",size:l.kern},{type:"elem",elem:t},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:ae(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(l){var v=t.height-a;p=L.makeVList({positionType:"top",positionData:v,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:ae(-i)},{type:"kern",size:l.kern},{type:"elem",elem:t}]},n)}else if(c){var x=t.depth+a;p=L.makeVList({positionType:"bottom",positionData:x,children:[{type:"elem",elem:t},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:ae(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else return t;var y=[p];if(l&&i!==0&&!o){var M=L.makeSpan(["mspace"],[],n);M.style.marginRight=ae(i),y.unshift(M)}return L.makeSpan(["mop","op-limits"],y,n)},kd=["\\smallint"],qn=(t,e)=>{var r,n,s=!1,i;t.type==="supsub"?(r=t.sup,n=t.sub,i=Re(t.base,"op"),s=!0):i=Re(t,"op");var a=e.style,o=!1;a.size===ke.DISPLAY.size&&i.symbol&&!we.contains(kd,i.name)&&(o=!0);var l;if(i.symbol){var c=o?"Size2-Regular":"Size1-Regular",d="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(d=i.name.slice(1),i.name=d==="oiint"?"\\iint":"\\iiint"),l=L.makeSymbol(i.name,c,"math",e,["mop","op-symbol",o?"large-op":"small-op"]),d.length>0){var f=l.italic,p=L.staticSvg(d+"Size"+(o?"2":"1"),e);l=L.makeVList({positionType:"individualShift",children:[{type:"elem",elem:l,shift:0},{type:"elem",elem:p,shift:o?.08:0}]},e),i.name="\\"+d,l.classes.unshift("mop"),l.italic=f}}else if(i.body){var b=pt(i.body,e,!0);b.length===1&&b[0]instanceof Yt?(l=b[0],l.classes[0]="mop"):l=L.makeSpan(["mop"],b,e)}else{for(var v=[],x=1;x{var r;if(t.symbol)r=new Bt("mo",[Xt(t.name,t.mode)]),we.contains(kd,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new Bt("mo",Lt(t.body,e));else{r=new Bt("mi",[new pr(t.name.slice(1))]);var n=new Bt("mo",[Xt("⁡","text")]);t.parentIsSupSub?r=new Bt("mrow",[r,n]):r=X1([r,n])}return r},O5={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};oe({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(t,e)=>{var{parser:r,funcName:n}=t,s=n;return s.length===1&&(s=O5[s]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:s}},htmlBuilder:qn,mathmlBuilder:E0});oe({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:ct(n)}},htmlBuilder:qn,mathmlBuilder:E0});var L5={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};oe({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:qn,mathmlBuilder:E0});oe({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:qn,mathmlBuilder:E0});oe({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t,n=r;return n.length===1&&(n=L5[n]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:qn,mathmlBuilder:E0});var Sd=(t,e)=>{var r,n,s=!1,i;t.type==="supsub"?(r=t.sup,n=t.sub,i=Re(t.base,"operatorname"),s=!0):i=Re(t,"operatorname");var a;if(i.body.length>0){for(var o=i.body.map(f=>{var p=f.text;return typeof p=="string"?{type:"textord",mode:f.mode,text:p}:f}),l=pt(o,e.withFont("mathrm"),!0),c=0;c{for(var r=Lt(t.body,e.withFont("mathrm")),n=!0,s=0;sd.toText()).join("");r=[new ee.TextNode(o)]}var l=new ee.MathNode("mi",r);l.setAttribute("mathvariant","normal");var c=new ee.MathNode("mo",[Xt("⁡","text")]);return t.parentIsSupSub?new ee.MathNode("mrow",[l,c]):ee.newDocumentFragment([l,c])};oe({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:r,funcName:n}=t,s=e[0];return{type:"operatorname",mode:r.mode,body:ct(s),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:Sd,mathmlBuilder:z5});g("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");bn({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?L.makeFragment(pt(t.body,e,!1)):L.makeSpan(["mord"],pt(t.body,e,!0),e)},mathmlBuilder(t,e){return Jr(t.body,e,!0)}});oe({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:r}=t,n=e[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(t,e){var r=$e(t.body,e.havingCrampedStyle()),n=L.makeLineSpan("overline-line",e),s=e.fontMetrics().defaultRuleThickness,i=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*s},{type:"elem",elem:n},{type:"kern",size:s}]},e);return L.makeSpan(["mord","overline"],[i],e)},mathmlBuilder(t,e){var r=new ee.MathNode("mo",[new ee.TextNode("‾")]);r.setAttribute("stretchy","true");var n=new ee.MathNode("mover",[Xe(t.body,e),r]);return n.setAttribute("accent","true"),n}});oe({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"phantom",mode:r.mode,body:ct(n)}},htmlBuilder:(t,e)=>{var r=pt(t.body,e.withPhantom(),!1);return L.makeFragment(r)},mathmlBuilder:(t,e)=>{var r=Lt(t.body,e);return new ee.MathNode("mphantom",r)}});oe({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"hphantom",mode:r.mode,body:n}},htmlBuilder:(t,e)=>{var r=L.makeSpan([],[$e(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n{var r=Lt(ct(t.body),e),n=new ee.MathNode("mphantom",r),s=new ee.MathNode("mpadded",[n]);return s.setAttribute("height","0px"),s.setAttribute("depth","0px"),s}});oe({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:(t,e)=>{var r=L.makeSpan(["inner"],[$e(t.body,e.withPhantom())]),n=L.makeSpan(["fix"],[]);return L.makeSpan(["mord","rlap"],[r,n],e)},mathmlBuilder:(t,e)=>{var r=Lt(ct(t.body),e),n=new ee.MathNode("mphantom",r),s=new ee.MathNode("mpadded",[n]);return s.setAttribute("width","0px"),s}});oe({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t,n=Re(e[0],"size").value,s=e[1];return{type:"raisebox",mode:r.mode,dy:n,body:s}},htmlBuilder(t,e){var r=$e(t.body,e),n=st(t.dy,e);return L.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){var r=new ee.MathNode("mpadded",[Xe(t.body,e)]),n=t.dy.number+t.dy.unit;return r.setAttribute("voffset",n),r}});oe({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});oe({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,r){var{parser:n}=t,s=r[0],i=Re(e[0],"size"),a=Re(e[1],"size");return{type:"rule",mode:n.mode,shift:s&&Re(s,"size").value,width:i.value,height:a.value}},htmlBuilder(t,e){var r=L.makeSpan(["mord","rule"],[],e),n=st(t.width,e),s=st(t.height,e),i=t.shift?st(t.shift,e):0;return r.style.borderRightWidth=ae(n),r.style.borderTopWidth=ae(s),r.style.bottom=ae(i),r.width=n,r.height=s+i,r.depth=-i,r.maxFontSize=s*1.125*e.sizeMultiplier,r},mathmlBuilder(t,e){var r=st(t.width,e),n=st(t.height,e),s=t.shift?st(t.shift,e):0,i=e.color&&e.getColor()||"black",a=new ee.MathNode("mspace");a.setAttribute("mathbackground",i),a.setAttribute("width",ae(r)),a.setAttribute("height",ae(n));var o=new ee.MathNode("mpadded",[a]);return s>=0?o.setAttribute("height",ae(s)):(o.setAttribute("height",ae(s)),o.setAttribute("depth",ae(-s))),o.setAttribute("voffset",ae(s)),o}});function Td(t,e,r){for(var n=pt(t,e,!1),s=e.sizeMultiplier/r.sizeMultiplier,i=0;i{var r=e.havingSize(t.size);return Td(t.body,r,e)};oe({type:"sizing",names:gc,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:r,funcName:n,parser:s}=t,i=s.parseExpression(!1,r);return{type:"sizing",mode:s.mode,size:gc.indexOf(n)+1,body:i}},htmlBuilder:F5,mathmlBuilder:(t,e)=>{var r=e.havingSize(t.size),n=Lt(t.body,r),s=new ee.MathNode("mstyle",n);return s.setAttribute("mathsize",ae(r.sizeMultiplier)),s}});oe({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,r)=>{var{parser:n}=t,s=!1,i=!1,a=r[0]&&Re(r[0],"ordgroup");if(a)for(var o="",l=0;l{var r=L.makeSpan([],[$e(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var n=0;n{var r=new ee.MathNode("mpadded",[Xe(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r}});oe({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n}=t,s=r[0],i=e[0];return{type:"sqrt",mode:n.mode,body:i,index:s}},htmlBuilder(t,e){var r=$e(t.body,e.havingCrampedStyle());r.height===0&&(r.height=e.fontMetrics().xHeight),r=L.wrapFragment(r,e);var n=e.fontMetrics(),s=n.defaultRuleThickness,i=s;e.style.idr.height+r.depth+a&&(a=(a+f-r.height-r.depth)/2);var p=l.height-r.height-a-c;r.style.paddingLeft=ae(d);var b=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:l},{type:"kern",size:c}]},e);if(t.index){var v=e.havingStyle(ke.SCRIPTSCRIPT),x=$e(t.index,v,e),y=.6*(b.height-b.depth),M=L.makeVList({positionType:"shift",positionData:-y,children:[{type:"elem",elem:x}]},e),k=L.makeSpan(["root"],[M]);return L.makeSpan(["mord","sqrt"],[k,b],e)}else return L.makeSpan(["mord","sqrt"],[b],e)},mathmlBuilder(t,e){var{body:r,index:n}=t;return n?new ee.MathNode("mroot",[Xe(r,e),Xe(n,e)]):new ee.MathNode("msqrt",[Xe(r,e)])}});var vc={display:ke.DISPLAY,text:ke.TEXT,script:ke.SCRIPT,scriptscript:ke.SCRIPTSCRIPT};oe({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:r,funcName:n,parser:s}=t,i=s.parseExpression(!0,r),a=n.slice(1,n.length-5);return{type:"styling",mode:s.mode,style:a,body:i}},htmlBuilder(t,e){var r=vc[t.style],n=e.havingStyle(r).withFont("");return Td(t.body,n,e)},mathmlBuilder(t,e){var r=vc[t.style],n=e.havingStyle(r),s=Lt(t.body,n),i=new ee.MathNode("mstyle",s),a={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},o=a[t.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});var $5=function(e,r){var n=e.base;if(n)if(n.type==="op"){var s=n.limits&&(r.style.size===ke.DISPLAY.size||n.alwaysHandleSupSub);return s?qn:null}else if(n.type==="operatorname"){var i=n.alwaysHandleSupSub&&(r.style.size===ke.DISPLAY.size||n.limits);return i?Sd:null}else{if(n.type==="accent")return we.isCharacterBox(n.base)?xo:null;if(n.type==="horizBrace"){var a=!e.sub;return a===n.isOver?wd:null}else return null}else return null};bn({type:"supsub",htmlBuilder(t,e){var r=$5(t,e);if(r)return r(t,e);var{base:n,sup:s,sub:i}=t,a=$e(n,e),o,l,c=e.fontMetrics(),d=0,f=0,p=n&&we.isCharacterBox(n);if(s){var b=e.havingStyle(e.style.sup());o=$e(s,b,e),p||(d=a.height-b.fontMetrics().supDrop*b.sizeMultiplier/e.sizeMultiplier)}if(i){var v=e.havingStyle(e.style.sub());l=$e(i,v,e),p||(f=a.depth+v.fontMetrics().subDrop*v.sizeMultiplier/e.sizeMultiplier)}var x;e.style===ke.DISPLAY?x=c.sup1:e.style.cramped?x=c.sup3:x=c.sup2;var y=e.sizeMultiplier,M=ae(.5/c.ptPerEm/y),k=null;if(l){var T=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(a instanceof Yt||T)&&(k=ae(-a.italic))}var N;if(o&&l){d=Math.max(d,x,o.depth+.25*c.xHeight),f=Math.max(f,c.sub2);var I=c.defaultRuleThickness,O=4*I;if(d-o.depth-(l.height-f)0&&(d+=z,f-=z)}var W=[{type:"elem",elem:l,shift:f,marginRight:M,marginLeft:k},{type:"elem",elem:o,shift:-d,marginRight:M}];N=L.makeVList({positionType:"individualShift",children:W},e)}else if(l){f=Math.max(f,c.sub1,l.height-.8*c.xHeight);var U=[{type:"elem",elem:l,marginLeft:k,marginRight:M}];N=L.makeVList({positionType:"shift",positionData:f,children:U},e)}else if(o)d=Math.max(d,x,o.depth+.25*c.xHeight),N=L.makeVList({positionType:"shift",positionData:-d,children:[{type:"elem",elem:o,marginRight:M}]},e);else throw new Error("supsub must have either sup or sub.");var he=pa(a,"right")||"mord";return L.makeSpan([he],[a,L.makeSpan(["msupsub"],[N])],e)},mathmlBuilder(t,e){var r=!1,n,s;t.base&&t.base.type==="horizBrace"&&(s=!!t.sup,s===t.base.isOver&&(r=!0,n=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var i=[Xe(t.base,e)];t.sub&&i.push(Xe(t.sub,e)),t.sup&&i.push(Xe(t.sup,e));var a;if(r)a=n?"mover":"munder";else if(t.sub)if(t.sup){var c=t.base;c&&c.type==="op"&&c.limits&&e.style===ke.DISPLAY||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(e.style===ke.DISPLAY||c.limits)?a="munderover":a="msubsup"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===ke.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===ke.DISPLAY)?a="munder":a="msub"}else{var o=t.base;o&&o.type==="op"&&o.limits&&(e.style===ke.DISPLAY||o.alwaysHandleSupSub)||o&&o.type==="operatorname"&&o.alwaysHandleSupSub&&(o.limits||e.style===ke.DISPLAY)?a="mover":a="msup"}return new ee.MathNode(a,i)}});bn({type:"atom",htmlBuilder(t,e){return L.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var r=new ee.MathNode("mo",[Xt(t.text,t.mode)]);if(t.family==="bin"){var n=yo(t,e);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else t.family==="punct"?r.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&r.setAttribute("stretchy","false");return r}});var Ad={mi:"italic",mn:"normal",mtext:"normal"};bn({type:"mathord",htmlBuilder(t,e){return L.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var r=new ee.MathNode("mi",[Xt(t.text,t.mode,e)]),n=yo(t,e)||"italic";return n!==Ad[r.type]&&r.setAttribute("mathvariant",n),r}});bn({type:"textord",htmlBuilder(t,e){return L.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var r=Xt(t.text,t.mode,e),n=yo(t,e)||"normal",s;return t.mode==="text"?s=new ee.MathNode("mtext",[r]):/[0-9]/.test(t.text)?s=new ee.MathNode("mn",[r]):t.text==="\\prime"?s=new ee.MathNode("mo",[r]):s=new ee.MathNode("mi",[r]),n!==Ad[s.type]&&s.setAttribute("mathvariant",n),s}});var Oi={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Li={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};bn({type:"spacing",htmlBuilder(t,e){if(Li.hasOwnProperty(t.text)){var r=Li[t.text].className||"";if(t.mode==="text"){var n=L.makeOrd(t,e,"textord");return n.classes.push(r),n}else return L.makeSpan(["mspace",r],[L.mathsym(t.text,t.mode,e)],e)}else{if(Oi.hasOwnProperty(t.text))return L.makeSpan(["mspace",Oi[t.text]],[],e);throw new te('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var r;if(Li.hasOwnProperty(t.text))r=new ee.MathNode("mtext",[new ee.TextNode(" ")]);else{if(Oi.hasOwnProperty(t.text))return new ee.MathNode("mspace");throw new te('Unknown type of space "'+t.text+'"')}return r}});var bc=()=>{var t=new ee.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};bn({type:"tag",mathmlBuilder(t,e){var r=new ee.MathNode("mtable",[new ee.MathNode("mtr",[bc(),new ee.MathNode("mtd",[Jr(t.body,e)]),bc(),new ee.MathNode("mtd",[Jr(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});var yc={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},wc={"\\textbf":"textbf","\\textmd":"textmd"},B5={"\\textit":"textit","\\textup":"textup"},xc=(t,e)=>{var r=t.font;if(r){if(yc[r])return e.withTextFontFamily(yc[r]);if(wc[r])return e.withTextFontWeight(wc[r]);if(r==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(B5[r])};oe({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,s=e[0];return{type:"text",mode:r.mode,body:ct(s),font:n}},htmlBuilder(t,e){var r=xc(t,e),n=pt(t.body,r,!0);return L.makeSpan(["mord","text"],n,r)},mathmlBuilder(t,e){var r=xc(t,e);return Jr(t.body,r)}});oe({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"underline",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=$e(t.body,e),n=L.makeLineSpan("underline-line",e),s=e.fontMetrics().defaultRuleThickness,i=L.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:s},{type:"elem",elem:n},{type:"kern",size:3*s},{type:"elem",elem:r}]},e);return L.makeSpan(["mord","underline"],[i],e)},mathmlBuilder(t,e){var r=new ee.MathNode("mo",[new ee.TextNode("‾")]);r.setAttribute("stretchy","true");var n=new ee.MathNode("munder",[Xe(t.body,e),r]);return n.setAttribute("accentunder","true"),n}});oe({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"vcenter",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=$e(t.body,e),n=e.fontMetrics().axisHeight,s=.5*(r.height-n-(r.depth+n));return L.makeVList({positionType:"shift",positionData:s,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){return new ee.MathNode("mpadded",[Xe(t.body,e)],["vcenter"])}});oe({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,r){throw new te("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var r=kc(t),n=[],s=e.havingStyle(e.style.text()),i=0;it.body.replace(/ /g,t.star?"␣":" "),Ur=K1,Ed=`[ \r + ]`,P5="\\\\[a-zA-Z@]+",H5="\\\\[^\uD800-\uDFFF]",q5="("+P5+")"+Ed+"*",j5=`\\\\( +|[ \r ]+ +?)[ \r ]*`,ba="[̀-ͯ]",U5=new RegExp(ba+"+$"),V5="("+Ed+"+)|"+(j5+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(ba+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(ba+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+q5)+("|"+H5+")");class Sc{constructor(e,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=r,this.tokenRegex=new RegExp(V5,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,r){this.catcodes[e]=r}lex(){var e=this.input,r=this.tokenRegex.lastIndex;if(r===e.length)return new Kt("EOF",new Ft(this,r,r));var n=this.tokenRegex.exec(e);if(n===null||n.index!==r)throw new te("Unexpected character: '"+e[r]+"'",new Kt(e[r],new Ft(this,r,r+1)));var s=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[s]===14){var i=e.indexOf(` +`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new Kt(s,new Ft(this,r,this.tokenRegex.lastIndex))}}class W5{constructor(e,r){e===void 0&&(e={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new te("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var r in e)e.hasOwnProperty(r)&&(e[r]==null?delete this.current[r]:this.current[r]=e[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,r,n){if(n===void 0&&(n=!1),n){for(var s=0;s0&&(this.undefStack[this.undefStack.length-1][e]=r)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(e)&&(i[e]=this.current[e])}r==null?delete this.current[e]:this.current[e]=r}}var G5=md;g("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});g("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});g("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});g("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});g("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var r=t.future();return e[0].length===1&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});g("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");g("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var Tc={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};g("\\char",function(t){var e=t.popToken(),r,n="";if(e.text==="'")r=8,e=t.popToken();else if(e.text==='"')r=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")n=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new te("\\char` missing argument");n=e.text.charCodeAt(0)}else r=10;if(r){if(n=Tc[e.text],n==null||n>=r)throw new te("Invalid base-"+r+" digit "+e.text);for(var s;(s=Tc[t.future().text])!=null&&s{var s=t.consumeArg().tokens;if(s.length!==1)throw new te("\\newcommand's first argument must be a macro name");var i=s[0].text,a=t.isDefined(i);if(a&&!e)throw new te("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!r)throw new te("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var o=0;if(s=t.consumeArg().tokens,s.length===1&&s[0].text==="["){for(var l="",c=t.expandNextToken();c.text!=="]"&&c.text!=="EOF";)l+=c.text,c=t.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new te("Invalid number of arguments: "+l);o=parseInt(l),s=t.consumeArg().tokens}return a&&n||t.macros.set(i,{tokens:s,numArgs:o}),""};g("\\newcommand",t=>No(t,!1,!0,!1));g("\\renewcommand",t=>No(t,!0,!1,!1));g("\\providecommand",t=>No(t,!0,!0,!0));g("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(r=>r.text).join("")),""});g("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(r=>r.text).join("")),""});g("\\show",t=>{var e=t.popToken(),r=e.text;return console.log(e,t.macros.get(r),Ur[r],Qe.math[r],Qe.text[r]),""});g("\\bgroup","{");g("\\egroup","}");g("~","\\nobreakspace");g("\\lq","`");g("\\rq","'");g("\\aa","\\r a");g("\\AA","\\r A");g("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");g("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");g("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");g("ℬ","\\mathscr{B}");g("ℰ","\\mathscr{E}");g("ℱ","\\mathscr{F}");g("ℋ","\\mathscr{H}");g("ℐ","\\mathscr{I}");g("ℒ","\\mathscr{L}");g("ℳ","\\mathscr{M}");g("ℛ","\\mathscr{R}");g("ℭ","\\mathfrak{C}");g("ℌ","\\mathfrak{H}");g("ℨ","\\mathfrak{Z}");g("\\Bbbk","\\Bbb{k}");g("·","\\cdotp");g("\\llap","\\mathllap{\\textrm{#1}}");g("\\rlap","\\mathrlap{\\textrm{#1}}");g("\\clap","\\mathclap{\\textrm{#1}}");g("\\mathstrut","\\vphantom{(}");g("\\underbar","\\underline{\\text{#1}}");g("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');g("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");g("\\ne","\\neq");g("≠","\\neq");g("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");g("∉","\\notin");g("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");g("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");g("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");g("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");g("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");g("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");g("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");g("⟂","\\perp");g("‼","\\mathclose{!\\mkern-0.8mu!}");g("∌","\\notni");g("⌜","\\ulcorner");g("⌝","\\urcorner");g("⌞","\\llcorner");g("⌟","\\lrcorner");g("©","\\copyright");g("®","\\textregistered");g("️","\\textregistered");g("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');g("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');g("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');g("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');g("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");g("⋮","\\vdots");g("\\varGamma","\\mathit{\\Gamma}");g("\\varDelta","\\mathit{\\Delta}");g("\\varTheta","\\mathit{\\Theta}");g("\\varLambda","\\mathit{\\Lambda}");g("\\varXi","\\mathit{\\Xi}");g("\\varPi","\\mathit{\\Pi}");g("\\varSigma","\\mathit{\\Sigma}");g("\\varUpsilon","\\mathit{\\Upsilon}");g("\\varPhi","\\mathit{\\Phi}");g("\\varPsi","\\mathit{\\Psi}");g("\\varOmega","\\mathit{\\Omega}");g("\\substack","\\begin{subarray}{c}#1\\end{subarray}");g("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");g("\\boxed","\\fbox{$\\displaystyle{#1}$}");g("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");g("\\implies","\\DOTSB\\;\\Longrightarrow\\;");g("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");g("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");g("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var Ac={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};g("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in Ac?e=Ac[r]:(r.slice(0,4)==="\\not"||r in Qe.math&&we.contains(["bin","rel"],Qe.math[r].group))&&(e="\\dotsb"),e});var Do={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};g("\\dotso",function(t){var e=t.future().text;return e in Do?"\\ldots\\,":"\\ldots"});g("\\dotsc",function(t){var e=t.future().text;return e in Do&&e!==","?"\\ldots\\,":"\\ldots"});g("\\cdots",function(t){var e=t.future().text;return e in Do?"\\@cdots\\,":"\\@cdots"});g("\\dotsb","\\cdots");g("\\dotsm","\\cdots");g("\\dotsi","\\!\\cdots");g("\\dotsx","\\ldots\\,");g("\\DOTSI","\\relax");g("\\DOTSB","\\relax");g("\\DOTSX","\\relax");g("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");g("\\,","\\tmspace+{3mu}{.1667em}");g("\\thinspace","\\,");g("\\>","\\mskip{4mu}");g("\\:","\\tmspace+{4mu}{.2222em}");g("\\medspace","\\:");g("\\;","\\tmspace+{5mu}{.2777em}");g("\\thickspace","\\;");g("\\!","\\tmspace-{3mu}{.1667em}");g("\\negthinspace","\\!");g("\\negmedspace","\\tmspace-{4mu}{.2222em}");g("\\negthickspace","\\tmspace-{5mu}{.277em}");g("\\enspace","\\kern.5em ");g("\\enskip","\\hskip.5em\\relax");g("\\quad","\\hskip1em\\relax");g("\\qquad","\\hskip2em\\relax");g("\\tag","\\@ifstar\\tag@literal\\tag@paren");g("\\tag@paren","\\tag@literal{({#1})}");g("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new te("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});g("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");g("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");g("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");g("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");g("\\newline","\\\\\\relax");g("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Cd=ae(fr["Main-Regular"]["T".charCodeAt(0)][1]-.7*fr["Main-Regular"]["A".charCodeAt(0)][1]);g("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+Cd+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");g("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+Cd+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");g("\\hspace","\\@ifstar\\@hspacer\\@hspace");g("\\@hspace","\\hskip #1\\relax");g("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");g("\\ordinarycolon",":");g("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");g("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');g("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');g("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');g("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');g("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');g("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');g("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');g("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');g("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');g("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');g("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');g("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');g("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');g("∷","\\dblcolon");g("∹","\\eqcolon");g("≔","\\coloneqq");g("≕","\\eqqcolon");g("⩴","\\Coloneqq");g("\\ratio","\\vcentcolon");g("\\coloncolon","\\dblcolon");g("\\colonequals","\\coloneqq");g("\\coloncolonequals","\\Coloneqq");g("\\equalscolon","\\eqqcolon");g("\\equalscoloncolon","\\Eqqcolon");g("\\colonminus","\\coloneq");g("\\coloncolonminus","\\Coloneq");g("\\minuscolon","\\eqcolon");g("\\minuscoloncolon","\\Eqcolon");g("\\coloncolonapprox","\\Colonapprox");g("\\coloncolonsim","\\Colonsim");g("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");g("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");g("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");g("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");g("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");g("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");g("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");g("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");g("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");g("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");g("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");g("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");g("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");g("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");g("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");g("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");g("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");g("\\nleqq","\\html@mathml{\\@nleqq}{≰}");g("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");g("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");g("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");g("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");g("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");g("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");g("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");g("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");g("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");g("\\imath","\\html@mathml{\\@imath}{ı}");g("\\jmath","\\html@mathml{\\@jmath}{ȷ}");g("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");g("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");g("⟦","\\llbracket");g("⟧","\\rrbracket");g("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");g("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");g("⦃","\\lBrace");g("⦄","\\rBrace");g("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");g("⦵","\\minuso");g("\\darr","\\downarrow");g("\\dArr","\\Downarrow");g("\\Darr","\\Downarrow");g("\\lang","\\langle");g("\\rang","\\rangle");g("\\uarr","\\uparrow");g("\\uArr","\\Uparrow");g("\\Uarr","\\Uparrow");g("\\N","\\mathbb{N}");g("\\R","\\mathbb{R}");g("\\Z","\\mathbb{Z}");g("\\alef","\\aleph");g("\\alefsym","\\aleph");g("\\Alpha","\\mathrm{A}");g("\\Beta","\\mathrm{B}");g("\\bull","\\bullet");g("\\Chi","\\mathrm{X}");g("\\clubs","\\clubsuit");g("\\cnums","\\mathbb{C}");g("\\Complex","\\mathbb{C}");g("\\Dagger","\\ddagger");g("\\diamonds","\\diamondsuit");g("\\empty","\\emptyset");g("\\Epsilon","\\mathrm{E}");g("\\Eta","\\mathrm{H}");g("\\exist","\\exists");g("\\harr","\\leftrightarrow");g("\\hArr","\\Leftrightarrow");g("\\Harr","\\Leftrightarrow");g("\\hearts","\\heartsuit");g("\\image","\\Im");g("\\infin","\\infty");g("\\Iota","\\mathrm{I}");g("\\isin","\\in");g("\\Kappa","\\mathrm{K}");g("\\larr","\\leftarrow");g("\\lArr","\\Leftarrow");g("\\Larr","\\Leftarrow");g("\\lrarr","\\leftrightarrow");g("\\lrArr","\\Leftrightarrow");g("\\Lrarr","\\Leftrightarrow");g("\\Mu","\\mathrm{M}");g("\\natnums","\\mathbb{N}");g("\\Nu","\\mathrm{N}");g("\\Omicron","\\mathrm{O}");g("\\plusmn","\\pm");g("\\rarr","\\rightarrow");g("\\rArr","\\Rightarrow");g("\\Rarr","\\Rightarrow");g("\\real","\\Re");g("\\reals","\\mathbb{R}");g("\\Reals","\\mathbb{R}");g("\\Rho","\\mathrm{P}");g("\\sdot","\\cdot");g("\\sect","\\S");g("\\spades","\\spadesuit");g("\\sub","\\subset");g("\\sube","\\subseteq");g("\\supe","\\supseteq");g("\\Tau","\\mathrm{T}");g("\\thetasym","\\vartheta");g("\\weierp","\\wp");g("\\Zeta","\\mathrm{Z}");g("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");g("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");g("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");g("\\bra","\\mathinner{\\langle{#1}|}");g("\\ket","\\mathinner{|{#1}\\rangle}");g("\\braket","\\mathinner{\\langle{#1}\\rangle}");g("\\Bra","\\left\\langle#1\\right|");g("\\Ket","\\left|#1\\right\\rangle");var Md=t=>e=>{var r=e.consumeArg().tokens,n=e.consumeArg().tokens,s=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.macros.get("|"),o=e.macros.get("\\|");e.macros.beginGroup();var l=f=>p=>{t&&(p.macros.set("|",a),s.length&&p.macros.set("\\|",o));var b=f;if(!f&&s.length){var v=p.future();v.text==="|"&&(p.popToken(),b=!0)}return{tokens:b?s:n,numArgs:0}};e.macros.set("|",l(!1)),s.length&&e.macros.set("\\|",l(!0));var c=e.consumeArg().tokens,d=e.expandTokens([...i,...c,...r]);return e.macros.endGroup(),{tokens:d.reverse(),numArgs:0}};g("\\bra@ket",Md(!1));g("\\bra@set",Md(!0));g("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");g("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");g("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");g("\\angln","{\\angl n}");g("\\blue","\\textcolor{##6495ed}{#1}");g("\\orange","\\textcolor{##ffa500}{#1}");g("\\pink","\\textcolor{##ff00af}{#1}");g("\\red","\\textcolor{##df0030}{#1}");g("\\green","\\textcolor{##28ae7b}{#1}");g("\\gray","\\textcolor{gray}{#1}");g("\\purple","\\textcolor{##9d38bd}{#1}");g("\\blueA","\\textcolor{##ccfaff}{#1}");g("\\blueB","\\textcolor{##80f6ff}{#1}");g("\\blueC","\\textcolor{##63d9ea}{#1}");g("\\blueD","\\textcolor{##11accd}{#1}");g("\\blueE","\\textcolor{##0c7f99}{#1}");g("\\tealA","\\textcolor{##94fff5}{#1}");g("\\tealB","\\textcolor{##26edd5}{#1}");g("\\tealC","\\textcolor{##01d1c1}{#1}");g("\\tealD","\\textcolor{##01a995}{#1}");g("\\tealE","\\textcolor{##208170}{#1}");g("\\greenA","\\textcolor{##b6ffb0}{#1}");g("\\greenB","\\textcolor{##8af281}{#1}");g("\\greenC","\\textcolor{##74cf70}{#1}");g("\\greenD","\\textcolor{##1fab54}{#1}");g("\\greenE","\\textcolor{##0d923f}{#1}");g("\\goldA","\\textcolor{##ffd0a9}{#1}");g("\\goldB","\\textcolor{##ffbb71}{#1}");g("\\goldC","\\textcolor{##ff9c39}{#1}");g("\\goldD","\\textcolor{##e07d10}{#1}");g("\\goldE","\\textcolor{##a75a05}{#1}");g("\\redA","\\textcolor{##fca9a9}{#1}");g("\\redB","\\textcolor{##ff8482}{#1}");g("\\redC","\\textcolor{##f9685d}{#1}");g("\\redD","\\textcolor{##e84d39}{#1}");g("\\redE","\\textcolor{##bc2612}{#1}");g("\\maroonA","\\textcolor{##ffbde0}{#1}");g("\\maroonB","\\textcolor{##ff92c6}{#1}");g("\\maroonC","\\textcolor{##ed5fa6}{#1}");g("\\maroonD","\\textcolor{##ca337c}{#1}");g("\\maroonE","\\textcolor{##9e034e}{#1}");g("\\purpleA","\\textcolor{##ddd7ff}{#1}");g("\\purpleB","\\textcolor{##c6b9fc}{#1}");g("\\purpleC","\\textcolor{##aa87ff}{#1}");g("\\purpleD","\\textcolor{##7854ab}{#1}");g("\\purpleE","\\textcolor{##543b78}{#1}");g("\\mintA","\\textcolor{##f5f9e8}{#1}");g("\\mintB","\\textcolor{##edf2df}{#1}");g("\\mintC","\\textcolor{##e0e5cc}{#1}");g("\\grayA","\\textcolor{##f6f7f7}{#1}");g("\\grayB","\\textcolor{##f0f1f2}{#1}");g("\\grayC","\\textcolor{##e3e5e6}{#1}");g("\\grayD","\\textcolor{##d6d8da}{#1}");g("\\grayE","\\textcolor{##babec2}{#1}");g("\\grayF","\\textcolor{##888d93}{#1}");g("\\grayG","\\textcolor{##626569}{#1}");g("\\grayH","\\textcolor{##3b3e40}{#1}");g("\\grayI","\\textcolor{##21242c}{#1}");g("\\kaBlue","\\textcolor{##314453}{#1}");g("\\kaGreen","\\textcolor{##71B307}{#1}");var Nd={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class K5{constructor(e,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(e),this.macros=new W5(G5,r.macros),this.mode=n,this.stack=[]}feed(e){this.lexer=new Sc(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var r,n,s;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:s,end:n}=this.consumeArg(["]"])}else({tokens:s,start:r,end:n}=this.consumeArg());return this.pushToken(new Kt("EOF",n.loc)),this.pushTokens(s),r.range(n,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var r=[],n=e&&e.length>0;n||this.consumeSpaces();var s=this.future(),i,a=0,o=0;do{if(i=this.popToken(),r.push(i),i.text==="{")++a;else if(i.text==="}"){if(--a,a===-1)throw new te("Extra }",i)}else if(i.text==="EOF")throw new te("Unexpected end of input in a macro argument, expected '"+(e&&n?e[o]:"}")+"'",i);if(e&&n)if((a===0||a===1&&e[o]==="{")&&i.text===e[o]){if(++o,o===e.length){r.splice(-o,o);break}}else o=0}while(a!==0||n);return s.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:s,end:i}}consumeArgs(e,r){if(r){if(r.length!==e+1)throw new te("The length of delimiters doesn't match the number of args!");for(var n=r[0],s=0;sthis.settings.maxExpand)throw new te("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var r=this.popToken(),n=r.text,s=r.noexpand?null:this._getExpansion(n);if(s==null||e&&s.unexpandable){if(e&&s==null&&n[0]==="\\"&&!this.isDefined(n))throw new te("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var i=s.tokens,a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){i=i.slice();for(var o=i.length-1;o>=0;--o){var l=i[o];if(l.text==="#"){if(o===0)throw new te("Incomplete placeholder at end of macro body",l);if(l=i[--o],l.text==="#")i.splice(o+1,1);else if(/^[1-9]$/.test(l.text))i.splice(o,2,...a[+l.text-1]);else throw new te("Not a valid argument number",l)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Kt(e)]):void 0}expandTokens(e){var r=[],n=this.stack.length;for(this.pushTokens(e);this.stack.length>n;)if(this.expandOnce(!0)===!1){var s=this.stack.pop();s.treatAsRelax&&(s.noexpand=!1,s.treatAsRelax=!1),r.push(s)}return this.countExpansion(r.length),r}expandMacroAsText(e){var r=this.expandMacro(e);return r&&r.map(n=>n.text).join("")}_getExpansion(e){var r=this.macros.get(e);if(r==null)return r;if(e.length===1){var n=this.lexer.catcodes[e];if(n!=null&&n!==13)return}var s=typeof r=="function"?r(this):r;if(typeof s=="string"){var i=0;if(s.indexOf("#")!==-1)for(var a=s.replace(/##/g,"");a.indexOf("#"+(i+1))!==-1;)++i;for(var o=new Sc(s,this.settings),l=[],c=o.lex();c.text!=="EOF";)l.push(c),c=o.lex();l.reverse();var d={tokens:l,numArgs:i};return d}return s}isDefined(e){return this.macros.has(e)||Ur.hasOwnProperty(e)||Qe.math.hasOwnProperty(e)||Qe.text.hasOwnProperty(e)||Nd.hasOwnProperty(e)}isExpandable(e){var r=this.macros.get(e);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:Ur.hasOwnProperty(e)&&!Ur[e].primitive}}var Ec=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,W0=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),zi={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},Cc={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class si{constructor(e,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new K5(e,r,this.mode),this.settings=r,this.leftrightDepth=0}expect(e,r){if(r===void 0&&(r=!0),this.fetch().text!==e)throw new te("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var r=this.nextToken;this.consume(),this.gullet.pushToken(new Kt("}")),this.gullet.pushTokens(e);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(e,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var s=this.fetch();if(si.endOfExpression.indexOf(s.text)!==-1||r&&s.text===r||e&&Ur[s.text]&&Ur[s.text].infix)break;var i=this.parseAtom(r);if(i){if(i.type==="internal")continue}else break;n.push(i)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(e){for(var r=-1,n,s=0;s=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',e);var o=Qe[this.mode][r].group,l=Ft.range(e),c;if(z6.hasOwnProperty(o)){var d=o;c={type:"atom",mode:this.mode,family:d,loc:l,text:r}}else c={type:o,mode:this.mode,loc:l,text:r};a=c}else if(r.charCodeAt(0)>=128)this.settings.strict&&($1(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),e)),a={type:"textord",mode:"text",loc:Ft.range(e),text:r};else return null;if(this.consume(),i)for(var f=0;f|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));Prism.languages.js=Prism.languages.javascript;(function(t){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;t.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+e.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},t.languages.css.atrule.inside.rest=t.languages.css;var r=t.languages.markup;r&&(r.tag.addInlined("style","css"),r.tag.addAttribute("style","css"))})(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};Prism.languages.webmanifest=Prism.languages.json;Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/};Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python;Prism.languages.py=Prism.languages.python;Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/};qe.setOptions({breaks:!0,gfm:!0,tables:!0,sanitize:!1});const ya=t=>{if(!t||typeof t!="string")return"";try{const e=e7(t),r=qe.parse(e);return t7(r)}catch(e){return console.error("Markdown渲染失败:",e),`
    渲染失败: ${e.message}
    `}},e7=t=>t.replace(/\$\$([\s\S]*?)\$\$/g,(e,r)=>{try{return`
    ${Mc.renderToString(r.trim(),{displayMode:!0,throwOnError:!1})}
    `}catch(n){return console.warn("数学公式渲染失败:",n),`
    数学公式错误: ${r}
    `}}).replace(/\$([^$\n]+?)\$/g,(e,r)=>{if(r.includes("\\")||r.includes("{")||r.includes("}")||r.includes("^")||r.includes("_")||r.includes("=")||r.includes("+")||r.includes("-")||r.includes("*")||r.includes("/")||r.includes("(")||r.includes(")"))try{return`${Mc.renderToString(r.trim(),{displayMode:!1,throwOnError:!1})}`}catch(n){return console.warn("数学公式渲染失败:",n),`数学公式错误: ${r}`}return e}),t7=t=>{let e=t.replace(//g,'
    ').replace(/
    {const i=s.className.match(/language-(\w+)/);if(i)try{s.innerHTML=Gl.highlight(s.textContent,Gl.languages[i[1]],i[1])}catch(a){console.warn("语法高亮失败:",a)}}),r.innerHTML},r7=t=>{if(!t||typeof t!="string")return!1;const e=t.split(`
    +`);let r=!1,n=!1;for(const a of e){const o=a.trim();o.includes("|")&&o.split("|").length>=3&&(r=!0),o.includes("|")&&o.includes("-")&&/^[\s\|\-\:]+$/.test(o)&&(n=!0)}const s=(t.match(/\|/g)||[]).length,i=s>=6;return r&&n||r&&i||r&&s>=4},n7=t=>!t||typeof t!="string"?!1:r7(t)?!0:[/#{1,6}\s+/,/\*\*.*?\*\*/,/\*.*?\*/,/`.*?`/,/```[\s\S]*?```/,/^\s*[-*+]\s+/m,/^\s*\d+\.\s+/m,/\[.*?\]\(.*?\)/,/!\[.*?\]\(.*?\)/,/\$\$.*?\$\$/,/\$.*?\$/].some(r=>r.test(t)),G0=t=>!t||typeof t!="string"?t||"":n7(t)||t.includes("|")?ya(t):t;const _o=(t,e)=>{const r=t.__vccOpts||t;for(const[n,s]of e)r[n]=s;return r},s7={class:"mindmap-container"},i7={key:0,class:"welcome-page"},a7={class:"ai-input-content"},o7=["disabled","onKeydown"],l7={class:"ai-input-actions"},c7=["disabled"],u7=["disabled"],d7={key:0},h7={key:1},f7={key:3,class:"save-controls"},p7={__name:"MindMap",setup(t,{expose:e}){const r=ze(null),n=ze(null),s=ze(null),i=ze({}),a=ze({}),o=ze(null),l=ze(1),c=ze(!0),d=ze(!1),f=ze(!1),p=ze(null),b=ze(""),v=ze(!1);ze(new Map),ze(!1),ze({x:0,y:0}),ze(null);const x=()=>{c.value=!0,r.value&&(r.value.innerHTML=""),n.value&&(n.value=null)},y=()=>{c.value=!1},M=()=>{c.value=!1},k=()=>{if(!n.value||!r.value)return null;try{const w=r.value.querySelector(".map-canvas");if(w){const E=w.style.transform,_=n.value.scaleVal||1;return console.log("📍 保存位置:",{transform:E,scaleVal:_}),{transform:E,scaleVal:_}}}catch(w){console.warn("保存位置失败:",w)}return null},T=w=>{if(!(!w||!r.value||!n.value))try{const E=r.value.querySelector(".map-canvas");E&&w.transform&&(E.style.setProperty("transform",w.transform,"important"),w.scaleVal&&n.value.scaleVal!==w.scaleVal&&(n.value.scaleVal=w.scaleVal),E.style.setProperty("transform-origin","center center","important"),console.log("📍 恢复位置:",{transform:w.transform,scaleVal:w.scaleVal}))}catch(E){console.warn("恢复位置失败:",E)}},N=async(w,E=!1,_=!0)=>{try{const P=E?k():null;P?console.log("📍 保存当前位置用于保持原位:",P):!E&&!_&&console.log("📍 添加节点模式:不保存位置,等待居中到新节点"),console.log("🔍 loadMindmapData 被调用,数据:",w),console.log("🔍 数据字段:",Object.keys(w||{})),w&&w.id?(o.value=w.id,console.log("🔍 设置当前思维导图ID (data.id):",w.id)):w&&w.mindmapId?(o.value=w.mindmapId,console.log("🔍 设置当前思维导图ID (data.mindmapId):",w.mindmapId)):w&&w.nodeData&&w.nodeData.mindmapId?(o.value=w.nodeData.mindmapId,console.log("🔍 设置当前思维导图ID (data.nodeData.mindmapId):",w.nodeData.mindmapId)):w&&w.nodeData&&w.nodeData.mindmap_id?(o.value=w.nodeData.mindmap_id,console.log("🔍 设置当前思维导图ID (data.nodeData.mindmap_id):",w.nodeData.mindmap_id)):(console.warn("⚠️ 数据中没有找到 id 或 mindmapId 字段"),console.log("🔍 可用的字段:",Object.keys(w||{})),w&&w.nodeData&&console.log("🔍 nodeData字段:",Object.keys(w.nodeData||{}))),console.log("🔍 设置后的 currentMindmapId.value:",o.value),y(),await Y0(),r.value||(console.warn("⚠️ 思维导图容器未准备好,等待DOM更新..."),await new Promise(Z=>setTimeout(Z,100)),r.value||console.warn("⚠️ 思维导图容器仍未准备好,尝试继续执行..."));try{if(r.value){console.log("🔍 创建Mind Elixir实例,设置markdown函数"),n.value=new vt({el:r.value,direction:vt.RIGHT,draggable:!0,contextMenu:!1,toolBar:!0,nodeMenu:!1,keypress:!1,autoCenter:!1,infinite:!0,maxScale:5,minScale:.1,markdown:(J,$)=>{if(console.log("🔍 Mind Elixir markdown函数被调用:",J.substring(0,100)+"..."),J.includes("|")||J.includes("**")||J.includes("`")||J.includes("#")){console.log("🎨 检测到markdown内容,开始渲染:",J.substring(0,100)+"...");const ue=G0(J);return console.log("🎨 渲染结果:",ue.substring(0,200)+"..."),ue}return console.log("🔍 内容不包含markdown语法,返回原文本"),J}}),console.log("✅ Mind Elixir实例创建完成,markdown函数已设置"),console.log("🔍 初始化Mind Elixir数据:",w);const Z=n.value.init(w);console.log("✅ Mind Elixir实例创建成功,初始化结果:",Z),P?(T(P),console.log("📍 初始化后立即恢复位置"),setTimeout(()=>{T(P),console.log("📍 二次确认位置恢复")},100)):!E&&!_&&console.log("📍 跳过根节点居中,等待居中新节点")}else{console.warn("⚠️ 容器未准备好,延迟创建Mind Elixir实例..."),setTimeout(()=>{if(r.value){n.value=new vt({el:r.value,direction:vt.RIGHT,draggable:!0,contextMenu:!1,toolBar:!0,nodeMenu:!1,keypress:!1,autoCenter:!1,infinite:!0,maxScale:5,minScale:.1,markdown:(J,$)=>J.includes("|")||J.includes("**")||J.includes("`")||J.includes("#")?G0(J):J});const Z=n.value.init(w);console.log("✅ Mind Elixir实例延迟创建成功"),P?(T(P),console.log("📍 延迟创建后立即恢复位置"),setTimeout(()=>{T(P),console.log("📍 延迟创建后二次确认位置恢复")},100)):!E&&!_&&console.log("📍 延迟创建后跳过根节点居中,等待居中新节点"),setTimeout(()=>{P?T(P):_&&O(),X(),I()},300)}},200);return}}catch{setTimeout(()=>{try{if(r.value){n.value=new vt({el:r.value,direction:vt.RIGHT,draggable:!0,contextMenu:!1,toolBar:!0,nodeMenu:!1,keypress:!1,autoCenter:!1,infinite:!0,maxScale:5,minScale:.1,markdown:($,ue)=>$.includes("|")||$.includes("**")||$.includes("`")||$.includes("#")?G0($):$});const J=n.value.init(w);P?(T(P),console.log("📍 重试创建后立即恢复位置"),setTimeout(()=>{T(P),console.log("📍 重试创建后二次确认位置恢复")},100)):!E&&!_&&console.log("📍 重试创建后跳过根节点居中,等待居中新节点"),setTimeout(()=>{P?T(P):_&&O(),X(),I()},300)}}catch(J){console.error("❌ Mind Elixir实例重试创建失败:",J)}},500);return}setTimeout(()=>{E&&P?T(P):_&&O(),y(),X(),setTimeout(P?()=>{T(P),I()}:_?()=>{O(),I()}:()=>{I()},500)},100)}catch{}},I=()=>{n.value&&r.value&&setTimeout(()=>{r.value.querySelectorAll("me-tpc, .topic, [data-id]").forEach((E,_)=>{var $;const P=E.getAttribute("data-id")||E.id||E.getAttribute("nodeid")||(($=E.querySelector("[data-id]"))==null?void 0:$.getAttribute("data-id"));if(!P)return;const Z=(ue,de)=>{for(const me of ue){if(me.id===de)return me;if(me.children){const Oe=Z(me.children,de);if(Oe)return Oe}}return null},J=Z(n.value.data.nodeData,P);if(J&&J.data&&J.data.des){let ue=E.querySelector(".node-description");ue||(ue=document.createElement("div"),ue.className="node-description",ue.style.cssText=`
    +            font-size: 11px;
    +            color: #666;
    +            margin-top: 6px;
    +            padding: 6px 8px;
    +            background: rgba(0, 0, 0, 0.03);
    +            border-radius: 4px;
    +            max-width: 250px;
    +            word-wrap: break-word;
    +            line-height: 1.3;
    +            border-left: 3px solid #e0e0e0;
    +            display: block;
    +          `,E.appendChild(ue));const de=J.data.des;de.length>150?(ue.textContent=de.substring(0,150)+"...",ue.title=de):ue.textContent=de}})},1e3)},O=()=>{try{if(n.value&&n.value.toCenter){n.value.toCenter(),console.log("✅ 使用 MindElixir toCenter 方法实现根节点居中");return}const w=r.value;if(!w)return;const E=w.querySelector(".map-canvas");if(!E)return;const _=E.querySelectorAll("me-tpc");if(_.length===0)return;let P=1/0,Z=-1/0,J=1/0,$=-1/0;_.forEach(C0=>{const yn=C0.getBoundingClientRect(),M0=w.getBoundingClientRect(),Oo=yn.left-M0.left,Lo=yn.top-M0.top;P=Math.min(P,Oo),Z=Math.max(Z,Oo+yn.width),J=Math.min(J,Lo),$=Math.max($,Lo+yn.height)});const ue=(P+Z)/2,de=(J+$)/2,me=w.clientWidth/2,Oe=w.clientHeight/2,Be=me-ue,gt=Oe-de;E.style.transform=`translate(${Be}px, ${gt}px)`,E.style.opacity="1",E.style.transition="opacity 0.3s ease";const Rt=100,Jt=Math.max(Be,Rt),yr=Math.max(gt,Rt);E.style.transform=`translate(${Jt}px, ${yr}px)`,E.style.opacity="1",E.style.visibility="visible"}catch{}},z=async w=>{if(!(!n.value||!w))try{console.log("🎯 开始处理新节点:",w);let E=null,_=0;const P=5;for(;!E&&_setTimeout(Z,50)));E?(console.log("✅ 找到节点元素:",E),n.value.scrollIntoView&&(n.value.scrollIntoView(E),console.log("✅ 节点已平滑居中显示")),setTimeout(()=>{n.value.beginEdit&&(n.value.beginEdit(E),console.log("✅ 节点已进入编辑状态"))},350)):console.error("❌ 多次尝试后仍未找到节点元素:",w)}catch(E){console.error("❌ 居中显示节点失败:",E)}},W=()=>{if(!s.value)return;if(n.value&&n.value.getNodeById)try{const E=n.value.getNodeById(s.value.id);if(E){const _=E.getBoundingClientRect(),P=r.value.getBoundingClientRect(),Z=_.left-P.left+_.width/2,J=_.bottom-P.top+10;i.value={left:`${Z}px`,top:`${J}px`};return}}catch{}let w=document.querySelector(`[data-id="${s.value.id}"]`);if(w||(w=document.querySelector(`.topic[data-id="${s.value.id}"]`)),w||(w=document.querySelector(`[data-node-id="${s.value.id}"]`)),w||(w=document.querySelector(`[data-nodeid="me${s.value.id}"]`)),!w){const E=document.querySelectorAll("me-tpc");for(const _ of E)if(_.getAttribute("data-nodeid")===`me${s.value.id}`){w=_;break}}if(!w){const E=document.querySelectorAll(".topic");for(const _ of E)if(_.textContent.trim()===s.value.topic){w=_;break}}if(w){const E=w.getBoundingClientRect(),_=r.value.getBoundingClientRect(),P=E.left-_.left+E.width/2,Z=E.bottom-_.top+10;i.value={left:`${P}px`,top:`${Z}px`}}else i.value={left:"50%",top:"50%",transform:"translate(-50%, -50%)"}},U=async()=>{s.value&&(await ye(s.value),s.value=null)},he=async()=>{s.value&&(await fe(s.value),s.value=null)},ge=async()=>{s.value&&(await Ue(s.value),s.value=null)},Ae=async()=>{if(!s.value)return;console.log("Ask AI for node:",s.value);const w=parseFloat(i.value.left)||0,E=parseFloat(i.value.top)||0;a.value={left:`${w}px`,top:`${E+60}px`,transform:"translateX(-50%)"},f.value=!0,p.value=s.value},et=()=>{f.value=!1,p.value=null,b.value="",v.value=!1,s.value=null},Je=w=>{if(!w)return"";const E=[];return w.parent&&w.parent.topic&&E.push(`父节点: ${w.parent.topic}`),w.parent&&w.parent.parent&&w.parent.parent.topic&&E.push(`祖父节点: ${w.parent.parent.topic}`),E.join(" | ")},ot=w=>{w.ctrlKey||w.metaKey||(w.preventDefault(),Fe())},Fe=async()=>{if(!(!b.value.trim()||!p.value||v.value)){v.value=!0;try{const w="你是一个专业的思维导图分析助手。请根据用户的问题和提供的节点信息,给出专业、有用的回答。",E=`节点信息:
    +当前节点:${p.value.topic}
    +上下文:${Je(p.value)}
    +
    +用户问题:${b.value}
    +
    +请给出详细的回答,回答应该:
    +1. 直接回答用户的问题
    +2. 提供具体的建议或改进方案
    +3. 保持专业和有用的语调
    +4. 回答长度适中,便于在思维导图中展示`;console.log("发送AI请求:",{systemPrompt:w,userPrompt:E});const _=await fetch("http://127.0.0.1:8000/api/ai/generate-stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({system_prompt:w,user_prompt:E,model:"glm-4.5",base_url:"https://open.bigmodel.cn/api/paas/v4/",api_key:"ce39bdd4fcf34ec0aec75072bc9ff988.hAp7HZTVUwy7vImn"})});if(!_.ok)throw new Error(`HTTP error! status: ${_.status}`);let P="";const Z=_.body.getReader(),J=new TextDecoder;let $="";for(;;){const{done:ue,value:de}=await Z.read();if(ue)break;$+=J.decode(de,{stream:!0});const me=$.split(`
    +`);$=me.pop()||"";for(const Oe of me)if(Oe.startsWith("data: "))try{const Be=JSON.parse(Oe.slice(6));if(Be.type==="chunk")P+=Be.content;else if(Be.type==="error")throw new Error(Be.content)}catch(Be){console.warn("解析流式数据失败:",Be)}}await tt(p.value,b.value,P),et()}catch(w){console.error("AI请求失败:",w),alert("AI请求失败,请稍后重试")}finally{v.value=!1}}},Ie=w=>w.replace(/^### (.*$)/gim,"📋 $1").replace(/^## (.*$)/gim,"📌 $1").replace(/^# (.*$)/gim,"🎯 $1").replace(/\*\*(.*?)\*\*/g,(E,_)=>{if(_.includes(":")){const P=_.split(":");if(P.length>1)return`【${P[0]}】: ${P.slice(1).join(":")}`}return`【${_}】`}).replace(/\*(.*?)\*/g,"《$1》").replace(/^- (.*$)/gim,"  • $1").replace(/^\d+\. (.*$)/gim,"  $&").replace(/```(.*?)```/gims,"💻 $1").replace(/`(.*?)`/g,"「$1」").replace(/\[([^\]]+)\]\([^)]+\)/g,"🔗 $1").replace(/\n\n/g,`
    +`).replace(/\n/g,`
    +  `),ve=(w,E,_)=>{const P=w.split(`
    +`);let Z=_,J=[];for(let $=0;$0){const Jt=Ie(gt.join(`
    +`));Be.topic=Be.topic+`
    +
    +`+Jt}E.children.push(Be),$=Rt-1}else de&&J.push(de)}if(J.length>0){const $=J.join(`
    +`).trim();$&&$.split(`
    +
    +`).filter(de=>de.trim()).forEach(de=>{const me=Ie(de.trim());if(me){const Oe={id:`node_${Z++}`,topic:me,children:[],level:(E.level||0)+1,data:{}};E.children.push(Oe)}})}return{nodeCounter:Z}},Me=w=>{const E=w.split(`
    +`);let _=null;const P=[];let Z=0,J=[];if(E.forEach(($,ue)=>{const de=$.trim(),me=de.match(/^(#{1,6})\s+(.+)$/);if(me){if(J.length>0&&P.length>0){const Jt=J.join(`
    +`).trim();Jt&&(Z=ve(Jt,P[P.length-1],Z).nodeCounter),J=[]}const Oe=me[1].length,Be=me[2].trim(),gt=Ie(Be),Rt={id:`node_${Z++}`,topic:gt,children:[],level:Oe,data:{}};if(Oe===1&&!_)_=Rt,P.length=0,P.push(_);else{for(;P.length>1&&P[P.length-1].level>=Oe;)P.pop();P.length>0&&P[P.length-1].children.push(Rt),P.push(Rt)}}else de&&J.push(de)}),J.length>0&&P.length>0){const $=J.join(`
    +`).trim();$&&(Z=ve($,P[P.length-1],Z).nodeCounter)}return _||(_={id:"root",topic:"根节点",children:[],data:{}}),_},tt=async(w,E,_)=>{var P,Z,J;try{const ue=(yr=>yr.replace(/^#+\s*/gm,"").replace(/\*\*(.*?)\*\*/g,"$1").replace(/\*(.*?)\*/g,"$1").replace(/^\s*[-*+]\s*(?![|])/gm,"• ").replace(/\n{3,}/g,`
    +
    +`).trim())(_),de=`# ${E}
    +
    +${ue}`,me=Me(de),Oe={title:E,des:`AI追问产生的节点 - ${new Date().toLocaleString()}`,parentId:w.id,isRoot:!1},Be=[];if(me.children&&me.children.length>0&&me.children.forEach(yr=>{Be.push({title:yr.topic,des:"",parentId:null,isRoot:!1})}),console.log("当前思维导图ID:",o.value),!o.value)throw new Error("没有找到当前思维导图ID,无法创建节点");const gt=await lt.addNodes(o.value,[Oe]);if(!gt.data||!gt.data.success)throw new Error("AI父节点创建失败");const Rt=(J=(Z=(P=gt.data.data)==null?void 0:P.nodes)==null?void 0:Z[0])==null?void 0:J.id;if(!Rt)throw new Error("无法获取创建的父节点ID");Be.forEach(yr=>{yr.parentId=Rt});let Jt=null;if(Be.length>0&&(Jt=await lt.addNodes(o.value,Be)),gt.data&>.data.success)await be();else throw new Error("AI父节点创建失败")}catch($){console.error("创建AI节点失败:",$),alert("创建AI回答节点失败: "+$.message)}},We=async()=>{if(s.value){try{const w=s.value.topic||s.value.title||"无标题";if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(w),_e();else{const E=document.createElement("textarea");E.value=w,E.style.position="fixed",E.style.left="-999999px",E.style.top="-999999px",document.body.appendChild(E),E.focus(),E.select();const _=document.execCommand("copy");document.body.removeChild(E),_?_e():St()}}catch{St()}s.value=null}},_e=()=>{const w=document.createElement("div");w.textContent="文本已复制到剪贴板",w.style.cssText=`
    +    position: fixed;
    +    top: 20px;
    +    right: 20px;
    +    background: #4CAF50;
    +    color: white;
    +    padding: 12px 20px;
    +    border-radius: 6px;
    +    font-size: 14px;
    +    z-index: 10000;
    +    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    +    animation: slideIn 0.3s ease;
    +  `;const E=document.createElement("style");E.textContent=`
    +    @keyframes slideIn {
    +      from { transform: translateX(100%); opacity: 0; }
    +      to { transform: translateX(0); opacity: 1; }
    +    }
    +  `,document.head.appendChild(E),document.body.appendChild(w),setTimeout(()=>{w.parentNode&&w.parentNode.removeChild(w),E.parentNode&&E.parentNode.removeChild(E)},3e3)},St=()=>{const w=document.createElement("div");w.textContent="复制失败,请手动复制",w.style.cssText=`
    +    position: fixed;
    +    top: 20px;
    +    right: 20px;
    +    background: #f44336;
    +    color: white;
    +    padding: 12px 20px;
    +    border-radius: 6px;
    +    font-size: 14px;
    +    z-index: 10000;
    +    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    +    animation: slideIn 0.3s ease;
    +  `,document.body.appendChild(w),setTimeout(()=>{w.parentNode&&w.parentNode.removeChild(w)},3e3)},mt=(w,E="success")=>{const _=document.createElement("div");_.textContent=w;const P=E==="success"?"#4CAF50":E==="error"?"#f44336":"#ff9800";_.style.cssText=`
    +    position: fixed;
    +    top: 20px;
    +    right: 20px;
    +    background: ${P};
    +    color: white;
    +    padding: 12px 20px;
    +    border-radius: 6px;
    +    font-size: 14px;
    +    z-index: 10000;
    +    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    +    animation: slideIn 0.3s ease;
    +  `,document.body.appendChild(_),setTimeout(()=>{_.parentNode&&_.parentNode.removeChild(_)},2e3)},j=()=>{const w=document.createElement("div");w.textContent="✅ 节点编辑已保存",w.style.cssText=`
    +    position: fixed;
    +    top: 20px;
    +    right: 20px;
    +    background: #4CAF50;
    +    color: white;
    +    padding: 12px 20px;
    +    border-radius: 6px;
    +    font-size: 14px;
    +    z-index: 10000;
    +    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    +    animation: slideIn 0.3s ease;
    +  `,document.body.appendChild(w),setTimeout(()=>{w.parentNode&&w.parentNode.removeChild(w)},2e3)},V=()=>{const w=document.createElement("div");w.textContent="❌ 节点编辑保存失败",w.style.cssText=`
    +    position: fixed;
    +    top: 20px;
    +    right: 20px;
    +    background: #f44336;
    +    color: white;
    +    padding: 12px 20px;
    +    border-radius: 6px;
    +    font-size: 14px;
    +    z-index: 10000;
    +    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    +    animation: slideIn 0.3s ease;
    +  `,document.body.appendChild(w),setTimeout(()=>{w.parentNode&&w.parentNode.removeChild(w)},3e3)},re=async w=>{try{console.log("🎯 处理节点拖拽操作:",w.name),console.log("📦 操作详情:",{name:w.name,objs:w.objs,toObj:w.toObj}),setTimeout(async()=>{var E;try{const _=w.objs||[],P=w.toObj;if(!_.length||!P){console.warn("⚠️ 拖拽操作缺少必要信息");return}console.log(`📦 准备保存 ${_.length} 个节点的父子关系`);let Z=null;w.name==="moveNodeIn"?(Z=P.id,console.log(`📌 拖入操作:新父节点为 ${Z}`)):(w.name==="moveNodeBefore"||w.name==="moveNodeAfter")&&(Z=((E=P.parent)==null?void 0:E.id)||null,console.log(`📌 拖到兄弟位置:新父节点为 ${Z||"根节点"}`));const J=_.map(async me=>{try{console.log(`🔄 更新节点 ${me.id} 的父节点为 ${Z||"根节点"}`);const Oe=await lt.updateNode(me.id,{newParentId:Z});return Oe.data&&Oe.data.success?(console.log(`✅ 节点 ${me.id} 父子关系更新成功`),{success:!0,nodeId:me.id}):(console.warn(`⚠️ 节点 ${me.id} 父子关系更新失败:`,Oe),{success:!1,nodeId:me.id})}catch(Oe){return console.error(`❌ 节点 ${me.id} 父子关系更新失败:`,Oe),{success:!1,nodeId:me.id,error:Oe}}}),$=await Promise.all(J),ue=$.filter(me=>me.success).length,de=$.filter(me=>!me.success).length;console.log(`📊 拖拽保存结果: ${ue} 成功, ${de} 失败`)}catch(_){console.error("❌ 保存拖拽后的结构失败:",_),mt("❌ 节点拖拽保存失败","error")}},500)}catch(E){console.error("❌ 处理节点拖拽操作失败:",E)}},ie=async w=>{try{const E=w.obj;E?await Ee(E):console.error("无法解析编辑操作:",w)}catch(E){console.error("处理编辑完成失败:",E)}},Ee=async w=>{var E,_;try{if(!o.value){console.error("无法获取思维导图ID");return}const P=await lt.updateNode(w.id,{newTitle:w.topic,newDes:((E=w.data)==null?void 0:E.des)||"",newParentId:w.parentId||((_=w.parent)==null?void 0:_.id)});P.data&&P.data.success?j():(console.error("更新节点编辑失败:",P.data),V())}catch(P){console.error("更新节点编辑失败:",P),V()}},ye=async w=>{var E;try{await S();const _=o.value||w.mindmap_id||w.mindmapId;if(!_){console.error("无法获取思维导图ID");return}const P=await lt.addNodes(_,[{title:"新子节点",des:"子节点描述",parentId:w.id}]);if(P.data&&P.data.success){const Z=((E=P.data.data)==null?void 0:E.nodes)||[];if(Z.length>0){const J=Z[0];try{await new Promise(ue=>setTimeout(ue,800));const $=await lt.getMindmap(_);if($.data&&$.data.nodeData){await N($.data,!1,!1);try{console.log("🎯 开始居中显示新子节点:",J.id),await z(J.id)}catch(ue){console.error("居中显示新节点失败:",ue)}}else throw new Error("无法获取思维导图数据")}catch($){console.error("刷新思维导图失败:",$)}}}}catch(_){console.error("添加子节点失败:",_)}},fe=async w=>{var E;try{await S(),console.log("添加兄弟节点到API:",w.id),console.log("节点信息:",{id:w.id,parentId:w.parentId,parent:w.parent,mindmap_id:w.mindmap_id,mindmapId:w.mindmapId});const _=o.value||w.mindmap_id||w.mindmapId;if(!_){console.error("无法获取思维导图ID");return}let P=w.parentId;!P&&w.parent&&(P=w.parent.id);const Z=await lt.addNodes(_,[{title:"新兄弟节点",des:"兄弟节点描述",parentId:P}]);if(console.log("添加兄弟节点响应:",Z),Z.data&&Z.data.success){const J=((E=Z.data.data)==null?void 0:E.nodes)||[];if(J.length>0){const $=J[0];console.log("新创建的兄弟节点:",$),console.log("🎯 使用MindElixir init方法重新初始化数据...");try{const ue=await lt.getMindmap(_);if(ue.data&&ue.data.nodeData){await N(ue.data,!1,!1),console.log("✅ 思维导图刷新成功");try{console.log("🎯 开始居中显示新兄弟节点:",$.id),await z($.id)}catch(de){console.error("居中显示新节点失败:",de)}}else throw new Error("无法获取思维导图数据")}catch(ue){console.error("重新初始化失败,使用完整重新加载:",ue);const de=await lt.getMindmap(_);de.data&&de.data.nodeData&&await N(de.data,!0,!1)}}}}catch(_){console.error("添加兄弟节点失败:",_)}},Ue=async w=>{try{await S(),console.log("删除节点从API:",w.id);const E=await lt.deleteNodes([w.id]);if(console.log("删除节点响应:",E),E.data&&E.data.success){const _=o.value||w.mindmap_id||w.mindmapId;if(_){const P=await lt.getMindmap(_);P.data&&P.data.nodeData&&(await N(P.data,!0,!1),console.log("✅ 删除节点后思维导图已刷新,保持当前位置"))}}}catch(E){console.error("删除节点失败:",E)}},S=async()=>{const w=r.value;if(w){const E=w.querySelector("input:focus");if(E&&s.value){const _=E.value;_!==s.value.topic&&_.trim()!==""&&(console.log("保存当前编辑:",_),s.value.topic=_,await D(s.value))}}},D=async w=>{var E,_,P,Z,J;try{console.log("保存Mind Elixir编辑,节点ID:",w.id),console.log("编辑内容:",{newTitle:w.topic,newDes:((E=w.data)==null?void 0:E.des)||""});const $=String(w.id),ue=await lt.updateNode($,{newTitle:w.topic,newDes:((_=w.data)==null?void 0:_.des)||""});console.log("更新节点API响应:",ue),console.log("节点编辑已保存到后端"),console.log("✅ 节点编辑已保存,无需重新加载")}catch($){console.error("保存Mind Elixir编辑失败:",$),console.error("错误详情:",(P=$.response)==null?void 0:P.data),alert("保存编辑失败: "+(((J=(Z=$.response)==null?void 0:Z.data)==null?void 0:J.detail)||$.message))}},F=w=>{console.log("打开编辑模态框:",w),n.value.editText(w)},G=async(w,E,_)=>{var P,Z,J;try{console.log("开始创建节点:",w.topic,"父节点ID:",_);const $=await lt.addNodes(E,{title:w.topic||w.title||"无标题",des:((P=w.data)==null?void 0:P.des)||"",parentId:_});if(console.log("创建节点响应:",$),$.data&&$.data.success){const de=(J=(((Z=$.data.data)==null?void 0:Z.nodes)||[])[0])==null?void 0:J.id;if(console.log("当前节点ID:",de),w.children&&w.children.length>0){console.log("开始创建子节点,数量:",w.children.length);for(const me of w.children)await G(me,E,de)}else console.log("节点没有子节点,创建完成")}else console.error("创建节点失败,响应:",$)}catch($){console.error("创建节点失败:",$)}};let q=null,H=null;const X=()=>{if(!n.value)return;console.log("绑定事件监听器..."),q&&r.value.removeEventListener("wheel",q),H&&r.value.removeEventListener("click",H),q=_=>{if(_.ctrlKey||_.metaKey){_.preventDefault();const P=_.deltaY>0?.9:1.1,Z=Math.max(.3,Math.min(3,l.value*P));if(n.value){const J=r.value.querySelector(".map-container");J&&(J.style.transform=`scale(${Z})`,l.value=Z,localStorage.setItem("mindmap-zoom-level",Z.toString()))}}},r.value.addEventListener("wheel",q),n.value.bus.addListener("select",_=>{s.value=_,setTimeout(()=>{W()},50)}),n.value.bus.addListener("selectNode",_=>{s.value=_,setTimeout(()=>{W()},50)}),n.value.bus.addListener("scale",_=>{Math.abs(_-1)<.01&&Math.abs(l.value-1)>.01&&setTimeout(()=>{ne()},50)}),window.zoomIntervalId&&clearInterval(window.zoomIntervalId);const w=setInterval(()=>{l.value!==1&&r.value&&se()},500);window.zoomIntervalId=w;let E=0;H=_=>{const P=Date.now();if(P-E<100)return;E=P;const Z=_.target,J=Z.closest("me-tpc")||Z.closest(".topic")||(Z.classList.contains("topic")?Z:null)||(Z.tagName==="ME-TPC"?Z:null);if(J){const $=J.nodeObj;if($){s.value=$;const ue=r.value.getBoundingClientRect(),de=J.getBoundingClientRect(),me=de.left-ue.left+de.width/2,Oe=de.bottom-ue.top+8;i.value={left:`${me}px`,top:`${Oe}px`}}}else s.value=null,f.value&&(f.value=!1,p.value=null,b.value="",v.value=!1)},r.value.addEventListener("click",H),n.value.bus.addListener("edit",_=>{console.log("edit事件触发:",_),F(_)}),n.value.bus.addListener("editFinish",_=>{console.log("editFinish事件触发:",_),ie(_)}),n.value.bus.addListener("operation",_=>{console.log("Mind Elixir操作事件:",_),_.name==="moveNodeIn"||_.name==="moveNodeBefore"||_.name==="moveNodeAfter"?(console.log("检测到节点拖拽操作:",_.name,_),re(_)):_.name==="finishEdit"&&(console.log("检测到编辑完成操作:",_),ie(_))}),n.value.bus.addListener("removeNode",_=>{console.log("删除节点:",_),Ue(_)})},ne=()=>{if(n.value){const w=localStorage.getItem("mindmap-zoom-level");if(w){const E=parseFloat(w);if(E>=.3&&E<=3){const _=r.value.querySelector(".map-container");_&&(_.style.transform=`scale(${E})`,l.value=E)}}}},se=()=>{if(n.value&&l.value!==1&&r.value){const w=r.value.querySelector(".map-container");w&&(w.style.transform=`scale(${l.value})`)}},Q=async()=>{var w;if(console.log("🚀🚀🚀 保存函数被调用 🚀🚀🚀"),console.log("🔍 mindElixir.value:",n.value),console.log("🔍 currentMindmapId.value:",o.value),console.log("🔍 mindmapEl.value:",r.value),console.log("🔍🔍🔍 全局状态检查开始 🔍🔍🔍"),console.log("🔍 - showWelcome:",c.value),console.log("🔍 - 是否有思维导图容器:",!!r.value),console.log("🔍 - MindElixir实例状态:",!!n.value),console.log("🔍🔍🔍 全局状态检查结束 🔍🔍🔍"),n.value&&n.value.data?(console.log("🔍🔍🔍 MindElixir数据检查开始 🔍🔍🔍"),console.log("🔍 - 数据对象:",n.value.data),console.log("🔍 - 数据字段:",Object.keys(n.value.data)),console.log("🔍 - 是否有nodeData:",!!n.value.data.nodeData),console.log("🔍 - 是否有nodes:",!!n.value.data.nodes),console.log("🔍🔍🔍 MindElixir数据检查结束 🔍🔍🔍")):console.log("⚠️ MindElixir数据不存在或为空"),!n.value||!o.value){if(console.warn("⚠️ 没有可保存的思维导图数据"),console.warn("🔍 mindElixir.value 状态:",!!n.value),console.warn("🔍 currentMindmapId.value 状态:",!!o.value),n.value&&n.value.data&&(console.log("🔍 尝试从MindElixir数据中获取ID"),console.log("🔍 MindElixir数据:",n.value.data),n.value.data.mindmapId?(o.value=n.value.data.mindmapId,console.log("🔍 从MindElixir数据中获取到mindmapId:",n.value.data.mindmapId)):n.value.data.mindmap_id&&(o.value=n.value.data.mindmap_id,console.log("🔍 从MindElixir数据中获取到mindmap_id:",n.value.data.mindmap_id))),!o.value&&n.value){if(console.log("🔍 尝试重新初始化MindElixir数据..."),console.log("🔍 MindElixir实例属性:",Object.keys(n.value)),console.log("🔍 MindElixir实例方法:",Object.getOwnPropertyNames(Object.getPrototypeOf(n.value))),n.value.getData){const E=n.value.getData();console.log("🔍 通过getData()获取的数据:",E),E&&E.nodeData&&(console.log("🔍 nodeData详情:",E.nodeData),E.nodeData.mindmapId?(o.value=E.nodeData.mindmapId,console.log("🔍 从nodeData.mindmapId获取到ID:",E.nodeData.mindmapId)):E.nodeData.mindmap_id?(o.value=E.nodeData.mindmap_id,console.log("🔍 从nodeData.mindmap_id获取到ID:",E.nodeData.mindmap_id)):(console.log("🔍 nodeData中没有找到mindmapId字段"),console.log("🔍 nodeData字段:",Object.keys(E.nodeData)))),!o.value&&E&&(console.log("🔍 检查其他可能的ID字段..."),E.id?(o.value=E.id,console.log("🔍 从data.id获取到ID:",E.id)):E.mindmapId&&(o.value=E.mindmapId,console.log("🔍 从data.mindmapId获取到ID:",E.mindmapId)))}n.value.mindElixirData&&(console.log("🔍 mindElixirData:",n.value.mindElixirData),n.value.mindElixirData.id&&(o.value=n.value.mindElixirData.id,console.log("🔍 从mindElixirData获取到ID:",n.value.mindElixirData.id)))}if(!o.value){console.warn("⚠️ 仍然无法获取思维导图ID,无法保存"),console.warn("🔍 建议:请先加载一个思维导图,然后再尝试保存");return}}try{console.log("💾 开始保存思维导图..."),console.log("🔍 当前思维导图ID:",o.value),console.log("🔍 MindElixir实例:",n.value);let E=null;if(n.value&&n.value.getData?(E=n.value.getData(),console.log("🔍 通过getData()获取的数据:",E)):(E=n.value.data,console.log("🔍 通过data属性获取的数据:",E)),!E){console.warn("⚠️ MindElixir数据为空");return}let _=[];console.log("🔍 数据结构分析:"),console.log("🔍 - currentData.nodeData:",E.nodeData),console.log("🔍 - currentData.nodes:",E.nodes),console.log("🔍 - currentData.nodeData.children:",(w=E.nodeData)==null?void 0:w.children);const P=$=>{$&&$.id&&(_.push($),console.log(`🔍 收集节点: ${$.id} - ${$.topic||$.content||"无标题"}`),$.children&&$.children.length>0&&$.children.forEach(ue=>P(ue)))};if(E.nodeData)P(E.nodeData),console.log("🔍 从根节点收集到节点数量:",_.length);else if(E.nodes&&Array.isArray(E.nodes))E.nodes.forEach($=>P($)),console.log("🔍 从nodes数组收集到节点数量:",_.length);else if(Array.isArray(E))E.forEach($=>P($)),console.log("🔍 从currentData数组收集到节点数量:",_.length);else{console.warn("⚠️ 无法找到节点数据"),console.log("🔍 可用的数据字段:",Object.keys(E));return}if(_.length===0){console.warn("⚠️ 没有收集到任何节点");return}console.log("🔍 找到节点数据:",_),console.log("🔍 节点数量:",_.length),console.log("🔍 节点数据类型:",Array.isArray(_)?"数组":typeof _);const Z=[];if(_.forEach(($,ue)=>{if(console.log(`🔍 处理节点 ${ue}:`,$),$&&$.id){const de=$.topic||$.content||$.text||"",me=$.x||$.offsetX||0,Oe=$.y||$.offsetY||0;console.log(`🔍 节点 ${$.id} 内容:`,de,"位置:",{x:me,y:Oe});const Be={content:de,position:{x:me,y:Oe}};($.parentId||$.parent)&&(Be.parentId=$.parentId||$.parent,console.log(`🔍 节点 ${$.id} 父节点:`,Be.parentId)),console.log(`🔍 准备保存节点 ${$.id}:`,Be),Z.push(lt.updateNode($.id,Be).then(gt=>{console.log(`✅ 节点 ${$.id} 保存成功:`,gt)}).catch(gt=>{console.error(`❌ 节点 ${$.id} 保存失败:`,gt)}))}else console.warn(`⚠️ 节点 ${ue} 缺少ID:`,$)}),console.log("🔍 准备保存的节点数量:",Z.length),Z.length===0){console.warn("⚠️ 没有找到需要保存的节点");return}const J=await Promise.all(Z);console.log("🔍 保存结果:",J),console.log("🎉 思维导图保存完成!"),console.log("🔄 保存完成,开始自动刷新..."),await be()}catch(E){console.error("❌ 保存思维导图失败:",E)}},be=async()=>{if(!o.value){console.warn("⚠️ 没有当前思维导图ID,无法刷新");return}try{console.log("🔄 开始刷新思维导图...");const w=await lt.getMindmap(o.value);w.data&&w.data.nodeData?(console.log("✅ 获取到最新数据,开始刷新显示..."),await N(w.data,!0,!1),console.log("🎉 思维导图刷新完成!")):console.warn("⚠️ 无法获取思维导图数据")}catch(w){console.error("❌ 刷新思维导图失败:",w)}},le=async(w,E)=>{try{const _=String(o.value||"");if(n.value&&_&&_.startsWith("temp-")){console.log("🔄 检测到实时渲染的思维导图,将保存到数据库并更新ID");const J=k();console.log("📍 保存当前位置:",J);const $=await lt.createMindmap(E||"预览思维导图",w);if(console.log("🔄 创建思维导图响应:",$),$.data&&$.data.id){const ue=$.data.id;console.log("🎉 创建思维导图成功,新思维导图的ID是:",ue);const de=o.value;if(o.value=ue,n.value&&n.value.data){n.value.data.mindmapId=ue,n.value.data.id=ue;const me=Oe=>{Oe&&(Oe.mindmapId=ue,Oe.children&&Oe.children.forEach(Be=>me(Be)))};n.value.data.nodeData&&me(n.value.data.nodeData)}console.log("✅ 已更新思维导图ID,保持视图状态"),console.log("🔄 从临时ID",de,"更新为正式ID",ue),J&&setTimeout(()=>{T(J),console.log("📍 已恢复位置和缩放状态")},100),window.dispatchEvent(new CustomEvent("mindmap-saved",{detail:{mindmapId:ue,title:E,timestamp:Date.now(),fromRealtime:!0}}));return}}console.log("🔄 没有检测到实时渲染的思维导图,使用标准保存流程");const Z=await lt.createMindmap(E||"预览思维导图",w);if(console.log("🔄 创建思维导图响应:",Z),Z.data&&Z.data.id){const J=Z.data.id;if(console.log("🎉 创建思维导图成功,新思维导图的ID是:",J),console.log("📊 响应数据详情:",Z.data),Z.data.nodeData)console.log("✅ 思维导图创建时已包含节点数据,直接加载"),o.value=J,y(),await N(Z.data),window.dispatchEvent(new CustomEvent("mindmap-saved",{detail:{mindmapId:J,title:E,timestamp:Date.now()}})),setTimeout(async()=>{try{console.log("🔄 重新加载思维导图数据...");const $=await lt.getMindmap(J);$.data&&$.data.nodeData&&(await N($.data),console.log("✅ 思维导图数据重新加载成功"))}catch($){console.error("❌ 重新加载思维导图失败:",$)}},1500);else{console.log("🔧 需要递归创建节点"),await G(w,J,null),console.log("📥 开始加载新创建的思维导图,ID:",J);const $=await lt.getMindmap(J);console.log("🔄 加载思维导图响应:",$),$.data&&$.data.nodeData?(console.log("✅ 成功获取思维导图数据,开始加载显示"),o.value=J,y(),await N($.data),window.dispatchEvent(new CustomEvent("mindmap-saved",{detail:{mindmapId:J,title:E,timestamp:Date.now()}})),setTimeout(async()=>{try{console.log("🔄 重新加载思维导图数据...");const ue=await lt.getMindmap(J);ue.data&&ue.data.nodeData&&(await N(ue.data),console.log("✅ 思维导图数据重新加载成功"))}catch(ue){console.error("❌ 重新加载思维导图失败:",ue)}},1500)):console.error("❌ 获取思维导图数据失败:",$)}}}catch(_){console.error("❌ 保存预览数据到数据库失败:",_)}},pe=async w=>{try{if(console.log("📚 开始从历史记录加载思维导图:",w.title),y(),w.mindmapId){console.log("🎯 使用思维导图ID加载:",w.mindmapId);const E=await lt.getMindmap(w.mindmapId);if(E.data&&E.data.nodeData)await N(E.data);else throw new Error("无法获取思维导图数据")}else if(w.json)console.log("📊 使用历史记录中的JSON数据"),await N(w.json);else if(w.markdown){console.log("📝 使用历史记录中的Markdown数据,尝试转换为JSON");try{const E=await convertMarkdownToJSON(w.markdown);if(E)await N(E);else throw new Error("Markdown转换失败")}catch(E){console.error("Markdown转换失败:",E)}}}catch(E){console.error("❌ 从历史记录加载思维导图失败:",E)}};Oa(async()=>{window.addEventListener("save-preview-to-database",w=>{console.log("🎯 收到保存到数据库事件:",w.detail),console.log("📋 事件详情 - 标题:",w.detail.title,"来源:",w.detail.source,"时间戳:",new Date(w.detail.timestamp).toLocaleString()),le(w.detail.data,w.detail.title)}),window.addEventListener("realtime-mindmap-update",w=>{console.log("🔄 收到实时思维导图更新事件:",w.detail),Le(w.detail.data,w.detail.title)}),window.addEventListener("loadMindmapFromHistory",w=>{console.log("📚 收到从历史记录加载思维导图事件:",w.detail),console.log("🔍 事件数据详情:",w.detail),pe(w.detail)}),window.addEventListener("ai-sidebar-toggle",w=>{console.log("🤖 AI侧边栏折叠状态变化:",w.detail.isCollapsed),d.value=w.detail.isCollapsed}),x()});const Se=()=>{window.zoomIntervalId&&(clearInterval(window.zoomIntervalId),window.zoomIntervalId=null),r.value&&(q&&(r.value.removeEventListener("wheel",q),q=null),H&&(r.value.removeEventListener("click",H),H=null)),console.log("✅ 已清理所有定时器和事件监听器")};La(()=>{Se()}),e({showMindMapPage:M,cleanupIntervals:Se});const Le=async(w,E)=>{try{if(n.value){console.log("🔄 更新现有思维导图数据");try{const _=k(),P=String(o.value||""),Z=P&&P.startsWith("temp-")?P:`temp-${Date.now()}`,J={nodeData:w,mindmapId:Z,id:Z,title:E||"AI生成中..."};(!P||!P.startsWith("temp-"))&&(o.value=Z,console.log("🆔 更新临时思维导图ID:",Z));const $=n.value.init(J);_&&setTimeout(()=>{T(_)},100)}catch(_){console.error("❌ 更新思维导图数据失败:",_)}}else{y(),await Y0();let _=0;for(;!r.value&&_<20;)await new Promise($=>setTimeout($,50)),await Y0(),_++;if(!r.value){console.error("❌ 思维导图容器仍未准备好,跳过此次更新");return}n.value=new vt({el:r.value,direction:vt.RIGHT,draggable:!0,contextMenu:!1,toolBar:!0,nodeMenu:!0,keypress:!1,autoCenter:!1,infinite:!0,maxScale:5,minScale:.1,markdown:($,ue)=>{if($.includes("|")||$.includes("**")||$.includes("`")||$.includes("#")||$.includes("$")){console.log("🎨 实时更新 检测到markdown内容,开始渲染:",$.substring(0,100)+"...");const de=G0($);return console.log("🎨 实时更新 渲染结果:",de.substring(0,200)+"..."),de}return console.log("🔍 实时更新 内容不包含markdown语法,返回原文本"),$}});const P=`temp-${Date.now()}`,Z={nodeData:w,mindmapId:P,id:P,title:E||"AI生成中..."};o.value=P,console.log("🆔 设置临时思维导图ID:",P);const J=n.value.init(Z);console.log("✅ 实时思维导图实例创建成功"),X(),O()}}catch(_){console.error("❌ 实时更新思维导图失败:",_)}};return(w,E)=>(Ve(),Ke("div",s7,[c.value?(Ve(),Ke("div",i7,[Y("div",{class:Ln(["welcome-content",{"ai-sidebar-collapsed":d.value}])},[...E[1]||(E[1]=[Ko('

    🧠 思维导图工具

    可视化您的想法,构建知识体系

    🎯

    智能AI生成

    上传文档,AI自动生成思维导图结构

    ✏️

    灵活编辑

    拖拽节点,自由调整思维导图布局

    💾

    云端存储

    自动保存,多设备同步访问

    💡 提示:使用左侧AI侧边栏可以快速生成思维导图内容

    ',3)])],2)])):Sr("",!0),f.value?(Ve(),Ke("div",{key:1,class:"ai-input-area",style:On(a.value)},[Y("div",{class:"ai-input-header"},[E[2]||(E[2]=Y("span",{class:"ai-input-title"},"🤖 询问AI",-1)),Y("button",{onClick:et,class:"ai-close-btn"},"×")]),Y("div",a7,[ds(Y("textarea",{"onUpdate:modelValue":E[0]||(E[0]=_=>b.value=_),placeholder:"请输入您的问题...",rows:"2",disabled:v.value,onKeydown:[vi(gi(ot,["exact"]),["enter"]),vi(gi(Fe,["ctrl"]),["enter"]),vi(gi(Fe,["meta"]),["enter"])]},null,40,o7),[[Pa,b.value]]),Y("div",l7,[Y("button",{onClick:et,class:"btn-cancel",disabled:v.value}," 取消 ",8,c7),Y("button",{onClick:Fe,class:"btn-submit",disabled:!b.value.trim()||v.value},[v.value?(Ve(),Ke("span",d7,"AI思考中...")):(Ve(),Ke("span",h7,"询问AI"))],8,u7)])])],4)):Sr("",!0),c.value?Sr("",!0):(Ve(),Ke("div",{key:2,ref_key:"mindmapEl",ref:r,class:"mindmap-el"},null,512)),c.value?Sr("",!0):(Ve(),Ke("div",f7,[Y("button",{onClick:Q,class:"save-btn",title:"保存思维导图",style:{display:"none"}},[...E[3]||(E[3]=[Y("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[Y("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),Y("polyline",{points:"17,21 17,13 7,13 7,21"}),Y("polyline",{points:"7,3 7,8 15,8"})],-1),Y("span",null,"保存",-1)])]),Y("button",{onClick:be,class:"refresh-btn",title:"刷新思维导图",style:{display:"none"}},[...E[4]||(E[4]=[Y("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[Y("path",{d:"M1 4v6h6"}),Y("path",{d:"M23 20v-6h-6"}),Y("path",{d:"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"})],-1),Y("span",null,"刷新",-1)])])])),s.value?(Ve(),Ke("div",{key:4,class:"context-menu",style:On(i.value)},[s.value.parentId||s.value.parent?(Ve(),Ke("div",{key:0,class:"context-menu-item",onClick:he,title:"Add a sibling card"},[...E[5]||(E[5]=[Y("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 18 18",fill:"none"},[Y("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M9.9001 4.5C9.9001 5.74264 8.89274 6.75 7.6501 6.75C6.64263 6.75 5.78981 6.08785 5.5031 5.175H2.7001V11.025H5.4001V9.9C5.4001 8.90589 6.11644 8.1 7.0001 8.1H15.0501C15.9338 8.1 16.6501 8.90589 16.6501 9.9V13.95C16.6501 14.9441 15.9338 15.75 15.0501 15.75H7.0001C6.11644 15.75 5.4001 14.9441 5.4001 13.95V12.375H2.2501C1.75304 12.375 1.3501 11.7471 1.3501 11.475V4.725C1.3501 4.22794 1.75304 3.825 2.2501 3.825H5.5031C5.78981 2.91215 6.64263 2.25 7.6501 2.25C8.89274 2.25 9.9001 3.25736 9.9001 4.5ZM15.0501 9.9H7.0001V13.95H15.0501V9.9Z",fill:"currentColor","fill-opacity":"1"})],-1)])])):Sr("",!0),Y("div",{class:"context-menu-item",onClick:U,title:"Add a child card"},[...E[6]||(E[6]=[Y("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 18 18",fill:"none"},[Y("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M15.9501 6.63691H8.35014V11.3619H15.9501V6.63691ZM8.35014 4.83691C7.46649 4.83691 6.75014 5.6428 6.75014 6.63691V8.32441H4.84719C4.56048 7.41157 3.70766 6.74941 2.7002 6.74941C1.45755 6.74941 0.450195 7.75677 0.450195 8.99941C0.450195 10.2421 1.45755 11.2494 2.7002 11.2494C3.70766 11.2494 4.56048 10.5873 4.84719 9.67441H6.75014V11.3619C6.75014 12.356 7.46649 13.1619 8.35014 13.1619H15.9501C16.8338 13.1619 17.5501 12.356 17.5501 11.3619V6.63691C17.5501 5.6428 16.8338 4.83691 15.9501 4.83691H8.35014Z",fill:"currentColor","fill-opacity":"1"})],-1)])]),Y("div",{class:"context-menu-item",onClick:We,title:"Copy text"},[...E[7]||(E[7]=[Y("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 18 18",fill:"none"},[Y("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M16.4503 2.99952C16.4016 2.18908 15.7289 1.54688 14.9062 1.54688H6.46875L6.37452 1.5497C5.56408 1.5984 4.92188 2.27108 4.92188 3.09375V3.54688C4.92188 3.68495 5.0338 3.79688 5.17188 3.79688H6.35938C6.49745 3.79688 6.60938 3.68495 6.60938 3.54688V3.375L6.61309 3.34276C6.62766 3.28063 6.68343 3.23438 6.75 3.23438H14.625L14.6572 3.23809C14.7261 3.23438 14.7656 3.30029 14.7656 3.375V11.25L14.7619 11.2822C14.7473 11.3444 14.6916 11.3906 14.625 11.3906H14.4531C14.3151 11.3906 14.2031 11.5026 14.2031 11.6406V12.8281C14.2031 12.9662 14.3151 13.0781 14.4531 13.0781H14.9062L15.0005 13.0753C15.8109 13.0266 16.4531 12.3539 16.4531 11.5312V3.09375L16.4503 2.99952ZM11.5312 4.92188H3.09375C2.23943 4.92188 1.54688 5.61443 1.54688 6.46875V14.9062C1.54688 15.7606 2.23943 16.4531 3.09375 16.4531H11.5312C12.3856 16.4531 13.0781 15.7606 13.0781 14.9062V6.46875C13.0781 5.61443 12.3856 4.92188 11.5312 4.92188ZM3.37032 6.615H11.2635C11.3361 6.615 11.395 6.6739 11.395 6.74655V14.6397C11.395 14.7124 11.3361 14.7712 11.2635 14.7712H3.37032C3.29767 14.7712 3.23877 14.7124 3.23877 14.6397V6.74655C3.23877 6.6739 3.29767 6.615 3.37032 6.615ZM4.5 8.5C4.5 8.27909 4.67909 8.1 4.9 8.1H9.725C9.94591 8.1 10.125 8.27909 10.125 8.5V9.5C10.125 9.72091 9.94591 9.9 9.725 9.9H4.9C4.67909 9.9 4.5 9.72091 4.5 9.5V8.5ZM4.9 11.475C4.67909 11.475 4.5 11.6541 4.5 11.875V12.875C4.5 13.0959 4.67909 13.275 4.9 13.275H9.725C9.94591 13.275 10.125 13.0959 10.125 12.875V11.875C10.125 11.6541 9.94591 11.475 9.725 11.475H4.9Z",fill:"currentColor","fill-opacity":"1"})],-1)])]),Y("div",{class:"context-menu-item ask-ai",onClick:Ae,title:"Ask AI"},[...E[8]||(E[8]=[Ko('',1)])]),Y("div",{class:"context-menu-item delete",onClick:ge,title:"Delete"},[...E[9]||(E[9]=[Y("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},[Y("path",{d:"M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z",fill:"currentColor"}),Y("path",{"fill-rule":"evenodd",d:"M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z",fill:"currentColor"})],-1)])])],4)):Sr("",!0)]))}},m7=_o(p7,[["__scopeId","data-v-ce711d91"]]),g7="modulepreload",v7=function(t){return"/"+t},Nc={},Dc=function(e,r,n){if(!r||r.length===0)return e();const s=document.getElementsByTagName("link");return Promise.all(r.map(i=>{if(i=v7(i),i in Nc)return;Nc[i]=!0;const a=i.endsWith(".css"),o=a?'[rel="stylesheet"]':"";if(!!n)for(let d=s.length-1;d>=0;d--){const f=s[d];if(f.href===i&&(!a||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${o}`))return;const c=document.createElement("link");if(c.rel=a?"stylesheet":g7,a||(c.as="script",c.crossOrigin=""),c.href=i,document.head.appendChild(c),a)return new Promise((d,f)=>{c.addEventListener("load",d),c.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${i}`)))})})).then(()=>e()).catch(i=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i})};const b7={class:"ai-sidebar-wrapper"},y7=["title"],w7={key:0,width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5"},x7={key:1,width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5"},k7={class:"sidebar-content"},S7={class:"section"},T7={class:"input-group"},A7={key:0,class:"file-info"},E7={class:"file-details"},C7={class:"file-info-left"},M7={class:"file-name"},N7={class:"file-size"},D7={class:"button-group file-action-buttons"},R7=["disabled"],I7={key:0},_7={key:1},O7={key:0,class:"section"},L7={class:"history-list"},z7=["onClick"],F7={class:"history-title"},$7={class:"history-time"},B7={class:"section"},P7={class:"input-group"},H7={class:"button-group"},q7=["disabled"],j7={key:0},U7={key:1},V7={class:"section"},W7={key:0,class:"processing-status"},G7={class:"result-container"},K7={class:"json-result"},Y7={class:"button-group"},X7=["disabled"],J7={__name:"AISidebar",emits:["start-realtime-generation"],setup(t,{emit:e}){const r=e,n=ze(!1),s=ze(""),i=ze(""),a=ze(""),o=ze(!1),l=ze(!1),c=ze([]),d=ze(!1);ze(""),ze("");const f=ze(!1),p=ze(""),b=ze(null),v=ze(null),x=()=>{n.value=!n.value,window.dispatchEvent(new CustomEvent("ai-sidebar-toggle",{detail:{isCollapsed:n.value}}))},y=j=>{const V=j.target.files[0];V&&(v.value=V,Me("文件上传成功!","success"))},M=j=>{j.preventDefault(),d.value=!1;const V=j.dataTransfer.files;if(V.length>0){const re=V[0],ie=[".txt",".md",".doc",".docx",".pdf"],Ee="."+re.name.split(".").pop().toLowerCase();ie.includes(Ee)?(v.value=re,Me("文件拖拽上传成功!","success")):Me("不支持的文件格式!请上传 .txt, .md, .doc, .docx, .pdf 格式的文件","error")}},k=j=>{j.preventDefault(),d.value=!0},T=j=>{j.preventDefault(),d.value=!1},N=()=>{v.value=null,b.value&&(b.value.value="")},I=j=>{if(j===0)return"0 Bytes";const V=1024,re=["Bytes","KB","MB","GB"],ie=Math.floor(Math.log(j)/Math.log(V));return parseFloat((j/Math.pow(V,ie)).toFixed(2))+" "+re[ie]},O=async()=>{if(!v.value){Me("请先上传文件","error");return}o.value=!0,r("start-realtime-generation");try{const j=await z(v.value);i.value="";const V="你是一个专业的文档分析专家。请分析上传的文档内容,生成结构化的Markdown格式思维导图。要求:1. 提取主要主题和关键概念 2. 组织成层次分明的结构 3. 使用清晰的标题和子标题 4. 保持内容的逻辑性和完整性",re=`请分析以下文档内容并生成结构化Markdown: + +${j}`;await he(V,re),await Ae(),We(v.value.name,i.value),setTimeout(async()=>{try{await ve()}catch(ie){console.error("自动保存失败:",ie)}},1500)}catch(j){console.error("从文件生成Markdown失败:",j),Me("生成失败: "+j.message,"error")}finally{o.value=!1}},z=j=>new Promise(async(V,re)=>{try{const ie=j.type.includes("text")||j.name.endsWith(".txt")||j.name.endsWith(".md"),Ee=j.type==="application/vnd.openxmlformats-officedocument.wordprocessingml.document"||j.type==="application/msword"||j.name.endsWith(".docx")||j.name.endsWith(".doc"),ye=j.type==="application/pdf"||j.name.endsWith(".pdf");if(ie){const fe=new FileReader;fe.onload=Ue=>V(Ue.target.result),fe.onerror=()=>re(new Error("文本文件读取失败")),fe.readAsText(j)}else if(Ee){const fe=await W(j);V(fe)}else if(ye){const fe=await U(j);V(fe)}else{const fe=new FileReader;fe.onload=Ue=>V(Ue.target.result),fe.onerror=()=>re(new Error("文件读取失败")),fe.readAsText(j)}}catch(ie){re(ie)}}),W=async j=>{try{if(j.name.endsWith(".docx")){const V=await Dc(()=>import("./index-c6bfb612.js").then(Ee=>Ee.i),[]),re=await j.arrayBuffer();return(await V.extractRawText({arrayBuffer:re})).value}else if(j.name.endsWith(".doc"))throw new Error("请将.doc文件转换为.docx格式,或安装相应的解析库")}catch(V){throw new Error(`Office文档解析失败: ${V.message}`)}},U=async j=>{try{const V=await Dc(()=>import("./pdf-869d0c0b.js"),[]);V.GlobalWorkerOptions.workerSrc="/pdf.worker.min.mjs";const re=await j.arrayBuffer(),ie=await V.getDocument({data:re}).promise;let Ee="";for(let ye=1;ye<=ie.numPages;ye++){const S=(await(await ie.getPage(ye)).getTextContent()).items.map(D=>D.str).join(" ");Ee+=S+` +`}return Ee}catch(V){throw new Error(`PDF文件解析失败: ${V.message}`)}},he=async(j,V)=>{const ie=j||`你是一位Markdown格式转换专家。你的任务是将用户提供的文章内容精确转换为结构化的Markdown格式。请遵循以下步骤: + +提取主标题: 识别文章最顶层的主标题(通常为文章题目或书名),并使用Markdown的 # 级别表示。 + +识别层级标题: 从文章内容中提取所有层级的内容标题(从主标题后的第一个标题开始,Level 1 至 Level 4)。判断层级依据: + +视觉与结构特征: 如独立成行/段、位置(行首)、格式(加粗、编号如 1., 1.1, (1), - 等)。 + +语义逻辑: 标题之间的包含和并列关系。 + +在Markdown中,使用相应标题级别: + +Level 1 标题用 ## + +Level 2 标题用 ### + +Level 3 标题用 #### + +Level 4 标题用 ##### + +精确保留原文标题文字,不得修改、概括或润色。 + +处理正文内容: 对于每个标题下的正文内容区块(从该标题后开始,直到下一个同级或更高级别标题前): + +直接保留原文文本,但根据内容结构适当格式化为Markdown。 + +如果内容是列表(如项目符号或编号列表),使用Markdown列表语法(例如 - 用于无序列表,1. 用于有序列表)。 + +保持段落和换行不变。 + +输出格式: 输出必须是纯Markdown格式的文本,不得包含任何额外说明、JSON或非Markdown元素。确保输出与示例风格一致。`,Ee=V||"请将以下内容转换为结构化的Markdown格式:";try{const ye=await fetch("http://127.0.0.1:8000/api/ai/generate-stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({system_prompt:ie,user_prompt:Ee,model:"glm-4.5",base_url:"https://open.bigmodel.cn/api/paas/v4/",api_key:"ce39bdd4fcf34ec0aec75072bc9ff988.hAp7HZTVUwy7vImn"})});if(!ye.ok)throw new Error(`HTTP error! status: ${ye.status}`);const fe=ye.body.getReader(),Ue=new TextDecoder;let S="",D=0;for(;;){const{done:F,value:G}=await fe.read();if(F)break;S+=Ue.decode(G,{stream:!0});const q=S.split(` +`);S=q.pop()||"";for(const H of q)if(H.startsWith("data: "))try{const X=JSON.parse(H.slice(6));if(X.type==="start")Me("AI开始生成内容...","info");else if(X.type==="chunk"){D++,i.value+=X.content;try{const ne=et(i.value);a.value=JSON.stringify(ne,null,2),window.dispatchEvent(new CustomEvent("realtime-mindmap-update",{detail:{data:ne,title:ne.topic||"AI生成中...",source:"ai-streaming",chunkCount:D}}))}catch(ne){console.warn("⚠️ 实时转换JSON失败:",ne),console.warn("⚠️ 当前Markdown内容:",i.value)}}else if(X.type==="end")Me("AI内容生成完成!","success");else if(X.type==="error")throw new Error(X.content)}catch(X){console.warn("解析流式数据失败:",X)}}}catch(ye){throw console.error("流式AI API调用失败:",ye),ye}},ge=j=>{if(j.includes("|")&&j.includes("-")){const V=j.split(` +`);let re=!1,ie=!1;for(const Ee of V){const ye=Ee.trim();ye.includes("|")&&ye.split("|").length>=3&&(re=!0),ye.includes("|")&&ye.includes("-")&&/^[\s\|\-\:]+$/.test(ye)&&(ie=!0)}if(re&&ie)return console.log("🚫 formatMarkdownToText: 检测到表格内容,跳过转换"),j}return j.replace(/^### (.*$)/gim,"📋 $1").replace(/^## (.*$)/gim,"📌 $1").replace(/^# (.*$)/gim,"🎯 $1").replace(/\*\*(.*?)\*\*/g,(V,re)=>{if(re.includes(":")){const ie=re.split(":");if(ie.length>1)return`【${ie[0]}】: ${ie.slice(1).join(":")}`}return`【${re}】`}).replace(/\*(.*?)\*/g,"《$1》").replace(/^- (.*$)/gim," • $1").replace(/^\d+\. (.*$)/gim," $&").replace(/```(.*?)```/gims,"💻 $1").replace(/`(.*?)`/g,"「$1」").replace(/\[([^\]]+)\]\([^)]+\)/g,"🔗 $1").replace(/\n\n/g,` +`).replace(/\n/g,` + `)},Ae=async()=>{if(!i.value.trim()){Me("请输入Markdown内容","error");return}l.value=!0;try{const j=et(i.value);a.value=JSON.stringify(j,null,2)}catch(j){console.error("转换失败:",j),Me("转换失败,请检查Markdown格式","error")}finally{l.value=!1}},et=j=>{const V=j.split(` +`);let re=null;const ie=[];let Ee=0,ye=[];if(V.forEach((fe,Ue)=>{const S=fe.trim(),D=S.match(/^(#{1,6})\s+(.+)$/);if(D){if(ye.length>0&&ie.length>0){const X=ye.join(` +`).trim();X&&(Ee=Je(X,ie[ie.length-1],Ee).nodeCounter),ye=[]}const F=D[1].length,G=D[2].trim(),q=ge(G),H={id:`node_${Ee++}`,topic:q,children:[],level:F,data:{}};if(F===1&&!re)re=H,ie.length=0,ie.push(re);else{for(;ie.length>1&&ie[ie.length-1].level>=F;)ie.pop();ie.length>0&&ie[ie.length-1].children.push(H),ie.push(H)}}else S&&ye.push(S)}),ye.length>0&&ie.length>0){const fe=ye.join(` +`).trim();fe&&(fe.includes("|")&&console.log("🔍 处理最后的内容(包含表格):",fe.substring(0,200)+"..."),Ee=Je(fe,ie[ie.length-1],Ee).nodeCounter)}return re||(re={id:"root",topic:"根节点",children:[],data:{}}),re},Je=(j,V,re)=>{if(ot(j)){console.log("🎯 检测到表格内容,创建表格节点");const fe={id:`node_${re++}`,topic:j,children:[],level:(V.level||0)+1,data:{}};return V.children.push(fe),{nodeCounter:re}}const ie=j.split(` +`);let Ee=re,ye=[];for(let fe=0;fe0){const X=ge(q.join(` +`));G.topic=G.topic+` + +`+X}V.children.push(G),fe=H-1}else S&&ye.push(S)}if(ye.length>0){const fe=ye.join(` +`).trim();if(fe)if(ot(fe)){console.log("🎯 检测到表格内容,创建表格节点");const Ue={id:`node_${Ee++}`,topic:fe,children:[],level:(V.level||0)+1,data:{}};V.children.push(Ue)}else fe.split(` + +`).filter(S=>S.trim()).forEach(S=>{const D=ge(S.trim());if(D){const F={id:`node_${Ee++}`,topic:D,children:[],level:(V.level||0)+1,data:{}};V.children.push(F)}})}return{nodeCounter:Ee}},ot=j=>{if(!j||typeof j!="string")return!1;j.includes("|")&&console.log("🔍 检查表格内容:",j.substring(0,200)+"...");const V=j.split(` +`);let re=!1,ie=!1;for(const Ue of V){const S=Ue.trim();S.includes("|")&&S.split("|").length>=3&&(re=!0,console.log("✅ 找到表格行:",S)),S.includes("|")&&S.includes("-")&&/^[\s\|\-\:]+$/.test(S)&&(ie=!0,console.log("✅ 找到分隔符行:",S))}const Ee=(j.match(/\|/g)||[]).length,ye=Ee>=4,fe=re&&ie||re&&ye;return console.log("🔍 表格检测结果:",{hasTableRow:re,hasSeparator:ie,pipeCount:Ee,hasMultiplePipes:ye,result:fe}),fe},Fe=async()=>{if(!i.value){Me("没有Markdown内容可复制","error");return}try{await navigator.clipboard.writeText(i.value),Me("Markdown已复制到剪贴板","success")}catch{const V=document.createElement("textarea");V.value=i.value,document.body.appendChild(V),V.select(),document.execCommand("copy"),V.remove(),Me("Markdown已复制到剪贴板","success")}},Ie=async()=>{try{await navigator.clipboard.writeText(a.value),Me("JSON已复制到剪贴板","success")}catch(j){console.error("复制失败:",j),Me("复制失败","error")}},ve=async()=>{if(!a.value){Me("请先生成或转换JSON数据","error");return}try{const j=JSON.parse(a.value),V=j.topic||j.title||`AI生成的思维导图_${new Date().toLocaleString()}`,re=new CustomEvent("save-preview-to-database",{detail:{data:j,title:V,source:"ai-generated",timestamp:Date.now()}});window.dispatchEvent(re),setTimeout(()=>{Me("思维导图已保存成功!","success"),v.value=null,b.value&&(b.value.value="")},2e3)}catch(j){console.error("JSON解析失败:",j),Me("JSON格式错误,请检查数据","error")}},Me=(j,V="info")=>{const re=document.createElement("div");switch(re.className=`notification notification-${V}`,re.textContent=j,re.style.cssText=` + position: fixed; + top: 20px; + right: 20px; + padding: 12px 20px; + border-radius: 8px; + font-size: 14px; + font-weight: 500; + z-index: 10000; + box-shadow: 0 4px 12px rgba(0,0,0,0.15); + animation: slideIn 0.3s ease; + max-width: 300px; + word-wrap: break-word; + `,V){case"success":re.style.background="#4CAF50",re.style.color="white";break;case"error":re.style.background="#f44336",re.style.color="white";break;case"info":default:re.style.background="#2196F3",re.style.color="white";break}if(!document.querySelector("#notification-styles")){const ie=document.createElement("style");ie.id="notification-styles",ie.textContent=` + @keyframes slideIn { + from { transform: translateX(100%); opacity: 0; } + to { transform: translateX(0); opacity: 1; } + } + @keyframes slideOut { + from { transform: translateX(0); opacity: 1; } + to { transform: translateX(100%); opacity: 0; } + } + `,document.head.appendChild(ie)}document.body.appendChild(re),setTimeout(()=>{re.style.animation="slideOut 0.3s ease",setTimeout(()=>{re.parentNode&&re.parentNode.removeChild(re)},300)},3e3)},tt=()=>{i.value="",a.value="",Me("内容已清空","info")},We=(j,V,re=null)=>{const ie={title:j,content:V,mindmapId:re,timestamp:new Date};c.value.unshift(ie),c.value.length>10&&(c.value=c.value.slice(0,10)),localStorage.setItem("ai-sidebar-history",JSON.stringify(c.value))},_e=async j=>{j.mindmapId?window.dispatchEvent(new CustomEvent("loadMindmapFromHistory",{detail:{mindmapId:j.mindmapId,title:j.title}})):(i.value=j.content,await Ae(),window.dispatchEvent(new CustomEvent("loadMindmapFromHistory",{detail:{markdown:j.content,json:a.value,title:j.title}})))},St=j=>new Date(j).toLocaleString("zh-CN");Oa(()=>{const j=localStorage.getItem("ai-sidebar-history");if(j)try{c.value=JSON.parse(j)}catch(V){console.error("加载历史记录失败:",V)}window.addEventListener("add-to-history",V=>{const{title:re,content:ie,timestamp:Ee}=V.detail;We(re,ie,null)}),window.addEventListener("mindmap-saved",V=>{const{mindmapId:re,title:ie,timestamp:Ee}=V.detail,ye=c.value.find(fe=>fe.title===ie||fe.timestamp&&Math.abs(fe.timestamp-Ee)<5e3);ye?(ye.mindmapId=re,localStorage.setItem("ai-sidebar-history",JSON.stringify(c.value))):We(ie,"",re)}),i0(s,(V,re)=>{}),i0(i,(V,re)=>{})});const mt=async()=>{try{const j=await fetch("http://127.0.0.1:8000/api/ai/test-stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({test:"data"})});if(!j.ok)throw new Error(`HTTP error! status: ${j.status}`);const V=j.body.getReader(),re=new TextDecoder;let ie="";for(;;){const{done:Ee,value:ye}=await V.read();if(Ee)break;ie+=re.decode(ye,{stream:!0});const fe=ie.split(` +`);ie=fe.pop()||"";for(const Ue of fe)if(Ue.startsWith("data: "))try{const S=JSON.parse(Ue.slice(6))}catch(S){console.warn("解析测试数据失败:",S)}}}catch(j){console.error("❌ 测试流式API失败:",j)}};return window.testStreamAPI=mt,(j,V)=>(Ve(),Ke("div",b7,[Y("div",{class:"sidebar-toggle",onClick:x,title:n.value?"展开AI助手":"折叠AI助手",style:On({left:n.value?"10px":"420px"})},[n.value?(Ve(),Ke("svg",w7,[...V[1]||(V[1]=[Y("path",{d:"M9 18l6-6-6-6"},null,-1)])])):(Ve(),Ke("svg",x7,[...V[2]||(V[2]=[Y("path",{d:"M15 18l-6-6 6-6"},null,-1)])]))],12,y7),Y("div",{class:Ln(["ai-sidebar",{"sidebar-collapsed":n.value}])},[ds(Y("div",k7,[V[12]||(V[12]=Y("div",{class:"sidebar-header"},[Y("h3",null,"🤖 AI 助手"),Y("p",null,"文档转思维导图工具"),Y("div",{class:"collapse-hint"},[Y("small",null,"💡 点击右侧按钮可折叠侧边栏")])],-1)),Y("div",S7,[V[6]||(V[6]=Y("h4",null,"📁 生成思维导图",-1)),Y("div",T7,[V[4]||(V[4]=Y("label",null,"上传文件:",-1)),Y("div",{class:"file-upload-area",onDrop:M,onDragover:k,onDragleave:T},[Y("input",{type:"file",ref_key:"fileInput",ref:b,onChange:y,accept:".txt,.md,.doc,.docx,.pdf",class:"file-input"},null,544),Y("div",{class:Ln(["file-upload-placeholder",{"drag-over":d.value}])},[...V[3]||(V[3]=[Y("span",{class:"upload-icon"},"📎",-1),Y("span",{class:"upload-text"},"点击选择文件或拖拽文件到此处",-1),Y("span",{class:"upload-hint"},"支持 .txt, .md, .doc, .docx, .pdf 格式",-1)])],2)],32)]),v.value?(Ve(),Ke("div",A7,[Y("div",E7,[Y("div",C7,[Y("span",M7,"📄 "+ur(v.value.name),1),Y("span",N7,"("+ur(I(v.value.size))+")",1)]),Y("button",{onClick:N,class:"btn-remove",title:"删除文件"},[...V[5]||(V[5]=[Y("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[Y("path",{d:"M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M10 11v6M14 11v6"})],-1)])])])])):Sr("",!0),Y("div",D7,[Y("button",{onClick:O,disabled:!v.value||o.value,class:"btn-primary"},[o.value?(Ve(),Ke("span",I7,"AI生成中...")):(Ve(),Ke("span",_7,"AI生成思维导图"))],8,R7)])]),c.value.length>0?(Ve(),Ke("div",O7,[V[7]||(V[7]=Y("h4",null,"📚 历史记录",-1)),Y("div",L7,[(Ve(!0),Ke(er,null,du(c.value,(re,ie)=>(Ve(),Ke("div",{key:ie,class:"history-item",onClick:Ee=>_e(re)},[Y("div",F7,ur(re.title),1),Y("div",$7,ur(St(re.timestamp)),1)],8,z7))),128))])])):Sr("",!0),Y("div",B7,[V[9]||(V[9]=Y("h4",null,"📝 AI生成的Markdown结果",-1)),Y("div",P7,[V[8]||(V[8]=Y("label",null,"Markdown内容:",-1)),ds(Y("textarea",{"onUpdate:modelValue":V[0]||(V[0]=re=>i.value=re),placeholder:"AI生成的Markdown内容将显示在这里",rows:"6",readonly:"",class:"markdown-result"},null,512),[[Pa,i.value]])]),Y("div",H7,[Y("button",{onClick:Ae,disabled:l.value,class:"btn-secondary"},[l.value?(Ve(),Ke("span",j7,"转换中...")):(Ve(),Ke("span",U7,"🔄 转换为JSON"))],8,q7),Y("button",{onClick:tt,class:"btn-clear"},"清空"),Y("button",{onClick:Fe,class:"btn-copy"},"📋 复制Markdown")])]),Y("div",V7,[V[11]||(V[11]=Y("h4",null,"📊 Markdown转JSON结果",-1)),f.value?(Ve(),Ke("div",W7,[V[10]||(V[10]=Y("div",{class:"spinner"},null,-1)),Y("span",null,ur(p.value),1)])):Sr("",!0),Y("div",G7,[Y("pre",K7,ur(a.value||"JSON转换结果将显示在这里"),1),Y("div",Y7,[Y("button",{onClick:Ie,class:"btn-copy"},"📋 复制JSON"),Y("button",{onClick:ve,disabled:f.value,class:"btn-copy"},ur(f.value?"处理中...":"👁️ 预览"),9,X7)])])])],512),[[Lf,!n.value]])],2)]))}},Z7=_o(J7,[["__scopeId","data-v-d0b1a702"]]);const Q7={class:"markdown-test"},e8={class:"test-section"},t8={class:"test-section"},r8=["innerHTML"],n8={class:"test-section"},s8={class:"test-cases"},i8=["onClick"],a8={__name:"MarkdownTest",setup(t){const e=ze(`# 测试标题 + +这是一个**粗体**和*斜体*的测试。 + +## 表格测试 + +| 产品 | 价格 | 库存 | +|------|------|------| +| 苹果 | 4元 | 100个 | +| 香蕉 | 2元 | 50个 | + +## 代码测试 + +\`\`\`javascript +function hello() { + console.log('Hello World!'); +} +\`\`\` + +行内代码:\`const name = 'test'\` + +## 列表测试 + +- 项目1 +- 项目2 + - 子项目2.1 + - 子项目2.2 +- 项目3 + +## 链接测试 + +- [GitHub](https://github.com) +- [Vue.js](https://vuejs.org)`),r=ze([{name:"基础表格",content:`# 产品价格表 + +| 产品 | 价格 | +|------|------| +| 苹果 | 4元 | +| 香蕉 | 2元 |`},{name:"复杂表格",content:`# 技术栈对比 + +| 技术 | 前端 | 后端 | 数据库 | +|------|------|------|--------| +| Vue.js | ✅ | ❌ | ❌ | +| Django | ❌ | ✅ | ❌ | +| PostgreSQL | ❌ | ❌ | ✅ |`},{name:"代码块",content:`# 代码示例 + +\`\`\`javascript +function markdownToJSON(markdown) { + const lines = markdown.split('\\n'); + // 处理逻辑... + return result; +} +\`\`\``},{name:"混合内容",content:`# 混合内容测试 + +这是一个包含**粗体**、*斜体*和\`行内代码\`的段落。 + +## 表格 + +| 功能 | 状态 | 说明 | +|------|------|------| +| 表格渲染 | ✅ | 支持markdown表格 | +| 代码高亮 | ✅ | 支持代码块 | + +## 代码 + +\`\`\`python +def hello_world(): + print("Hello, World!") +\`\`\``}]),n=Ou(()=>{if(!e.value)return"";try{return ya(e.value)}catch(a){return`
    渲染失败: ${a.message}
    `}}),s=()=>{},i=a=>{e.value=a.content};return(a,o)=>(Ve(),Ke("div",Q7,[o[4]||(o[4]=Y("h2",null,"Markdown渲染测试",-1)),Y("div",e8,[o[1]||(o[1]=Y("h3",null,"输入Markdown内容",-1)),ds(Y("textarea",{"onUpdate:modelValue":o[0]||(o[0]=l=>e.value=l),placeholder:"输入markdown内容...",rows:"10",class:"markdown-input"},null,512),[[Pa,e.value]])]),Y("div",t8,[o[2]||(o[2]=Y("h3",null,"渲染结果",-1)),Y("div",{class:"rendered-content",innerHTML:n.value},null,8,r8)]),Y("div",n8,[o[3]||(o[3]=Y("h3",null,"测试用例",-1)),Y("button",{onClick:s,class:"test-btn"},"加载测试用例"),Y("div",s8,[(Ve(!0),Ke(er,null,du(r.value,(l,c)=>(Ve(),Ke("button",{key:c,onClick:d=>i(l),class:"test-case-btn"},ur(l.name),9,i8))),128))])])]))}},o8=_o(a8,[["__scopeId","data-v-68a00828"]]);const l8={id:"app"},c8={class:"test-mode-toggle",style:{display:"none"}},u8={key:0,class:"test-mode"},d8={key:1},h8={class:"main-content"},f8={__name:"App",setup(t){const e=ze(null),r=ze(!1),n=()=>{r.value=!r.value},s=()=>{e.value&&e.value.showMindMapPage()};return(i,a)=>(Ve(),Ke("div",l8,[a[0]||(a[0]=Ru("« ",-1)),Y("div",c8,[Y("button",{onClick:n,class:"test-btn"},ur(r.value?"切换到思维导图":"测试Markdown渲染"),1)]),r.value?(Ve(),Ke("div",u8,[Ht(o8)])):(Ve(),Ke("div",d8,[Ht(Z7,{onStartRealtimeGeneration:s}),Y("div",h8,[Ht(m7,{ref_key:"mindMapRef",ref:e},null,512)])]))]))}};tp(f8).mount("#app");export{Dc as _,Wl as c,v8 as g}; diff --git a/frontend/dist/assets/index-a09f7810.js b/frontend/dist/assets/index-a09f7810.js deleted file mode 100644 index d07738a..0000000 --- a/frontend/dist/assets/index-a09f7810.js +++ /dev/null @@ -1,594 +0,0 @@ -var Id=Object.defineProperty;var _d=(t,e,r)=>e in t?Id(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Ge=(t,e,r)=>(_d(t,typeof e!="symbol"?e+"":e,r),r);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function r(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=r(i);fetch(i.href,s)}})();/** -* @vue/shared v3.5.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function xa(t){const e=Object.create(null);for(const r of t.split(","))e[r]=1;return r=>r in e}const Ye={},Mn=[],rr=()=>{},Rc=()=>!1,Ii=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),ka=t=>t.startsWith("onUpdate:"),wt=Object.assign,Sa=(t,e)=>{const r=t.indexOf(e);r>-1&&t.splice(r,1)},Od=Object.prototype.hasOwnProperty,He=(t,e)=>Od.call(t,e),Me=Array.isArray,Nn=t=>_i(t)==="[object Map]",Ic=t=>_i(t)==="[object Set]",De=t=>typeof t=="function",dt=t=>typeof t=="string",Jr=t=>typeof t=="symbol",lt=t=>t!==null&&typeof t=="object",_c=t=>(lt(t)||De(t))&&De(t.then)&&De(t.catch),Oc=Object.prototype.toString,_i=t=>Oc.call(t),Ld=t=>_i(t).slice(8,-1),Lc=t=>_i(t)==="[object Object]",Ta=t=>dt(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,Qn=xa(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Oi=t=>{const e=Object.create(null);return r=>e[r]||(e[r]=t(r))},zd=/-(\w)/g,Wr=Oi(t=>t.replace(zd,(e,r)=>r?r.toUpperCase():"")),Fd=/\B([A-Z])/g,Qr=Oi(t=>t.replace(Fd,"-$1").toLowerCase()),zc=Oi(t=>t.charAt(0).toUpperCase()+t.slice(1)),as=Oi(t=>t?`on${zc(t)}`:""),Vr=(t,e)=>!Object.is(t,e),Y0=(t,...e)=>{for(let r=0;r{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:n,value:r})},Bs=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let Fo;const Li=()=>Fo||(Fo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ln(t){if(Me(t)){const e={};for(let r=0;r{if(r){const n=r.split(Bd);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}function pn(t){let e="";if(dt(t))e=t;else if(Me(t))for(let r=0;r!!(t&&t.__v_isRef===!0),Qt=t=>dt(t)?t:t==null?"":Me(t)||lt(t)&&(t.toString===Oc||!De(t.toString))?Bc(t)?Qt(t.value):JSON.stringify(t,Pc,2):String(t),Pc=(t,e)=>Bc(e)?Pc(t,e.value):Nn(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((r,[n,i],s)=>(r[os(n,s)+" =>"]=i,r),{})}:Ic(e)?{[`Set(${e.size})`]:[...e.values()].map(r=>os(r))}:Jr(e)?os(e):lt(e)&&!Me(e)&&!Lc(e)?String(e):e,os=(t,e="")=>{var r;return Jr(t)?`Symbol(${(r=t.description)!=null?r:e})`:t};/** -* @vue/reactivity v3.5.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let _t;class Ud{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=_t,!e&&_t&&(this.index=(_t.scopes||(_t.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,r;if(this.scopes)for(e=0,r=this.scopes.length;e0&&--this._on===0&&(_t=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){this._active=!1;let r,n;for(r=0,n=this.effects.length;r0)return;if(t0){let e=t0;for(t0=void 0;e;){const r=e.next;e.next=void 0,e.flags&=-9,e=r}}let t;for(;e0;){let e=e0;for(e0=void 0;e;){const r=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(n){t||(t=n)}e=r}}if(t)throw t}function Uc(t){for(let e=t.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Vc(t){let e,r=t.depsTail,n=r;for(;n;){const i=n.prevDep;n.version===-1?(n===r&&(r=i),Ca(n),Wd(n)):e=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=i}t.deps=e,t.depsTail=r}function Ps(t){for(let e=t.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(Wc(e.dep.computed)||e.dep.version!==e.version))return!0;return!!t._dirty}function Wc(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===c0)||(t.globalVersion=c0,!t.isSSR&&t.flags&128&&(!t.deps&&!t._dirty||!Ps(t))))return;t.flags|=2;const e=t.dep,r=Je,n=nr;Je=t,nr=!0;try{Uc(t);const i=t.fn(t._value);(e.version===0||Vr(i,t._value))&&(t.flags|=128,t._value=i,e.version++)}catch(i){throw e.version++,i}finally{Je=r,nr=n,Vc(t),t.flags&=-3}}function Ca(t,e=!1){const{dep:r,prevSub:n,nextSub:i}=t;if(n&&(n.nextSub=i,t.prevSub=void 0),i&&(i.prevSub=n,t.nextSub=void 0),r.subs===t&&(r.subs=n,!n&&r.computed)){r.computed.flags&=-5;for(let s=r.computed.deps;s;s=s.nextDep)Ca(s,!0)}!e&&!--r.sc&&r.map&&r.map.delete(r.key)}function Wd(t){const{prevDep:e,nextDep:r}=t;e&&(e.nextDep=r,t.prevDep=void 0),r&&(r.prevDep=e,t.nextDep=void 0)}let nr=!0;const Gc=[];function Rr(){Gc.push(nr),nr=!1}function Ir(){const t=Gc.pop();nr=t===void 0?!0:t}function $o(t){const{cleanup:e}=t;if(t.cleanup=void 0,e){const r=Je;Je=void 0;try{e()}finally{Je=r}}}let c0=0;class Gd{constructor(e,r){this.sub=e,this.dep=r,this.version=r.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Ma{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!Je||!nr||Je===this.computed)return;let r=this.activeLink;if(r===void 0||r.sub!==Je)r=this.activeLink=new Gd(Je,this),Je.deps?(r.prevDep=Je.depsTail,Je.depsTail.nextDep=r,Je.depsTail=r):Je.deps=Je.depsTail=r,Kc(r);else if(r.version===-1&&(r.version=this.version,r.nextDep)){const n=r.nextDep;n.prevDep=r.prevDep,r.prevDep&&(r.prevDep.nextDep=n),r.prevDep=Je.depsTail,r.nextDep=void 0,Je.depsTail.nextDep=r,Je.depsTail=r,Je.deps===r&&(Je.deps=n)}return r}trigger(e){this.version++,c0++,this.notify(e)}notify(e){Aa();try{for(let r=this.subs;r;r=r.prevSub)r.sub.notify()&&r.sub.dep.notify()}finally{Ea()}}}function Kc(t){if(t.dep.sc++,t.sub.flags&4){const e=t.dep.computed;if(e&&!t.dep.subs){e.flags|=20;for(let n=e.deps;n;n=n.nextDep)Kc(n)}const r=t.dep.subs;r!==t&&(t.prevSub=r,r&&(r.nextSub=t)),t.dep.subs=t}}const Hs=new WeakMap,hn=Symbol(""),qs=Symbol(""),u0=Symbol("");function xt(t,e,r){if(nr&&Je){let n=Hs.get(t);n||Hs.set(t,n=new Map);let i=n.get(r);i||(n.set(r,i=new Ma),i.map=n,i.key=r),i.track()}}function Ar(t,e,r,n,i,s){const a=Hs.get(t);if(!a){c0++;return}const o=l=>{l&&l.trigger()};if(Aa(),e==="clear")a.forEach(o);else{const l=Me(t),c=l&&Ta(r);if(l&&r==="length"){const d=Number(n);a.forEach((f,p)=>{(p==="length"||p===u0||!Jr(p)&&p>=d)&&o(f)})}else switch((r!==void 0||a.has(void 0))&&o(a.get(r)),c&&o(a.get(u0)),e){case"add":l?c&&o(a.get("length")):(o(a.get(hn)),Nn(t)&&o(a.get(qs)));break;case"delete":l||(o(a.get(hn)),Nn(t)&&o(a.get(qs)));break;case"set":Nn(t)&&o(a.get(hn));break}}Ea()}function xn(t){const e=Pe(t);return e===t?e:(xt(e,"iterate",u0),Gt(t)?e:e.map(yt))}function zi(t){return xt(t=Pe(t),"iterate",u0),t}const Kd={__proto__:null,[Symbol.iterator](){return cs(this,Symbol.iterator,yt)},concat(...t){return xn(this).concat(...t.map(e=>Me(e)?xn(e):e))},entries(){return cs(this,"entries",t=>(t[1]=yt(t[1]),t))},every(t,e){return wr(this,"every",t,e,void 0,arguments)},filter(t,e){return wr(this,"filter",t,e,r=>r.map(yt),arguments)},find(t,e){return wr(this,"find",t,e,yt,arguments)},findIndex(t,e){return wr(this,"findIndex",t,e,void 0,arguments)},findLast(t,e){return wr(this,"findLast",t,e,yt,arguments)},findLastIndex(t,e){return wr(this,"findLastIndex",t,e,void 0,arguments)},forEach(t,e){return wr(this,"forEach",t,e,void 0,arguments)},includes(...t){return us(this,"includes",t)},indexOf(...t){return us(this,"indexOf",t)},join(t){return xn(this).join(t)},lastIndexOf(...t){return us(this,"lastIndexOf",t)},map(t,e){return wr(this,"map",t,e,void 0,arguments)},pop(){return jn(this,"pop")},push(...t){return jn(this,"push",t)},reduce(t,...e){return Bo(this,"reduce",t,e)},reduceRight(t,...e){return Bo(this,"reduceRight",t,e)},shift(){return jn(this,"shift")},some(t,e){return wr(this,"some",t,e,void 0,arguments)},splice(...t){return jn(this,"splice",t)},toReversed(){return xn(this).toReversed()},toSorted(t){return xn(this).toSorted(t)},toSpliced(...t){return xn(this).toSpliced(...t)},unshift(...t){return jn(this,"unshift",t)},values(){return cs(this,"values",yt)}};function cs(t,e,r){const n=zi(t),i=n[e]();return n!==t&&!Gt(t)&&(i._next=i.next,i.next=()=>{const s=i._next();return s.value&&(s.value=r(s.value)),s}),i}const Yd=Array.prototype;function wr(t,e,r,n,i,s){const a=zi(t),o=a!==t&&!Gt(t),l=a[e];if(l!==Yd[e]){const f=l.apply(t,s);return o?yt(f):f}let c=r;a!==t&&(o?c=function(f,p){return r.call(this,yt(f),p,t)}:r.length>2&&(c=function(f,p){return r.call(this,f,p,t)}));const d=l.call(a,c,n);return o&&i?i(d):d}function Bo(t,e,r,n){const i=zi(t);let s=r;return i!==t&&(Gt(t)?r.length>3&&(s=function(a,o,l){return r.call(this,a,o,l,t)}):s=function(a,o,l){return r.call(this,a,yt(o),l,t)}),i[e](s,...n)}function us(t,e,r){const n=Pe(t);xt(n,"iterate",u0);const i=n[e](...r);return(i===-1||i===!1)&&Ia(r[0])?(r[0]=Pe(r[0]),n[e](...r)):i}function jn(t,e,r=[]){Rr(),Aa();const n=Pe(t)[e].apply(t,r);return Ea(),Ir(),n}const Xd=xa("__proto__,__v_isRef,__isVue"),Yc=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(Jr));function Zd(t){Jr(t)||(t=String(t));const e=Pe(this);return xt(e,"has",t),e.hasOwnProperty(t)}class Xc{constructor(e=!1,r=!1){this._isReadonly=e,this._isShallow=r}get(e,r,n){if(r==="__v_skip")return e.__v_skip;const i=this._isReadonly,s=this._isShallow;if(r==="__v_isReactive")return!i;if(r==="__v_isReadonly")return i;if(r==="__v_isShallow")return s;if(r==="__v_raw")return n===(i?s?oh:eu:s?Qc:Jc).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const a=Me(e);if(!i){let l;if(a&&(l=Kd[r]))return l;if(r==="hasOwnProperty")return Zd}const o=Reflect.get(e,r,St(e)?e:n);return(Jr(r)?Yc.has(r):Xd(r))||(i||xt(e,"get",r),s)?o:St(o)?a&&Ta(r)?o:o.value:lt(o)?i?tu(o):Da(o):o}}class Zc extends Xc{constructor(e=!1){super(!1,e)}set(e,r,n,i){let s=e[r];if(!this._isShallow){const l=Gr(s);if(!Gt(n)&&!Gr(n)&&(s=Pe(s),n=Pe(n)),!Me(e)&&St(s)&&!St(n))return l||(s.value=n),!0}const a=Me(e)&&Ta(r)?Number(r)t,N0=t=>Reflect.getPrototypeOf(t);function rh(t,e,r){return function(...n){const i=this.__v_raw,s=Pe(i),a=Nn(s),o=t==="entries"||t===Symbol.iterator&&a,l=t==="keys"&&a,c=i[t](...n),d=r?js:e?li:yt;return!e&&xt(s,"iterate",l?qs:hn),{next(){const{value:f,done:p}=c.next();return p?{value:f,done:p}:{value:o?[d(f[0]),d(f[1])]:d(f),done:p}},[Symbol.iterator](){return this}}}}function D0(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function nh(t,e){const r={get(i){const s=this.__v_raw,a=Pe(s),o=Pe(i);t||(Vr(i,o)&&xt(a,"get",i),xt(a,"get",o));const{has:l}=N0(a),c=e?js:t?li:yt;if(l.call(a,i))return c(s.get(i));if(l.call(a,o))return c(s.get(o));s!==a&&s.get(i)},get size(){const i=this.__v_raw;return!t&&xt(Pe(i),"iterate",hn),i.size},has(i){const s=this.__v_raw,a=Pe(s),o=Pe(i);return t||(Vr(i,o)&&xt(a,"has",i),xt(a,"has",o)),i===o?s.has(i):s.has(i)||s.has(o)},forEach(i,s){const a=this,o=a.__v_raw,l=Pe(o),c=e?js:t?li:yt;return!t&&xt(l,"iterate",hn),o.forEach((d,f)=>i.call(s,c(d),c(f),a))}};return wt(r,t?{add:D0("add"),set:D0("set"),delete:D0("delete"),clear:D0("clear")}:{add(i){!e&&!Gt(i)&&!Gr(i)&&(i=Pe(i));const s=Pe(this);return N0(s).has.call(s,i)||(s.add(i),Ar(s,"add",i,i)),this},set(i,s){!e&&!Gt(s)&&!Gr(s)&&(s=Pe(s));const a=Pe(this),{has:o,get:l}=N0(a);let c=o.call(a,i);c||(i=Pe(i),c=o.call(a,i));const d=l.call(a,i);return a.set(i,s),c?Vr(s,d)&&Ar(a,"set",i,s):Ar(a,"add",i,s),this},delete(i){const s=Pe(this),{has:a,get:o}=N0(s);let l=a.call(s,i);l||(i=Pe(i),l=a.call(s,i)),o&&o.call(s,i);const c=s.delete(i);return l&&Ar(s,"delete",i,void 0),c},clear(){const i=Pe(this),s=i.size!==0,a=i.clear();return s&&Ar(i,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(i=>{r[i]=rh(i,t,e)}),r}function Na(t,e){const r=nh(t,e);return(n,i,s)=>i==="__v_isReactive"?!t:i==="__v_isReadonly"?t:i==="__v_raw"?n:Reflect.get(He(r,i)&&i in n?r:n,i,s)}const ih={get:Na(!1,!1)},sh={get:Na(!1,!0)},ah={get:Na(!0,!1)};const Jc=new WeakMap,Qc=new WeakMap,eu=new WeakMap,oh=new WeakMap;function lh(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ch(t){return t.__v_skip||!Object.isExtensible(t)?0:lh(Ld(t))}function Da(t){return Gr(t)?t:Ra(t,!1,Qd,ih,Jc)}function uh(t){return Ra(t,!1,th,sh,Qc)}function tu(t){return Ra(t,!0,eh,ah,eu)}function Ra(t,e,r,n,i){if(!lt(t)||t.__v_raw&&!(e&&t.__v_isReactive))return t;const s=ch(t);if(s===0)return t;const a=i.get(t);if(a)return a;const o=new Proxy(t,s===2?n:r);return i.set(t,o),o}function Dn(t){return Gr(t)?Dn(t.__v_raw):!!(t&&t.__v_isReactive)}function Gr(t){return!!(t&&t.__v_isReadonly)}function Gt(t){return!!(t&&t.__v_isShallow)}function Ia(t){return t?!!t.__v_raw:!1}function Pe(t){const e=t&&t.__v_raw;return e?Pe(e):t}function dh(t){return!He(t,"__v_skip")&&Object.isExtensible(t)&&Fc(t,"__v_skip",!0),t}const yt=t=>lt(t)?Da(t):t,li=t=>lt(t)?tu(t):t;function St(t){return t?t.__v_isRef===!0:!1}function ze(t){return hh(t,!1)}function hh(t,e){return St(t)?t:new fh(t,e)}class fh{constructor(e,r){this.dep=new Ma,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=r?e:Pe(e),this._value=r?e:yt(e),this.__v_isShallow=r}get value(){return this.dep.track(),this._value}set value(e){const r=this._rawValue,n=this.__v_isShallow||Gt(e)||Gr(e);e=n?e:Pe(e),Vr(e,r)&&(this._rawValue=e,this._value=n?e:yt(e),this.dep.trigger())}}function ph(t){return St(t)?t.value:t}const mh={get:(t,e,r)=>e==="__v_raw"?t:ph(Reflect.get(t,e,r)),set:(t,e,r,n)=>{const i=t[e];return St(i)&&!St(r)?(i.value=r,!0):Reflect.set(t,e,r,n)}};function ru(t){return Dn(t)?t:new Proxy(t,mh)}class gh{constructor(e,r,n){this.fn=e,this.setter=r,this._value=void 0,this.dep=new Ma(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=c0-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!r,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&Je!==this)return jc(this,!0),!0}get value(){const e=this.dep.track();return Wc(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function vh(t,e,r=!1){let n,i;return De(t)?n=t:(n=t.get,i=t.set),new gh(n,i,r)}const R0={},ci=new WeakMap;let cn;function bh(t,e=!1,r=cn){if(r){let n=ci.get(r);n||ci.set(r,n=[]),n.push(t)}}function yh(t,e,r=Ye){const{immediate:n,deep:i,once:s,scheduler:a,augmentJob:o,call:l}=r,c=N=>i?N:Gt(N)||i===!1||i===0?Er(N,1):Er(N);let d,f,p,b,v=!1,k=!1;if(St(t)?(f=()=>t.value,v=Gt(t)):Dn(t)?(f=()=>c(t),v=!0):Me(t)?(k=!0,v=t.some(N=>Dn(N)||Gt(N)),f=()=>t.map(N=>{if(St(N))return N.value;if(Dn(N))return c(N);if(De(N))return l?l(N,2):N()})):De(t)?e?f=l?()=>l(t,2):t:f=()=>{if(p){Rr();try{p()}finally{Ir()}}const N=cn;cn=d;try{return l?l(t,3,[b]):t(b)}finally{cn=N}}:f=rr,e&&i){const N=f,_=i===!0?1/0:i;f=()=>Er(N(),_)}const w=Vd(),M=()=>{d.stop(),w&&w.active&&Sa(w.effects,d)};if(s&&e){const N=e;e=(..._)=>{N(..._),M()}}let x=k?new Array(t.length).fill(R0):R0;const A=N=>{if(!(!(d.flags&1)||!d.dirty&&!N))if(e){const _=d.run();if(i||v||(k?_.some((O,z)=>Vr(O,x[z])):Vr(_,x))){p&&p();const O=cn;cn=d;try{const z=[_,x===R0?void 0:k&&x[0]===R0?[]:x,b];x=_,l?l(e,3,z):e(...z)}finally{cn=O}}}else d.run()};return o&&o(A),d=new Hc(f),d.scheduler=a?()=>a(A,!1):A,b=N=>bh(N,!1,d),p=d.onStop=()=>{const N=ci.get(d);if(N){if(l)l(N,4);else for(const _ of N)_();ci.delete(d)}},e?n?A(!0):x=d.run():a?a(A.bind(null,!0),!0):d.run(),M.pause=d.pause.bind(d),M.resume=d.resume.bind(d),M.stop=M,M}function Er(t,e=1/0,r){if(e<=0||!lt(t)||t.__v_skip||(r=r||new Set,r.has(t)))return t;if(r.add(t),e--,St(t))Er(t.value,e,r);else if(Me(t))for(let n=0;n{Er(n,e,r)});else if(Lc(t)){for(const n in t)Er(t[n],e,r);for(const n of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,n)&&Er(t[n],e,r)}return t}/** -* @vue/runtime-core v3.5.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function v0(t,e,r,n){try{return n?t(...n):t()}catch(i){Fi(i,e,r)}}function mr(t,e,r,n){if(De(t)){const i=v0(t,e,r,n);return i&&_c(i)&&i.catch(s=>{Fi(s,e,r)}),i}if(Me(t)){const i=[];for(let s=0;s>>1,i=Et[n],s=d0(i);s=d0(r)?Et.push(t):Et.splice(xh(e),0,t),t.flags|=1,iu()}}function iu(){ui||(ui=nu.then(au))}function kh(t){Me(t)?Rn.push(...t):qr&&t.id===-1?qr.splice(An+1,0,t):t.flags&1||(Rn.push(t),t.flags|=1),iu()}function Po(t,e,r=ur+1){for(;rd0(r)-d0(n));if(Rn.length=0,qr){qr.push(...e);return}for(qr=e,An=0;Ant.id==null?t.flags&2?-1:1/0:t.id;function au(t){const e=rr;try{for(ur=0;ur{n._d&&Ko(-1);const s=di(e);let a;try{a=t(...i)}finally{di(s),n._d&&Ko(1)}return a};return n._n=!0,n._c=!0,n._d=!0,n}function hi(t,e){if(Vt===null)return t;const r=Hi(Vt),n=t.dirs||(t.dirs=[]);for(let i=0;it.__isTeleport,Eh=Symbol("_leaveCb");function Oa(t,e){t.shapeFlag&6&&t.component?(t.transition=e,Oa(t.component.subTree,e)):t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function lu(t){t.ids=[t.ids[0]+t.ids[2]+++"-",0,0]}function r0(t,e,r,n,i=!1){if(Me(t)){t.forEach((v,k)=>r0(v,e&&(Me(e)?e[k]:e),r,n,i));return}if(n0(n)&&!i){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&r0(t,e,r,n.component.subTree);return}const s=n.shapeFlag&4?Hi(n.component):n.el,a=i?null:s,{i:o,r:l}=t,c=e&&e.r,d=o.refs===Ye?o.refs={}:o.refs,f=o.setupState,p=Pe(f),b=f===Ye?Rc:v=>He(p,v);if(c!=null&&c!==l){if(dt(c))d[c]=null,b(c)&&(f[c]=null);else if(St(c)){c.value=null;const v=e;v.k&&(d[v.k]=null)}}if(De(l))v0(l,o,12,[a,d]);else{const v=dt(l),k=St(l);if(v||k){const w=()=>{if(t.f){const M=v?b(l)?f[l]:d[l]:l.value;if(i)Me(M)&&Sa(M,s);else if(Me(M))M.includes(s)||M.push(s);else if(v)d[l]=[s],b(l)&&(f[l]=d[l]);else{const x=[s];l.value=x,t.k&&(d[t.k]=x)}}else v?(d[l]=a,b(l)&&(f[l]=a)):k&&(l.value=a,t.k&&(d[t.k]=a))};a?(w.id=-1,Ft(w,r)):w()}}}Li().requestIdleCallback;Li().cancelIdleCallback;const n0=t=>!!t.type.__asyncLoader,cu=t=>t.type.__isKeepAlive;function Ch(t,e){uu(t,"a",e)}function Mh(t,e){uu(t,"da",e)}function uu(t,e,r=Ct){const n=t.__wdc||(t.__wdc=()=>{let i=r;for(;i;){if(i.isDeactivated)return;i=i.parent}return t()});if($i(e,n,r),r){let i=r.parent;for(;i&&i.parent;)cu(i.parent.vnode)&&Nh(n,e,r,i),i=i.parent}}function Nh(t,e,r,n){const i=$i(e,t,n,!0);za(()=>{Sa(n[e],i)},r)}function $i(t,e,r=Ct,n=!1){if(r){const i=r[t]||(r[t]=[]),s=e.__weh||(e.__weh=(...a)=>{Rr();const o=b0(r),l=mr(e,r,t,a);return o(),Ir(),l});return n?i.unshift(s):i.push(s),s}}const zr=t=>(e,r=Ct)=>{(!f0||t==="sp")&&$i(t,(...n)=>e(...n),r)},Dh=zr("bm"),La=zr("m"),Rh=zr("bu"),Ih=zr("u"),_h=zr("bum"),za=zr("um"),Oh=zr("sp"),Lh=zr("rtg"),zh=zr("rtc");function Fh(t,e=Ct){$i("ec",t,e)}const $h=Symbol.for("v-ndc");function du(t,e,r,n){let i;const s=r&&r[n],a=Me(t);if(a||dt(t)){const o=a&&Dn(t);let l=!1,c=!1;o&&(l=!Gt(t),c=Gr(t),t=zi(t)),i=new Array(t.length);for(let d=0,f=t.length;de(o,l,void 0,s&&s[l]));else{const o=Object.keys(t);i=new Array(o.length);for(let l=0,c=o.length;lt?Iu(t)?Hi(t):Us(t.parent):null,i0=wt(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>Us(t.parent),$root:t=>Us(t.root),$host:t=>t.ce,$emit:t=>t.emit,$options:t=>Fa(t),$forceUpdate:t=>t.f||(t.f=()=>{_a(t.update)}),$nextTick:t=>t.n||(t.n=X0.bind(t.proxy)),$watch:t=>of.bind(t)}),ds=(t,e)=>t!==Ye&&!t.__isScriptSetup&&He(t,e),Bh={get({_:t},e){if(e==="__v_skip")return!0;const{ctx:r,setupState:n,data:i,props:s,accessCache:a,type:o,appContext:l}=t;let c;if(e[0]!=="$"){const b=a[e];if(b!==void 0)switch(b){case 1:return n[e];case 2:return i[e];case 4:return r[e];case 3:return s[e]}else{if(ds(n,e))return a[e]=1,n[e];if(i!==Ye&&He(i,e))return a[e]=2,i[e];if((c=t.propsOptions[0])&&He(c,e))return a[e]=3,s[e];if(r!==Ye&&He(r,e))return a[e]=4,r[e];Vs&&(a[e]=0)}}const d=i0[e];let f,p;if(d)return e==="$attrs"&&xt(t.attrs,"get",""),d(t);if((f=o.__cssModules)&&(f=f[e]))return f;if(r!==Ye&&He(r,e))return a[e]=4,r[e];if(p=l.config.globalProperties,He(p,e))return p[e]},set({_:t},e,r){const{data:n,setupState:i,ctx:s}=t;return ds(i,e)?(i[e]=r,!0):n!==Ye&&He(n,e)?(n[e]=r,!0):He(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(s[e]=r,!0)},has({_:{data:t,setupState:e,accessCache:r,ctx:n,appContext:i,propsOptions:s,type:a}},o){let l,c;return!!(r[o]||t!==Ye&&o[0]!=="$"&&He(t,o)||ds(e,o)||(l=s[0])&&He(l,o)||He(n,o)||He(i0,o)||He(i.config.globalProperties,o)||(c=a.__cssModules)&&c[o])},defineProperty(t,e,r){return r.get!=null?t._.accessCache[e]=0:He(r,"value")&&this.set(t,e,r.value,null),Reflect.defineProperty(t,e,r)}};function Ho(t){return Me(t)?t.reduce((e,r)=>(e[r]=null,e),{}):t}let Vs=!0;function Ph(t){const e=Fa(t),r=t.proxy,n=t.ctx;Vs=!1,e.beforeCreate&&qo(e.beforeCreate,t,"bc");const{data:i,computed:s,methods:a,watch:o,provide:l,inject:c,created:d,beforeMount:f,mounted:p,beforeUpdate:b,updated:v,activated:k,deactivated:w,beforeDestroy:M,beforeUnmount:x,destroyed:A,unmounted:N,render:_,renderTracked:O,renderTriggered:z,errorCaptured:Y,serverPrefetch:W,expose:he,inheritAttrs:pe,components:Ae,directives:st,filters:Ze}=e;if(c&&Hh(c,n,null),a)for(const Oe in a){const ve=a[Oe];De(ve)&&(n[Oe]=ve.bind(r))}if(i){const Oe=i.call(r,r);lt(Oe)&&(t.data=Da(Oe))}if(Vs=!0,s)for(const Oe in s){const ve=s[Oe],Ee=De(ve)?ve.bind(r,r):De(ve.get)?ve.get.bind(r,r):rr,rt=!De(ve)&&De(ve.set)?ve.set.bind(r):rr,Ve=Ou({get:Ee,set:rt});Object.defineProperty(n,Oe,{enumerable:!0,configurable:!0,get:()=>Ve.value,set:Ie=>Ve.value=Ie})}if(o)for(const Oe in o)hu(o[Oe],n,r,Oe);if(l){const Oe=De(l)?l.call(r):l;Reflect.ownKeys(Oe).forEach(ve=>{Gh(ve,Oe[ve])})}d&&qo(d,t,"c");function $e(Oe,ve){Me(ve)?ve.forEach(Ee=>Oe(Ee.bind(r))):ve&&Oe(ve.bind(r))}if($e(Dh,f),$e(La,p),$e(Rh,b),$e(Ih,v),$e(Ch,k),$e(Mh,w),$e(Fh,Y),$e(zh,O),$e(Lh,z),$e(_h,x),$e(za,N),$e(Oh,W),Me(he))if(he.length){const Oe=t.exposed||(t.exposed={});he.forEach(ve=>{Object.defineProperty(Oe,ve,{get:()=>r[ve],set:Ee=>r[ve]=Ee,enumerable:!0})})}else t.exposed||(t.exposed={});_&&t.render===rr&&(t.render=_),pe!=null&&(t.inheritAttrs=pe),Ae&&(t.components=Ae),st&&(t.directives=st),W&&lu(t)}function Hh(t,e,r=rr){Me(t)&&(t=Ws(t));for(const n in t){const i=t[n];let s;lt(i)?"default"in i?s=Z0(i.from||n,i.default,!0):s=Z0(i.from||n):s=Z0(i),St(s)?Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:()=>s.value,set:a=>s.value=a}):e[n]=s}}function qo(t,e,r){mr(Me(t)?t.map(n=>n.bind(e.proxy)):t.bind(e.proxy),e,r)}function hu(t,e,r,n){let i=n.includes(".")?Au(r,n):()=>r[n];if(dt(t)){const s=e[t];De(s)&&s0(i,s)}else if(De(t))s0(i,t.bind(r));else if(lt(t))if(Me(t))t.forEach(s=>hu(s,e,r,n));else{const s=De(t.handler)?t.handler.bind(r):e[t.handler];De(s)&&s0(i,s,t)}}function Fa(t){const e=t.type,{mixins:r,extends:n}=e,{mixins:i,optionsCache:s,config:{optionMergeStrategies:a}}=t.appContext,o=s.get(e);let l;return o?l=o:!i.length&&!r&&!n?l=e:(l={},i.length&&i.forEach(c=>fi(l,c,a,!0)),fi(l,e,a)),lt(e)&&s.set(e,l),l}function fi(t,e,r,n=!1){const{mixins:i,extends:s}=e;s&&fi(t,s,r,!0),i&&i.forEach(a=>fi(t,a,r,!0));for(const a in e)if(!(n&&a==="expose")){const o=qh[a]||r&&r[a];t[a]=o?o(t[a],e[a]):e[a]}return t}const qh={data:jo,props:Uo,emits:Uo,methods:Xn,computed:Xn,beforeCreate:At,created:At,beforeMount:At,mounted:At,beforeUpdate:At,updated:At,beforeDestroy:At,beforeUnmount:At,destroyed:At,unmounted:At,activated:At,deactivated:At,errorCaptured:At,serverPrefetch:At,components:Xn,directives:Xn,watch:Uh,provide:jo,inject:jh};function jo(t,e){return e?t?function(){return wt(De(t)?t.call(this,this):t,De(e)?e.call(this,this):e)}:e:t}function jh(t,e){return Xn(Ws(t),Ws(e))}function Ws(t){if(Me(t)){const e={};for(let r=0;r1)return r&&De(e)?e.call(n&&n.proxy):e}}const pu={},mu=()=>Object.create(pu),gu=t=>Object.getPrototypeOf(t)===pu;function Kh(t,e,r,n=!1){const i={},s=mu();t.propsDefaults=Object.create(null),vu(t,e,i,s);for(const a in t.propsOptions[0])a in i||(i[a]=void 0);r?t.props=n?i:uh(i):t.type.props?t.props=i:t.props=s,t.attrs=s}function Yh(t,e,r,n){const{props:i,attrs:s,vnode:{patchFlag:a}}=t,o=Pe(i),[l]=t.propsOptions;let c=!1;if((n||a>0)&&!(a&16)){if(a&8){const d=t.vnode.dynamicProps;for(let f=0;f{l=!0;const[p,b]=bu(f,e,!0);wt(a,p),b&&o.push(...b)};!r&&e.mixins.length&&e.mixins.forEach(d),t.extends&&d(t.extends),t.mixins&&t.mixins.forEach(d)}if(!s&&!l)return lt(t)&&n.set(t,Mn),Mn;if(Me(s))for(let d=0;dt==="_"||t==="_ctx"||t==="$stable",Ba=t=>Me(t)?t.map(dr):[dr(t)],Zh=(t,e,r)=>{if(e._n)return e;const n=Sh((...i)=>Ba(e(...i)),r);return n._c=!1,n},yu=(t,e,r)=>{const n=t._ctx;for(const i in t){if($a(i))continue;const s=t[i];if(De(s))e[i]=Zh(i,s,n);else if(s!=null){const a=Ba(s);e[i]=()=>a}}},wu=(t,e)=>{const r=Ba(e);t.slots.default=()=>r},xu=(t,e,r)=>{for(const n in e)(r||!$a(n))&&(t[n]=e[n])},Jh=(t,e,r)=>{const n=t.slots=mu();if(t.vnode.shapeFlag&32){const i=e._;i?(xu(n,e,r),r&&Fc(n,"_",i,!0)):yu(e,n)}else e&&wu(t,e)},Qh=(t,e,r)=>{const{vnode:n,slots:i}=t;let s=!0,a=Ye;if(n.shapeFlag&32){const o=e._;o?r&&o===1?s=!1:xu(i,e,r):(s=!e.$stable,yu(e,i)),a=e}else e&&(wu(t,e),a={default:1});if(s)for(const o in i)!$a(o)&&a[o]==null&&delete i[o]},Ft=pf;function ef(t){return tf(t)}function tf(t,e){const r=Li();r.__VUE__=!0;const{insert:n,remove:i,patchProp:s,createElement:a,createText:o,createComment:l,setText:c,setElementText:d,parentNode:f,nextSibling:p,setScopeId:b=rr,insertStaticContent:v}=t,k=(S,D,F,K=null,q=null,P=null,Z=void 0,re=null,ie=!!D.dynamicChildren)=>{if(S===D)return;S&&!Un(S,D)&&(K=te(S),Ie(S,q,P,!0),S=null),D.patchFlag===-2&&(ie=!1,D.dynamicChildren=null);const{type:J,ref:ge,shapeFlag:le}=D;switch(J){case Pi:w(S,D,F,K);break;case Kr:M(S,D,F,K);break;case J0:S==null&&x(D,F,K,Z);break;case tr:Ae(S,D,F,K,q,P,Z,re,ie);break;default:le&1?_(S,D,F,K,q,P,Z,re,ie):le&6?st(S,D,F,K,q,P,Z,re,ie):(le&64||le&128)&&J.process(S,D,F,K,q,P,Z,re,ie,me)}ge!=null&&q?r0(ge,S&&S.ref,P,D||S,!D):ge==null&&S&&S.ref!=null&&r0(S.ref,null,P,S,!0)},w=(S,D,F,K)=>{if(S==null)n(D.el=o(D.children),F,K);else{const q=D.el=S.el;D.children!==S.children&&c(q,D.children)}},M=(S,D,F,K)=>{S==null?n(D.el=l(D.children||""),F,K):D.el=S.el},x=(S,D,F,K)=>{[S.el,S.anchor]=v(S.children,D,F,K,S.el,S.anchor)},A=({el:S,anchor:D},F,K)=>{let q;for(;S&&S!==D;)q=p(S),n(S,F,K),S=q;n(D,F,K)},N=({el:S,anchor:D})=>{let F;for(;S&&S!==D;)F=p(S),i(S),S=F;i(D)},_=(S,D,F,K,q,P,Z,re,ie)=>{D.type==="svg"?Z="svg":D.type==="math"&&(Z="mathml"),S==null?O(D,F,K,q,P,Z,re,ie):W(S,D,q,P,Z,re,ie)},O=(S,D,F,K,q,P,Z,re)=>{let ie,J;const{props:ge,shapeFlag:le,transition:fe,dirs:Se}=S;if(ie=S.el=a(S.type,P,ge&&ge.is,ge),le&8?d(ie,S.children):le&16&&Y(S.children,ie,null,K,q,hs(S,P),Z,re),Se&&nn(S,null,K,"created"),z(ie,S,S.scopeId,Z,K),ge){for(const y in ge)y!=="value"&&!Qn(y)&&s(ie,y,null,ge[y],P,K);"value"in ge&&s(ie,"value",null,ge.value,P),(J=ge.onVnodeBeforeMount)&&or(J,K,S)}Se&&nn(S,null,K,"beforeMount");const Le=rf(q,fe);Le&&fe.beforeEnter(ie),n(ie,D,F),((J=ge&&ge.onVnodeMounted)||Le||Se)&&Ft(()=>{J&&or(J,K,S),Le&&fe.enter(ie),Se&&nn(S,null,K,"mounted")},q)},z=(S,D,F,K,q)=>{if(F&&b(S,F),K)for(let P=0;P{for(let J=ie;J{const re=D.el=S.el;let{patchFlag:ie,dynamicChildren:J,dirs:ge}=D;ie|=S.patchFlag&16;const le=S.props||Ye,fe=D.props||Ye;let Se;if(F&&sn(F,!1),(Se=fe.onVnodeBeforeUpdate)&&or(Se,F,D,S),ge&&nn(D,S,F,"beforeUpdate"),F&&sn(F,!0),(le.innerHTML&&fe.innerHTML==null||le.textContent&&fe.textContent==null)&&d(re,""),J?he(S.dynamicChildren,J,re,F,K,hs(D,q),P):Z||ve(S,D,re,null,F,K,hs(D,q),P,!1),ie>0){if(ie&16)pe(re,le,fe,F,q);else if(ie&2&&le.class!==fe.class&&s(re,"class",null,fe.class,q),ie&4&&s(re,"style",le.style,fe.style,q),ie&8){const Le=D.dynamicProps;for(let y=0;y{Se&&or(Se,F,D,S),ge&&nn(D,S,F,"updated")},K)},he=(S,D,F,K,q,P,Z)=>{for(let re=0;re{if(D!==F){if(D!==Ye)for(const P in D)!Qn(P)&&!(P in F)&&s(S,P,D[P],null,q,K);for(const P in F){if(Qn(P))continue;const Z=F[P],re=D[P];Z!==re&&P!=="value"&&s(S,P,re,Z,q,K)}"value"in F&&s(S,"value",D.value,F.value,q)}},Ae=(S,D,F,K,q,P,Z,re,ie)=>{const J=D.el=S?S.el:o(""),ge=D.anchor=S?S.anchor:o("");let{patchFlag:le,dynamicChildren:fe,slotScopeIds:Se}=D;Se&&(re=re?re.concat(Se):Se),S==null?(n(J,F,K),n(ge,F,K),Y(D.children||[],F,ge,q,P,Z,re,ie)):le>0&&le&64&&fe&&S.dynamicChildren?(he(S.dynamicChildren,fe,F,q,P,Z,re),(D.key!=null||q&&D===q.subTree)&&ku(S,D,!0)):ve(S,D,F,ge,q,P,Z,re,ie)},st=(S,D,F,K,q,P,Z,re,ie)=>{D.slotScopeIds=re,S==null?D.shapeFlag&512?q.ctx.activate(D,F,K,Z,ie):Ze(D,F,K,q,P,Z,ie):tt(S,D,ie)},Ze=(S,D,F,K,q,P,Z)=>{const re=S.component=kf(S,K,q);if(cu(S)&&(re.ctx.renderer=me),Tf(re,!1,Z),re.asyncDep){if(q&&q.registerDep(re,$e,Z),!S.el){const ie=re.subTree=qt(Kr);M(null,ie,D,F),S.placeholder=ie.el}}else $e(re,S,D,F,q,P,Z)},tt=(S,D,F)=>{const K=D.component=S.component;if(hf(S,D,F))if(K.asyncDep&&!K.asyncResolved){Oe(K,D,F);return}else K.next=D,K.update();else D.el=S.el,K.vnode=D},$e=(S,D,F,K,q,P,Z)=>{const re=()=>{if(S.isMounted){let{next:le,bu:fe,u:Se,parent:Le,vnode:y}=S;{const ne=Su(S);if(ne){le&&(le.el=y.el,Oe(S,le,Z)),ne.asyncDep.then(()=>{S.isUnmounted||re()});return}}let E=le,I;sn(S,!1),le?(le.el=y.el,Oe(S,le,Z)):le=y,fe&&Y0(fe),(I=le.props&&le.props.onVnodeBeforeUpdate)&&or(I,Le,le,y),sn(S,!0);const H=fs(S),U=S.subTree;S.subTree=H,k(U,H,f(U.el),te(U),S,q,P),le.el=H.el,E===null&&ff(S,H.el),Se&&Ft(Se,q),(I=le.props&&le.props.onVnodeUpdated)&&Ft(()=>or(I,Le,le,y),q)}else{let le;const{el:fe,props:Se}=D,{bm:Le,m:y,parent:E,root:I,type:H}=S,U=n0(D);if(sn(S,!1),Le&&Y0(Le),!U&&(le=Se&&Se.onVnodeBeforeMount)&&or(le,E,D),sn(S,!0),fe&&Ue){const ne=()=>{S.subTree=fs(S),Ue(fe,S.subTree,S,q,null)};U&&H.__asyncHydrate?H.__asyncHydrate(fe,S,ne):ne()}else{I.ce&&I.ce._def.shadowRoot!==!1&&I.ce._injectChildStyle(H);const ne=S.subTree=fs(S);k(null,ne,F,K,S,q,P),D.el=ne.el}if(y&&Ft(y,q),!U&&(le=Se&&Se.onVnodeMounted)){const ne=D;Ft(()=>or(le,E,ne),q)}(D.shapeFlag&256||E&&n0(E.vnode)&&E.vnode.shapeFlag&256)&&S.a&&Ft(S.a,q),S.isMounted=!0,D=F=K=null}};S.scope.on();const ie=S.effect=new Hc(re);S.scope.off();const J=S.update=ie.run.bind(ie),ge=S.job=ie.runIfDirty.bind(ie);ge.i=S,ge.id=S.uid,ie.scheduler=()=>_a(ge),sn(S,!0),J()},Oe=(S,D,F)=>{D.component=S;const K=S.vnode.props;S.vnode=D,S.next=null,Yh(S,D.props,K,F),Qh(S,D.children,F),Rr(),Po(S),Ir()},ve=(S,D,F,K,q,P,Z,re,ie=!1)=>{const J=S&&S.children,ge=S?S.shapeFlag:0,le=D.children,{patchFlag:fe,shapeFlag:Se}=D;if(fe>0){if(fe&128){rt(J,le,F,K,q,P,Z,re,ie);return}else if(fe&256){Ee(J,le,F,K,q,P,Z,re,ie);return}}Se&8?(ge&16&&G(J,q,P),le!==J&&d(F,le)):ge&16?Se&16?rt(J,le,F,K,q,P,Z,re,ie):G(J,q,P,!0):(ge&8&&d(F,""),Se&16&&Y(le,F,K,q,P,Z,re,ie))},Ee=(S,D,F,K,q,P,Z,re,ie)=>{S=S||Mn,D=D||Mn;const J=S.length,ge=D.length,le=Math.min(J,ge);let fe;for(fe=0;fege?G(S,q,P,!0,!1,le):Y(D,F,K,q,P,Z,re,ie,le)},rt=(S,D,F,K,q,P,Z,re,ie)=>{let J=0;const ge=D.length;let le=S.length-1,fe=ge-1;for(;J<=le&&J<=fe;){const Se=S[J],Le=D[J]=ie?jr(D[J]):dr(D[J]);if(Un(Se,Le))k(Se,Le,F,null,q,P,Z,re,ie);else break;J++}for(;J<=le&&J<=fe;){const Se=S[le],Le=D[fe]=ie?jr(D[fe]):dr(D[fe]);if(Un(Se,Le))k(Se,Le,F,null,q,P,Z,re,ie);else break;le--,fe--}if(J>le){if(J<=fe){const Se=fe+1,Le=Sefe)for(;J<=le;)Ie(S[J],q,P,!0),J++;else{const Se=J,Le=J,y=new Map;for(J=Le;J<=fe;J++){const ue=D[J]=ie?jr(D[J]):dr(D[J]);ue.key!=null&&y.set(ue.key,J)}let E,I=0;const H=fe-Le+1;let U=!1,ne=0;const B=new Array(H);for(J=0;J=H){Ie(ue,q,P,!0);continue}let ke;if(ue.key!=null)ke=y.get(ue.key);else for(E=Le;E<=fe;E++)if(B[E-Le]===0&&Un(ue,D[E])){ke=E;break}ke===void 0?Ie(ue,q,P,!0):(B[ke-Le]=J+1,ke>=ne?ne=ke:U=!0,k(ue,D[ke],F,null,q,P,Z,re,ie),I++)}const be=U?nf(B):Mn;for(E=be.length-1,J=H-1;J>=0;J--){const ue=Le+J,ke=D[ue],Fe=D[ue+1],_e=ue+1{const{el:P,type:Z,transition:re,children:ie,shapeFlag:J}=S;if(J&6){Ve(S.component.subTree,D,F,K);return}if(J&128){S.suspense.move(D,F,K);return}if(J&64){Z.move(S,D,F,me);return}if(Z===tr){n(P,D,F);for(let le=0;lere.enter(P),q);else{const{leave:le,delayLeave:fe,afterLeave:Se}=re,Le=()=>{S.ctx.isUnmounted?i(P):n(P,D,F)},y=()=>{P._isLeaving&&P[Eh](!0),le(P,()=>{Le(),Se&&Se()})};fe?fe(P,Le,y):y()}else n(P,D,F)},Ie=(S,D,F,K=!1,q=!1)=>{const{type:P,props:Z,ref:re,children:ie,dynamicChildren:J,shapeFlag:ge,patchFlag:le,dirs:fe,cacheIndex:Se}=S;if(le===-2&&(q=!1),re!=null&&(Rr(),r0(re,null,F,S,!0),Ir()),Se!=null&&(D.renderCache[Se]=void 0),ge&256){D.ctx.deactivate(S);return}const Le=ge&1&&fe,y=!n0(S);let E;if(y&&(E=Z&&Z.onVnodeBeforeUnmount)&&or(E,D,S),ge&6)j(S.component,F,K);else{if(ge&128){S.suspense.unmount(F,K);return}Le&&nn(S,null,D,"beforeUnmount"),ge&64?S.type.remove(S,D,F,me,K):J&&!J.hasOnce&&(P!==tr||le>0&&le&64)?G(J,D,F,!1,!0):(P===tr&&le&384||!q&&ge&16)&&G(ie,D,F),K&&Rt(S)}(y&&(E=Z&&Z.onVnodeUnmounted)||Le)&&Ft(()=>{E&&or(E,D,S),Le&&nn(S,null,D,"unmounted")},F)},Rt=S=>{const{type:D,el:F,anchor:K,transition:q}=S;if(D===tr){pt(F,K);return}if(D===J0){N(S);return}const P=()=>{i(F),q&&!q.persisted&&q.afterLeave&&q.afterLeave()};if(S.shapeFlag&1&&q&&!q.persisted){const{leave:Z,delayLeave:re}=q,ie=()=>Z(F,P);re?re(S.el,P,ie):ie()}else P()},pt=(S,D)=>{let F;for(;S!==D;)F=p(S),i(S),S=F;i(D)},j=(S,D,F)=>{const{bum:K,scope:q,job:P,subTree:Z,um:re,m:ie,a:J}=S;Wo(ie),Wo(J),K&&Y0(K),q.stop(),P&&(P.flags|=8,Ie(Z,S,D,F)),re&&Ft(re,D),Ft(()=>{S.isUnmounted=!0},D)},G=(S,D,F,K=!1,q=!1,P=0)=>{for(let Z=P;Z{if(S.shapeFlag&6)return te(S.component.subTree);if(S.shapeFlag&128)return S.suspense.next();const D=p(S.anchor||S.el),F=D&&D[Th];return F?p(F):D};let se=!1;const Ce=(S,D,F)=>{S==null?D._vnode&&Ie(D._vnode,null,null,!0):k(D._vnode||null,S,D,null,null,null,F),D._vnode=S,se||(se=!0,Po(),su(),se=!1)},me={p:k,um:Ie,m:Ve,r:Rt,mt:Ze,mc:Y,pc:ve,pbc:he,n:te,o:t};let de,Ue;return e&&([de,Ue]=e(me)),{render:Ce,hydrate:de,createApp:Wh(Ce,de)}}function hs({type:t,props:e},r){return r==="svg"&&t==="foreignObject"||r==="mathml"&&t==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:r}function sn({effect:t,job:e},r){r?(t.flags|=32,e.flags|=4):(t.flags&=-33,e.flags&=-5)}function rf(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function ku(t,e,r=!1){const n=t.children,i=e.children;if(Me(n)&&Me(i))for(let s=0;s>1,t[r[o]]0&&(e[n]=r[s-1]),r[s]=n)}}for(s=r.length,a=r[s-1];s-- >0;)r[s]=a,a=e[a];return r}function Su(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Su(e)}function Wo(t){if(t)for(let e=0;eZ0(sf);function s0(t,e,r){return Tu(t,e,r)}function Tu(t,e,r=Ye){const{immediate:n,deep:i,flush:s,once:a}=r,o=wt({},r),l=e&&n||!e&&s!=="post";let c;if(f0){if(s==="sync"){const b=af();c=b.__watcherHandles||(b.__watcherHandles=[])}else if(!l){const b=()=>{};return b.stop=rr,b.resume=rr,b.pause=rr,b}}const d=Ct;o.call=(b,v,k)=>mr(b,d,v,k);let f=!1;s==="post"?o.scheduler=b=>{Ft(b,d&&d.suspense)}:s!=="sync"&&(f=!0,o.scheduler=(b,v)=>{v?b():_a(b)}),o.augmentJob=b=>{e&&(b.flags|=4),f&&(b.flags|=2,d&&(b.id=d.uid,b.i=d))};const p=yh(t,e,o);return f0&&(c?c.push(p):l&&p()),p}function of(t,e,r){const n=this.proxy,i=dt(t)?t.includes(".")?Au(n,t):()=>n[t]:t.bind(n,n);let s;De(e)?s=e:(s=e.handler,r=e);const a=b0(this),o=Tu(i,s.bind(n),r);return a(),o}function Au(t,e){const r=e.split(".");return()=>{let n=t;for(let i=0;ie==="modelValue"||e==="model-value"?t.modelModifiers:t[`${e}Modifiers`]||t[`${Wr(e)}Modifiers`]||t[`${Qr(e)}Modifiers`];function cf(t,e,...r){if(t.isUnmounted)return;const n=t.vnode.props||Ye;let i=r;const s=e.startsWith("update:"),a=s&&lf(n,e.slice(7));a&&(a.trim&&(i=r.map(d=>dt(d)?d.trim():d)),a.number&&(i=r.map(Bs)));let o,l=n[o=as(e)]||n[o=as(Wr(e))];!l&&s&&(l=n[o=as(Qr(e))]),l&&mr(l,t,6,i);const c=n[o+"Once"];if(c){if(!t.emitted)t.emitted={};else if(t.emitted[o])return;t.emitted[o]=!0,mr(c,t,6,i)}}function Eu(t,e,r=!1){const n=e.emitsCache,i=n.get(t);if(i!==void 0)return i;const s=t.emits;let a={},o=!1;if(!De(t)){const l=c=>{const d=Eu(c,e,!0);d&&(o=!0,wt(a,d))};!r&&e.mixins.length&&e.mixins.forEach(l),t.extends&&l(t.extends),t.mixins&&t.mixins.forEach(l)}return!s&&!o?(lt(t)&&n.set(t,null),null):(Me(s)?s.forEach(l=>a[l]=null):wt(a,s),lt(t)&&n.set(t,a),a)}function Bi(t,e){return!t||!Ii(e)?!1:(e=e.slice(2).replace(/Once$/,""),He(t,e[0].toLowerCase()+e.slice(1))||He(t,Qr(e))||He(t,e))}function fs(t){const{type:e,vnode:r,proxy:n,withProxy:i,propsOptions:[s],slots:a,attrs:o,emit:l,render:c,renderCache:d,props:f,data:p,setupState:b,ctx:v,inheritAttrs:k}=t,w=di(t);let M,x;try{if(r.shapeFlag&4){const N=i||n,_=N;M=dr(c.call(_,N,d,f,b,p,v)),x=o}else{const N=e;M=dr(N.length>1?N(f,{attrs:o,slots:a,emit:l}):N(f,null)),x=e.props?o:uf(o)}}catch(N){a0.length=0,Fi(N,t,1),M=qt(Kr)}let A=M;if(x&&k!==!1){const N=Object.keys(x),{shapeFlag:_}=A;N.length&&_&7&&(s&&N.some(ka)&&(x=df(x,s)),A=zn(A,x,!1,!0))}return r.dirs&&(A=zn(A,null,!1,!0),A.dirs=A.dirs?A.dirs.concat(r.dirs):r.dirs),r.transition&&Oa(A,r.transition),M=A,di(w),M}const uf=t=>{let e;for(const r in t)(r==="class"||r==="style"||Ii(r))&&((e||(e={}))[r]=t[r]);return e},df=(t,e)=>{const r={};for(const n in t)(!ka(n)||!(n.slice(9)in e))&&(r[n]=t[n]);return r};function hf(t,e,r){const{props:n,children:i,component:s}=t,{props:a,children:o,patchFlag:l}=e,c=s.emitsOptions;if(e.dirs||e.transition)return!0;if(r&&l>=0){if(l&1024)return!0;if(l&16)return n?Go(n,a,c):!!a;if(l&8){const d=e.dynamicProps;for(let f=0;ft.__isSuspense;function pf(t,e){e&&e.pendingBranch?Me(t)?e.effects.push(...t):e.effects.push(t):kh(t)}const tr=Symbol.for("v-fgt"),Pi=Symbol.for("v-txt"),Kr=Symbol.for("v-cmt"),J0=Symbol.for("v-stc"),a0=[];let Ht=null;function We(t=!1){a0.push(Ht=t?null:[])}function mf(){a0.pop(),Ht=a0[a0.length-1]||null}let h0=1;function Ko(t,e=!1){h0+=t,t<0&&Ht&&e&&(Ht.hasOnce=!0)}function Mu(t){return t.dynamicChildren=h0>0?Ht||Mn:null,mf(),h0>0&&Ht&&Ht.push(t),t}function Ke(t,e,r,n,i,s){return Mu(V(t,e,r,n,i,s,!0))}function gf(t,e,r,n,i){return Mu(qt(t,e,r,n,i,!0))}function Nu(t){return t?t.__v_isVNode===!0:!1}function Un(t,e){return t.type===e.type&&t.key===e.key}const Du=({key:t})=>t??null,Q0=({ref:t,ref_key:e,ref_for:r})=>(typeof t=="number"&&(t=""+t),t!=null?dt(t)||St(t)||De(t)?{i:Vt,r:t,k:e,f:!!r}:t:null);function V(t,e=null,r=null,n=0,i=null,s=t===tr?0:1,a=!1,o=!1){const l={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&Du(e),ref:e&&Q0(e),scopeId:ou,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:Vt};return o?(Pa(l,r),s&128&&t.normalize(l)):r&&(l.shapeFlag|=dt(r)?8:16),h0>0&&!a&&Ht&&(l.patchFlag>0||s&6)&&l.patchFlag!==32&&Ht.push(l),l}const qt=vf;function vf(t,e=null,r=null,n=0,i=null,s=!1){if((!t||t===$h)&&(t=Kr),Nu(t)){const o=zn(t,e,!0);return r&&Pa(o,r),h0>0&&!s&&Ht&&(o.shapeFlag&6?Ht[Ht.indexOf(t)]=o:Ht.push(o)),o.patchFlag=-2,o}if(Mf(t)&&(t=t.__vccOpts),e){e=bf(e);let{class:o,style:l}=e;o&&!dt(o)&&(e.class=pn(o)),lt(l)&&(Ia(l)&&!Me(l)&&(l=wt({},l)),e.style=Ln(l))}const a=dt(t)?1:Cu(t)?128:Ah(t)?64:lt(t)?4:De(t)?2:0;return V(t,e,r,n,i,a,s,!0)}function bf(t){return t?Ia(t)||gu(t)?wt({},t):t:null}function zn(t,e,r=!1,n=!1){const{props:i,ref:s,patchFlag:a,children:o,transition:l}=t,c=e?yf(i||{},e):i,d={__v_isVNode:!0,__v_skip:!0,type:t.type,props:c,key:c&&Du(c),ref:e&&e.ref?r&&s?Me(s)?s.concat(Q0(e)):[s,Q0(e)]:Q0(e):s,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:o,target:t.target,targetStart:t.targetStart,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==tr?a===-1?16:a|16:a,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:l,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&zn(t.ssContent),ssFallback:t.ssFallback&&zn(t.ssFallback),placeholder:t.placeholder,el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce};return l&&n&&Oa(d,l.clone(d)),d}function Ru(t=" ",e=0){return qt(Pi,null,t,e)}function I0(t,e){const r=qt(J0,null,t);return r.staticCount=e,r}function Sr(t="",e=!1){return e?(We(),gf(Kr,null,t)):qt(Kr,null,t)}function dr(t){return t==null||typeof t=="boolean"?qt(Kr):Me(t)?qt(tr,null,t.slice()):Nu(t)?jr(t):qt(Pi,null,String(t))}function jr(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:zn(t)}function Pa(t,e){let r=0;const{shapeFlag:n}=t;if(e==null)e=null;else if(Me(e))r=16;else if(typeof e=="object")if(n&65){const i=e.default;i&&(i._c&&(i._d=!1),Pa(t,i()),i._c&&(i._d=!0));return}else{r=32;const i=e._;!i&&!gu(e)?e._ctx=Vt:i===3&&Vt&&(Vt.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else De(e)?(e={default:e,_ctx:Vt},r=32):(e=String(e),n&64?(r=16,e=[Ru(e)]):r=8);t.children=e,t.shapeFlag|=r}function yf(...t){const e={};for(let r=0;rCt||Vt;let pi,Ks;{const t=Li(),e=(r,n)=>{let i;return(i=t[r])||(i=t[r]=[]),i.push(n),s=>{i.length>1?i.forEach(a=>a(s)):i[0](s)}};pi=e("__VUE_INSTANCE_SETTERS__",r=>Ct=r),Ks=e("__VUE_SSR_SETTERS__",r=>f0=r)}const b0=t=>{const e=Ct;return pi(t),t.scope.on(),()=>{t.scope.off(),pi(e)}},Yo=()=>{Ct&&Ct.scope.off(),pi(null)};function Iu(t){return t.vnode.shapeFlag&4}let f0=!1;function Tf(t,e=!1,r=!1){e&&Ks(e);const{props:n,children:i}=t.vnode,s=Iu(t);Kh(t,n,s,e),Jh(t,i,r||e);const a=s?Af(t,e):void 0;return e&&Ks(!1),a}function Af(t,e){const r=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,Bh);const{setup:n}=r;if(n){Rr();const i=t.setupContext=n.length>1?Cf(t):null,s=b0(t),a=v0(n,t,0,[t.props,i]),o=_c(a);if(Ir(),s(),(o||t.sp)&&!n0(t)&&lu(t),o){if(a.then(Yo,Yo),e)return a.then(l=>{Xo(t,l,e)}).catch(l=>{Fi(l,t,0)});t.asyncDep=a}else Xo(t,a,e)}else _u(t,e)}function Xo(t,e,r){De(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:lt(e)&&(t.setupState=ru(e)),_u(t,r)}let Zo;function _u(t,e,r){const n=t.type;if(!t.render){if(!e&&Zo&&!n.render){const i=n.template||Fa(t).template;if(i){const{isCustomElement:s,compilerOptions:a}=t.appContext.config,{delimiters:o,compilerOptions:l}=n,c=wt(wt({isCustomElement:s,delimiters:o},a),l);n.render=Zo(i,c)}}t.render=n.render||rr}{const i=b0(t);Rr();try{Ph(t)}finally{Ir(),i()}}}const Ef={get(t,e){return xt(t,"get",""),t[e]}};function Cf(t){const e=r=>{t.exposed=r||{}};return{attrs:new Proxy(t.attrs,Ef),slots:t.slots,emit:t.emit,expose:e}}function Hi(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(ru(dh(t.exposed)),{get(e,r){if(r in e)return e[r];if(r in i0)return i0[r](t)},has(e,r){return r in e||r in i0}})):t.proxy}function Mf(t){return De(t)&&"__vccOpts"in t}const Ou=(t,e)=>vh(t,e,f0),Nf="3.5.20";/** -* @vue/runtime-dom v3.5.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Ys;const Jo=typeof window<"u"&&window.trustedTypes;if(Jo)try{Ys=Jo.createPolicy("vue",{createHTML:t=>t})}catch{}const Lu=Ys?t=>Ys.createHTML(t):t=>t,Df="http://www.w3.org/2000/svg",Rf="http://www.w3.org/1998/Math/MathML",kr=typeof document<"u"?document:null,Qo=kr&&kr.createElement("template"),If={insert:(t,e,r)=>{e.insertBefore(t,r||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,r,n)=>{const i=e==="svg"?kr.createElementNS(Df,t):e==="mathml"?kr.createElementNS(Rf,t):r?kr.createElement(t,{is:r}):kr.createElement(t);return t==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:t=>kr.createTextNode(t),createComment:t=>kr.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>kr.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,r,n,i,s){const a=r?r.previousSibling:e.lastChild;if(i&&(i===s||i.nextSibling))for(;e.insertBefore(i.cloneNode(!0),r),!(i===s||!(i=i.nextSibling)););else{Qo.innerHTML=Lu(n==="svg"?`${t}`:n==="mathml"?`${t}`:t);const o=Qo.content;if(n==="svg"||n==="mathml"){const l=o.firstChild;for(;l.firstChild;)o.appendChild(l.firstChild);o.removeChild(l)}e.insertBefore(o,r)}return[a?a.nextSibling:e.firstChild,r?r.previousSibling:e.lastChild]}},_f=Symbol("_vtc");function Of(t,e,r){const n=t[_f];n&&(e=(e?[e,...n]:[...n]).join(" ")),e==null?t.removeAttribute("class"):r?t.setAttribute("class",e):t.className=e}const mi=Symbol("_vod"),zu=Symbol("_vsh"),Lf={name:"show",beforeMount(t,{value:e},{transition:r}){t[mi]=t.style.display==="none"?"":t.style.display,r&&e?r.beforeEnter(t):Vn(t,e)},mounted(t,{value:e},{transition:r}){r&&e&&r.enter(t)},updated(t,{value:e,oldValue:r},{transition:n}){!e!=!r&&(n?e?(n.beforeEnter(t),Vn(t,!0),n.enter(t)):n.leave(t,()=>{Vn(t,!1)}):Vn(t,e))},beforeUnmount(t,{value:e}){Vn(t,e)}};function Vn(t,e){t.style.display=e?t[mi]:"none",t[zu]=!e}const zf=Symbol(""),Ff=/(^|;)\s*display\s*:/;function $f(t,e,r){const n=t.style,i=dt(r);let s=!1;if(r&&!i){if(e)if(dt(e))for(const a of e.split(";")){const o=a.slice(0,a.indexOf(":")).trim();r[o]==null&&ei(n,o,"")}else for(const a in e)r[a]==null&&ei(n,a,"");for(const a in r)a==="display"&&(s=!0),ei(n,a,r[a])}else if(i){if(e!==r){const a=n[zf];a&&(r+=";"+a),n.cssText=r,s=Ff.test(r)}}else e&&t.removeAttribute("style");mi in t&&(t[mi]=s?n.display:"",t[zu]&&(n.display="none"))}const el=/\s*!important$/;function ei(t,e,r){if(Me(r))r.forEach(n=>ei(t,e,n));else if(r==null&&(r=""),e.startsWith("--"))t.setProperty(e,r);else{const n=Bf(t,e);el.test(r)?t.setProperty(Qr(n),r.replace(el,""),"important"):t[n]=r}}const tl=["Webkit","Moz","ms"],ps={};function Bf(t,e){const r=ps[e];if(r)return r;let n=Wr(e);if(n!=="filter"&&n in t)return ps[e]=n;n=zc(n);for(let i=0;ims||(jf.then(()=>ms=0),ms=Date.now());function Vf(t,e){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;mr(Wf(n,r.value),e,5,[n])};return r.value=t,r.attached=Uf(),r}function Wf(t,e){if(Me(e)){const r=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{r.call(t),t._stopped=!0},e.map(n=>i=>!i._stopped&&n&&n(i))}else return e}const ol=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,Gf=(t,e,r,n,i,s)=>{const a=i==="svg";e==="class"?Of(t,n,a):e==="style"?$f(t,r,n):Ii(e)?ka(e)||Hf(t,e,r,n,s):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):Kf(t,e,n,a))?(il(t,e,n),!t.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&nl(t,e,n,a,s,e!=="value")):t._isVueCE&&(/[A-Z]/.test(e)||!dt(n))?il(t,Wr(e),n,s,e):(e==="true-value"?t._trueValue=n:e==="false-value"&&(t._falseValue=n),nl(t,e,n,a))};function Kf(t,e,r,n){if(n)return!!(e==="innerHTML"||e==="textContent"||e in t&&ol(e)&&De(r));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const i=t.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return ol(e)&&dt(r)?!1:e in t}const ll=t=>{const e=t.props["onUpdate:modelValue"]||!1;return Me(e)?r=>Y0(e,r):e};function Yf(t){t.target.composing=!0}function cl(t){const e=t.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const gs=Symbol("_assign"),Ha={created(t,{modifiers:{lazy:e,trim:r,number:n}},i){t[gs]=ll(i);const s=n||i.props&&i.props.type==="number";En(t,e?"change":"input",a=>{if(a.target.composing)return;let o=t.value;r&&(o=o.trim()),s&&(o=Bs(o)),t[gs](o)}),r&&En(t,"change",()=>{t.value=t.value.trim()}),e||(En(t,"compositionstart",Yf),En(t,"compositionend",cl),En(t,"change",cl))},mounted(t,{value:e}){t.value=e??""},beforeUpdate(t,{value:e,oldValue:r,modifiers:{lazy:n,trim:i,number:s}},a){if(t[gs]=ll(a),t.composing)return;const o=(s||t.type==="number")&&!/^0\d/.test(t.value)?Bs(t.value):t.value,l=e??"";o!==l&&(document.activeElement===t&&t.type!=="range"&&(n&&e===r||i&&t.value.trim()===l)||(t.value=l))}},Xf=["ctrl","shift","alt","meta"],Zf={stop:t=>t.stopPropagation(),prevent:t=>t.preventDefault(),self:t=>t.target!==t.currentTarget,ctrl:t=>!t.ctrlKey,shift:t=>!t.shiftKey,alt:t=>!t.altKey,meta:t=>!t.metaKey,left:t=>"button"in t&&t.button!==0,middle:t=>"button"in t&&t.button!==1,right:t=>"button"in t&&t.button!==2,exact:(t,e)=>Xf.some(r=>t[`${r}Key`]&&!e.includes(r))},vs=(t,e)=>{const r=t._withMods||(t._withMods={}),n=e.join(".");return r[n]||(r[n]=(i,...s)=>{for(let a=0;a{const r=t._withKeys||(t._withKeys={}),n=e.join(".");return r[n]||(r[n]=i=>{if(!("key"in i))return;const s=Qr(i.key);if(e.some(a=>a===s||Jf[a]===s))return t(i)})},Qf=wt({patchProp:Gf},If);let ul;function ep(){return ul||(ul=ef(Qf))}const tp=(...t)=>{const e=ep().createApp(...t),{mount:r}=e;return e.mount=n=>{const i=np(n);if(!i)return;const s=e._component;!De(s)&&!s.render&&!s.template&&(s.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const a=r(i,!1,rp(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),a},e};function rp(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function np(t){return dt(t)?document.querySelector(t):t}var ip=Object.defineProperty,sp=(t,e,r)=>e in t?ip(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,_0=(t,e,r)=>(sp(t,typeof e!="symbol"?e+"":e,r),r);const qa={name:"Latte",type:"light",palette:["#dd7878","#ea76cb","#8839ef","#e64553","#fe640b","#df8e1d","#40a02b","#209fb5","#1e66f5","#7287fd"],cssVar:{"--node-gap-x":"30px","--node-gap-y":"10px","--main-gap-x":"65px","--main-gap-y":"45px","--root-radius":"30px","--main-radius":"20px","--root-color":"#ffffff","--root-bgcolor":"#4c4f69","--root-border-color":"rgba(0, 0, 0, 0)","--main-color":"#444446","--main-bgcolor":"#ffffff","--topic-padding":"3px","--color":"#777777","--bgcolor":"#f6f6f6","--selected":"#4dc4ff","--accent-color":"#e64553","--panel-color":"#444446","--panel-bgcolor":"#ffffff","--panel-border-color":"#eaeaea","--map-padding":"50px"}},ja={name:"Dark",type:"dark",palette:["#848FA0","#748BE9","#D2F9FE","#4145A5","#789AFA","#706CF4","#EF987F","#775DD5","#FCEECF","#DA7FBC"],cssVar:{"--node-gap-x":"30px","--node-gap-y":"10px","--main-gap-x":"65px","--main-gap-y":"45px","--root-radius":"30px","--main-radius":"20px","--root-color":"#ffffff","--root-bgcolor":"#2d3748","--root-border-color":"rgba(255, 255, 255, 0.1)","--main-color":"#ffffff","--main-bgcolor":"#4c4f69","--topic-padding":"3px","--color":"#cccccc","--bgcolor":"#252526","--selected":"#4dc4ff","--accent-color":"#789AFA","--panel-color":"#ffffff","--panel-bgcolor":"#2d3748","--panel-border-color":"#696969","--map-padding":"50px 80px"}};function Xs(t){return t.replace(/&/g,"&").replace(/{if(t.parent=e,t.children)for(let r=0;r{if(t.expanded=e,t.children)if(r===void 0||r>0){const n=r!==void 0?r-1:void 0;t.children.forEach(i=>{_n(i,e,n)})}else t.children.forEach(n=>{_n(n,!1)})};function Ua(t){if(t.id=vn(),t.children)for(let e=0;e0&&(a=180-a),s<0&&i<0&&(a=180+a),s>0&&i<0&&(a=360-a);const o=12,l=30,c=a+l,d=a-l;return{x1:r+Math.cos(Math.PI*c/180)*o,y1:n-Math.sin(Math.PI*c/180)*o,x2:r+Math.cos(Math.PI*d/180)*o,y2:n-Math.sin(Math.PI*d/180)*o}}function vn(){return(new Date().getTime().toString(16)+Math.random().toString(16).substr(2)).substr(2,16)}const ap=function(){const t=vn();return{topic:this.newTopicName,id:t}};function Va(t){return JSON.parse(JSON.stringify(t,(e,r)=>{if(e!=="parent")return r}))}const tn=(t,e)=>{let r=0,n=0;for(;e&&e!==t;)r+=e.offsetLeft,n+=e.offsetTop,e=e.offsetParent;return{offsetLeft:r,offsetTop:n}},gt=(t,e)=>{for(const r in e)t.setAttribute(r,e[r])},Zs=t=>t?t.tagName==="ME-TPC":!1,qi=t=>t.filter(e=>e.nodeObj.parent).filter((e,r,n)=>{for(let i=0;i{const e=/translate\(([^,]+),\s*([^)]+)\)/,r=t.match(e);return r?{x:parseFloat(r[1]),y:parseFloat(r[2])}:{x:0,y:0}},Wa=function(t){for(let e=0;e(t.LHS="lhs",t.RHS="rhs",t))(sr||{});const op=t=>{const e=t.map.querySelectorAll(".lhs>me-wrapper>me-parent>me-tpc");t.selectNode(e[Math.ceil(e.length/2)-1])},lp=t=>{const e=t.map.querySelectorAll(".rhs>me-wrapper>me-parent>me-tpc");t.selectNode(e[Math.ceil(e.length/2)-1])},cp=t=>{t.selectNode(t.map.querySelector("me-root>me-tpc"))},up=function(t,e){const r=e.parentElement.parentElement.parentElement.previousSibling;if(r){const n=r.firstChild;t.selectNode(n)}},dp=function(t,e){const r=e.parentElement.nextSibling;if(r&&r.firstChild){const n=r.firstChild.firstChild.firstChild;t.selectNode(n)}},dl=function(t,e){var r,n;const i=t.currentNode||((r=t.currentNodes)==null?void 0:r[0]);if(!i)return;const s=i.nodeObj,a=i.offsetParent.offsetParent.parentElement;s.parent?a.className===e?dp(t,i):(n=s.parent)!=null&&n.parent?up(t,i):cp(t):e===sr.LHS?op(t):lp(t)},hl=function(t,e){const r=t.currentNode;if(!r||!r.nodeObj.parent)return;const n=e+"Sibling",i=r.parentElement.parentElement[n];i?t.selectNode(i.firstChild.firstChild):t.selectNode(r)},bi=function(t,e,r){const{scaleVal:n,scaleSensitivity:i}=t;switch(e){case"in":t.scale(n+i,r);break;case"out":t.scale(n-i,r)}};function hp(t,e){e=e===!0?{}:e;const r=()=>{t.currentArrow?t.removeArrow():t.currentSummary?t.removeSummary(t.currentSummary.summaryObj.id):t.currentNodes&&t.removeNodes(t.currentNodes)};let n=!1,i=null;const s=o=>{const l=t.nodeData;if(o.key==="0")for(const c of l.children)_n(c,!1);if(o.key==="=")for(const c of l.children)_n(c,!0);if(["1","2","3","4","5","6","7","8","9"].includes(o.key))for(const c of l.children)_n(c,!0,Number(o.key)-1);t.refresh(),t.toCenter(),n=!1,i&&(clearTimeout(i),i=null,t.container.removeEventListener("keydown",s))},a={Enter:o=>{o.shiftKey?t.insertSibling("before"):o.ctrlKey||o.metaKey?t.insertParent():t.insertSibling("after")},Tab:()=>{t.addChild()},F1:()=>{t.toCenter()},F2:()=>{t.beginEdit()},ArrowUp:o=>{if(o.altKey)t.moveUpNode();else{if(o.metaKey||o.ctrlKey)return t.initSide();hl(t,"previous")}},ArrowDown:o=>{o.altKey?t.moveDownNode():hl(t,"next")},ArrowLeft:o=>{if(o.metaKey||o.ctrlKey)return t.initLeft();dl(t,sr.LHS)},ArrowRight:o=>{if(o.metaKey||o.ctrlKey)return t.initRight();dl(t,sr.RHS)},PageUp:()=>t.moveUpNode(),PageDown:()=>{t.moveDownNode()},c:o=>{(o.metaKey||o.ctrlKey)&&(t.waitCopy=t.currentNodes)},x:o=>{(o.metaKey||o.ctrlKey)&&(t.waitCopy=t.currentNodes,r())},v:o=>{!t.waitCopy||!t.currentNode||(o.metaKey||o.ctrlKey)&&(t.waitCopy.length===1?t.copyNode(t.waitCopy[0],t.currentNode):t.copyNodes(t.waitCopy,t.currentNode))},"=":o=>{(o.metaKey||o.ctrlKey)&&bi(t,"in")},"-":o=>{(o.metaKey||o.ctrlKey)&&bi(t,"out")},0:o=>{if(o.metaKey||o.ctrlKey){if(n)return;t.scale(1)}},k:o=>{(o.metaKey||o.ctrlKey)&&(n=!0,i&&(clearTimeout(i),t.container.removeEventListener("keydown",s)),i=window.setTimeout(()=>{n=!1,i=null},2e3),t.container.addEventListener("keydown",s))},Delete:r,Backspace:r,...e};t.container.onkeydown=o=>{if(o.preventDefault(),!t.editable)return;const l=a[o.key];l&&l(o)}}function fp(t){const{dragMoveHelper:e}=t,r=p=>{var b,v,k;if(p.button!==0)return;if((b=t.helper1)!=null&&b.moved){t.helper1.clear();return}if((v=t.helper2)!=null&&v.moved){t.helper2.clear();return}if(e.moved){e.clear();return}const w=p.target;if(w.tagName==="ME-EPD")p.ctrlKey||p.metaKey?t.expandNodeAll(w.previousSibling):t.expandNode(w.previousSibling);else if(w.tagName==="ME-TPC"&&t.currentNodes.length>1)t.selectNode(w);else if(!t.editable)return;const M=(k=w.parentElement)==null?void 0:k.parentElement;M.getAttribute("class")==="topiclinks"?t.selectArrow(w.parentElement):M.getAttribute("class")==="summary"&&t.selectSummary(w.parentElement)},n=p=>{var b;if(!t.editable)return;const v=p.target;Zs(v)&&t.beginEdit(v);const k=(b=v.parentElement)==null?void 0:b.parentElement;k.getAttribute("class")==="topiclinks"?t.editArrowLabel(v.parentElement):k.getAttribute("class")==="summary"&&t.editSummary(v.parentElement)};let i=0;const s=p=>{if(p.pointerType==="mouse")return;const b=new Date().getTime(),v=b-i;v<300&&v>0&&n(p),i=b},a=p=>{e.moved=!1;const b=t.mouseSelectionButton===0?2:0;if(p.button!==b&&p.pointerType==="mouse")return;e.x=p.clientX,e.y=p.clientY;const v=p.target;v.className!=="circle"&&v.contentEditable!=="plaintext-only"&&(e.mousedown=!0,v.setPointerCapture(p.pointerId))},o=p=>{if(p.target.contentEditable!=="plaintext-only"){const b=p.clientX-e.x,v=p.clientY-e.y;e.onMove(b,v)}e.x=p.clientX,e.y=p.clientY},l=p=>{const b=t.mouseSelectionButton===0?2:0;if(p.button!==b&&p.pointerType==="mouse")return;const v=p.target;v.hasPointerCapture&&v.hasPointerCapture(p.pointerId)&&v.releasePointerCapture(p.pointerId),e.clear()},c=p=>{if(p.preventDefault(),p.button!==2||!t.editable)return;const b=p.target;Zs(b)&&!b.classList.contains("selected")&&t.selectNode(b),setTimeout(()=>{t.dragMoveHelper.moved||t.bus.fire("showContextMenu",p)},200)},d=p=>{p.stopPropagation(),p.preventDefault(),p.ctrlKey||p.metaKey?p.deltaY<0?bi(t,"in",t.dragMoveHelper):t.scaleVal-t.scaleSensitivity>0&&bi(t,"out",t.dragMoveHelper):p.shiftKey?t.move(-p.deltaY,0):t.move(-p.deltaX,-p.deltaY)},{container:f}=t;return Wa([{dom:f,evt:"pointerdown",func:a},{dom:f,evt:"pointermove",func:o},{dom:f,evt:"pointerup",func:l},{dom:f,evt:"pointerup",func:s},{dom:f,evt:"click",func:r},{dom:f,evt:"dblclick",func:n},{dom:f,evt:"contextmenu",func:c},{dom:f,evt:"wheel",func:typeof t.handleWheel=="function"?t.handleWheel:d}])}function pp(){return{handlers:{},addListener:function(t,e){this.handlers[t]===void 0&&(this.handlers[t]=[]),this.handlers[t].push(e)},fire:function(t,...e){if(this.handlers[t]instanceof Array){const r=this.handlers[t];for(let n=0;n{s.direction===0?n+=1:s.direction===1?i+=1:n<=i?(s.direction=0,n+=1):(s.direction=1,i+=1)})}gp(this,r,e)},gp=function(t,e,r){const n=yi.createElement("me-main");n.className=sr.LHS;const i=yi.createElement("me-main");i.className=sr.RHS;for(let s=0;s`${Xs(n)}`).join(""),t.appendChild(r),t.icons=r}else t.icons&&(t.icons=void 0);if(e.tags&&e.tags.length){const r=Bt.createElement("div");r.className="tags",e.tags.forEach(n=>{const i=Bt.createElement("span");typeof n=="string"?i.textContent=n:(i.textContent=n.text,n.className&&(i.className=n.className),n.style&&Object.assign(i.style,n.style)),r.appendChild(i)}),t.appendChild(r),t.tags=r}else t.tags&&(t.tags=void 0)},bp=function(t,e){const r=Bt.createElement("me-wrapper"),{p:n,tpc:i}=this.createParent(t);if(r.appendChild(n),!e&&t.children&&t.children.length>0){const s=Ka(t.expanded);if(n.appendChild(s),t.expanded!==!1){const a=vp(this,t.children);r.appendChild(a)}}return{grp:r,top:n,tpc:i}},yp=function(t){const e=Bt.createElement("me-parent"),r=this.createTopic(t);return Ga.call(this,r,t),e.appendChild(r),{p:e,tpc:r}},wp=function(t){const e=Bt.createElement("me-children");return e.append(...t),e},xp=function(t){const e=Bt.createElement("me-tpc");return e.nodeObj=t,e.dataset.nodeid="me"+t.id,e.draggable=this.draggable,e};function Bu(t){const e=Bt.createRange();e.selectNodeContents(t);const r=window.getSelection();r&&(r.removeAllRanges(),r.addRange(e))}const kp=function(t){if(!t)return;const e=Bt.createElement("div"),r=t.nodeObj,n=r.topic;t.appendChild(e),e.id="input-box",e.textContent=n,e.contentEditable="plaintext-only",e.spellcheck=!1;const i=getComputedStyle(t);e.style.cssText=`min-width:${t.offsetWidth-8}px; - color:${i.color}; - padding:${i.padding}; - margin:${i.margin}; - font:${i.font}; - background-color:${i.backgroundColor!=="rgba(0, 0, 0, 0)"&&i.backgroundColor}; - border-radius:${i.borderRadius};`,this.direction===0&&(e.style.right="0"),Bu(e),this.bus.fire("operation",{name:"beginEdit",obj:t.nodeObj}),e.addEventListener("keydown",s=>{s.stopPropagation();const a=s.key;if(a==="Enter"||a==="Tab"){if(s.shiftKey)return;s.preventDefault(),e.blur(),this.container.focus()}}),e.addEventListener("blur",()=>{var s;if(!e)return;const a=((s=e.textContent)==null?void 0:s.trim())||"";a===""?r.topic=n:(r.topic=a,this.markdown?t.text.innerHTML=this.markdown(r.topic,r):t.text.textContent=a),e.remove(),a!==n&&(this.linkDiv(),this.bus.fire("operation",{name:"finishEdit",obj:r,origin:n}))})},Ka=function(t){const e=Bt.createElement("me-epd");return e.expanded=t!==!1,e.className=t!==!1?"minus":"",e},fn=document,Kt="http://www.w3.org/2000/svg",Js=function(t,e,r,n={}){const{anchor:i="middle",color:s,dataType:a}=n,o=document.createElementNS(Kt,"text");return gt(o,{"text-anchor":i,x:e+"",y:r+"",fill:s||(i==="middle"?"rgb(235, 95, 82)":"#666")}),a&&(o.dataset.type=a),o.innerHTML=t,o},Pu=function(t,e,r){const n=fn.createElementNS(Kt,"path");return gt(n,{d:t,stroke:e||"#666",fill:"none","stroke-width":r}),n},Zn=function(t){const e=fn.createElementNS(Kt,"svg");return e.setAttribute("class",t),e.setAttribute("overflow","visible"),e},fl=function(){const t=fn.createElementNS(Kt,"line");return t.setAttribute("stroke","#4dc4ff"),t.setAttribute("fill","none"),t.setAttribute("stroke-width","2"),t.setAttribute("opacity","0.45"),t},Sp=function(t,e,r,n){const i=fn.createElementNS(Kt,"g");return[{name:"line",d:t},{name:"arrow1",d:e},{name:"arrow2",d:r}].forEach((s,a)=>{const o=s.d,l=fn.createElementNS(Kt,"path"),c={d:o,stroke:(n==null?void 0:n.stroke)||"rgb(235, 95, 82)",fill:"none","stroke-linecap":(n==null?void 0:n.strokeLinecap)||"cap","stroke-width":String((n==null?void 0:n.strokeWidth)||"2")};(n==null?void 0:n.opacity)!==void 0&&(c.opacity=String(n.opacity)),gt(l,c),a===0&&l.setAttribute("stroke-dasharray",(n==null?void 0:n.strokeDasharray)||"8,2");const d=fn.createElementNS(Kt,"path");gt(d,{d:o,stroke:"transparent",fill:"none","stroke-width":"15"}),i.appendChild(d),i.appendChild(l),i[s.name]=l}),i},Hu=function(t,e,r){if(!e)return;const n=fn.createElement("div");t.nodes.appendChild(n);const i=e.innerHTML;n.id="input-box",n.textContent=i,n.contentEditable="plaintext-only",n.spellcheck=!1;const s=e.getBBox();n.style.cssText=` - min-width:${Math.max(88,s.width)}px; - position:absolute; - left:${s.x}px; - top:${s.y}px; - padding: 2px 4px; - margin: -2px -4px; - `,Bu(n),t.scrollIntoView(n),n.addEventListener("keydown",a=>{a.stopPropagation();const o=a.key;if(o==="Enter"||o==="Tab"){if(a.shiftKey)return;a.preventDefault(),n.blur(),t.container.focus()}}),n.addEventListener("blur",()=>{var a;if(!n)return;const o=((a=n.textContent)==null?void 0:a.trim())||"";o===""?r.label=i:r.label=o,n.remove(),o!==i&&(e.innerHTML=r.label,"parent"in r?t.bus.fire("operation",{name:"finishEditSummary",obj:r}):t.bus.fire("operation",{name:"finishEditArrowLabel",obj:r}))})},Tp=function(t){const e=this.map.querySelector("me-root"),r=e.offsetTop,n=e.offsetLeft,i=e.offsetWidth,s=e.offsetHeight,a=this.map.querySelectorAll("me-main > me-wrapper");this.lines.innerHTML="";for(let o=0;o{const z=document.createElement("div");return z.innerText=O,z.className="tips",z},n=(O,z,Y)=>{const W=document.createElement("li");return W.id=O,W.innerHTML=`${Xs(z)}${Xs(Y)}`,W},i=ml[t.locale]?t.locale:"en",s=ml[i],a=n("cm-add_child",s.addChild,"Tab"),o=n("cm-add_parent",s.addParent,"Ctrl + Enter"),l=n("cm-add_sibling",s.addSibling,"Enter"),c=n("cm-remove_child",s.removeNode,"Delete"),d=n("cm-fucus",s.focus,""),f=n("cm-unfucus",s.cancelFocus,""),p=n("cm-up",s.moveUp,"PgUp"),b=n("cm-down",s.moveDown,"Pgdn"),v=n("cm-link",s.link,""),k=n("cm-link-bidirectional",s.linkBidirectional,""),w=n("cm-summary",s.summary,""),M=document.createElement("ul");if(M.className="menu-list",M.appendChild(a),M.appendChild(o),M.appendChild(l),M.appendChild(c),e.focus&&(M.appendChild(d),M.appendChild(f)),M.appendChild(p),M.appendChild(b),M.appendChild(w),e.link&&(M.appendChild(v),M.appendChild(k)),e&&e.extend)for(let O=0;O{z.onclick(W)}}const x=document.createElement("div");x.className="context-menu",x.appendChild(M),x.hidden=!0,t.container.append(x);let A=!0;const N=O=>{const z=O.target;if(Zs(z)){z.parentElement.tagName==="ME-ROOT"?A=!0:A=!1,A?(d.className="disabled",p.className="disabled",b.className="disabled",o.className="disabled",l.className="disabled",c.className="disabled"):(d.className="",p.className="",b.className="",o.className="",l.className="",c.className=""),x.hidden=!1,M.style.top="",M.style.bottom="",M.style.left="",M.style.right="";const Y=M.getBoundingClientRect(),W=M.offsetHeight,he=M.offsetWidth,pe=O.clientY-Y.top,Ae=O.clientX-Y.left;W+pe>window.innerHeight?(M.style.top="",M.style.bottom="0px"):(M.style.bottom="",M.style.top=pe+15+"px"),he+Ae>window.innerWidth?(M.style.left="",M.style.right="0px"):(M.style.right="",M.style.left=Ae+10+"px")}};t.bus.addListener("showContextMenu",N),x.onclick=O=>{O.target===x&&(x.hidden=!0)},a.onclick=()=>{t.addChild(),x.hidden=!0},o.onclick=()=>{t.insertParent(),x.hidden=!0},l.onclick=()=>{A||(t.insertSibling("after"),x.hidden=!0)},c.onclick=()=>{A||(t.removeNodes(t.currentNodes||[]),x.hidden=!0)},d.onclick=()=>{A||(t.focusNode(t.currentNode),x.hidden=!0)},f.onclick=()=>{t.cancelFocus(),x.hidden=!0},p.onclick=()=>{A||(t.moveUpNode(),x.hidden=!0)},b.onclick=()=>{A||(t.moveDownNode(),x.hidden=!0)};const _=O=>{x.hidden=!0;const z=t.currentNode,Y=r(s.clickTips);t.container.appendChild(Y),t.map.addEventListener("click",W=>{W.preventDefault(),Y.remove();const he=W.target;(he.parentElement.tagName==="ME-PARENT"||he.parentElement.tagName==="ME-ROOT")&&t.createArrow(z,he,O)},{once:!0})};return v.onclick=()=>_(),k.onclick=()=>_({bidirectional:!0}),w.onclick=()=>{x.hidden=!0,t.createSummary(),t.unselectNodes(t.currentNodes)},()=>{a.onclick=null,o.onclick=null,l.onclick=null,c.onclick=null,d.onclick=null,f.onclick=null,p.onclick=null,b.onclick=null,v.onclick=null,w.onclick=null,x.onclick=null,t.container.oncontextmenu=null}}const Qs=document,Ep=function(t,e){if(!e)return ea(t),t;let r=t.querySelector(".insert-preview");const n=`insert-preview ${e} show`;return r||(r=Qs.createElement("div"),t.appendChild(r)),r.className=n,t},ea=function(t){if(!t)return;const e=t.querySelectorAll(".insert-preview");for(const r of e||[])r.remove()},gl=function(t,e){for(const r of e){const n=r.parentElement.parentElement.contains(t);if(!(t&&t.tagName==="ME-TPC"&&t!==r&&!n&&t.nodeObj.parent))return!1}return!0},Cp=function(t){const e=document.createElement("div");return e.className="mind-elixir-ghost",t.container.appendChild(e),e};class Mp{constructor(e){_0(this,"mind"),_0(this,"isMoving",!1),_0(this,"interval",null),_0(this,"speed",20),this.mind=e}move(e,r){this.isMoving||(this.isMoving=!0,this.interval=setInterval(()=>{this.mind.move(e*this.speed*this.mind.scaleVal,r*this.speed*this.mind.scaleVal)},100))}stop(){this.isMoving=!1,clearInterval(this.interval)}}function Np(t){let e=null,r=null;const n=Cp(t),i=new Mp(t),s=l=>{t.selection.cancel();const c=l.target;if((c==null?void 0:c.tagName)!=="ME-TPC"){l.preventDefault();return}let d=t.currentNodes;d!=null&&d.includes(c)||(t.selectNode(c),d=t.currentNodes),t.dragged=d,d.length>1?n.innerHTML=d.length+"":n.innerHTML=c.innerHTML;for(const f of d)f.parentElement.parentElement.style.opacity="0.5";l.dataTransfer.setDragImage(n,0,0),l.dataTransfer.dropEffect="move",t.dragMoveHelper.clear()},a=l=>{const{dragged:c}=t;if(!c)return;i.stop();for(const f of c)f.parentElement.parentElement.style.opacity="1";const d=l.target;d.style.opacity="",r&&(ea(r),e==="before"?t.moveNodeBefore(c,r):e==="after"?t.moveNodeAfter(c,r):e==="in"&&t.moveNodeIn(c,r),t.dragged=null,n.innerHTML="")},o=l=>{l.preventDefault();const c=12*t.scaleVal,{dragged:d}=t;if(!d)return;const f=t.container.getBoundingClientRect();l.clientXf.x+f.width-50?i.move(-1,0):l.clientYf.y+f.height-50?i.move(0,-1):i.stop(),ea(r);const p=Qs.elementFromPoint(l.clientX,l.clientY-c);if(gl(p,d)){r=p;const b=p.getBoundingClientRect(),v=b.y;l.clientY>v+b.height?e="after":e="in"}else{const b=Qs.elementFromPoint(l.clientX,l.clientY+c),v=b.getBoundingClientRect();if(gl(b,d)){r=b;const k=v.y;l.clientYe.id)}:{type:"nodes",value:[t.obj.id]}};function Rp(t){let e=[],r=-1,n=t.getData(),i=[];t.undo=function(){if(r>-1){const l=e[r];n=l.prev,t.refresh(l.prev);try{l.currentTarget.type==="nodes"&&(l.operation==="removeNodes"?t.selectNodes(l.currentTarget.value.map(c=>this.findEle(c))):t.selectNodes(l.currentSelected.map(c=>this.findEle(c))))}catch{}finally{r--}}},t.redo=function(){if(rthis.findEle(c))):t.selectNodes(l.currentTarget.value.map(c=>this.findEle(c))))}catch{}}};const s=function(l){if(l.name==="beginEdit")return;e=e.slice(0,r+1);const c=t.getData(),d={prev:n,operation:l.name,currentSelected:i.map(f=>f.id),currentTarget:Dp(l),next:c};e.push(d),n=c,r=e.length-1},a=function(l){(l.metaKey||l.ctrlKey)&&(l.shiftKey&&l.key==="Z"||l.key==="y")?t.redo():(l.metaKey||l.ctrlKey)&&l.key==="z"&&t.undo()},o=function(l){i=t.currentNodes.map(c=>c.nodeObj)};return t.bus.addListener("operation",s),t.bus.addListener("selectNodes",o),t.container.addEventListener("keydown",a),()=>{t.bus.removeListener("operation",s),t.bus.removeListener("selectNodes",o),t.container.removeEventListener("keydown",a)}}const Ip='',_p='',Op='',Lp='',zp='',Fp='',$p='',Bp={side:Ip,left:_p,right:Op,full:Lp,living:zp,zoomin:Fp,zoomout:$p},un=(t,e)=>{const r=document.createElement("span");return r.id=t,r.innerHTML=Bp[e],r};function Pp(t){const e=document.createElement("div"),r=un("fullscreen","full"),n=un("toCenter","living"),i=un("zoomout","zoomout"),s=un("zoomin","zoomin"),a=document.createElement("span");return a.innerText="100%",e.appendChild(r),e.appendChild(n),e.appendChild(i),e.appendChild(s),e.className="mind-elixir-toolbar rb",r.onclick=()=>{document.fullscreenElement===t.el?document.exitFullscreen():t.el.requestFullscreen()},n.onclick=()=>{t.toCenter()},i.onclick=()=>{t.scale(t.scaleVal-t.scaleSensitivity)},s.onclick=()=>{t.scale(t.scaleVal+t.scaleSensitivity)},e}function Hp(t){const e=document.createElement("div"),r=un("tbltl","left"),n=un("tbltr","right"),i=un("tblts","side");return e.appendChild(r),e.appendChild(n),e.appendChild(i),e.className="mind-elixir-toolbar lt",r.onclick=()=>{t.initLeft()},n.onclick=()=>{t.initRight()},i.onclick=()=>{t.initSide()},e}function qp(t){t.container.append(Pp(t)),t.container.append(Hp(t))}/*! @viselect/vanilla v3.9.0 MIT | https://github.com/Simonwep/selection/tree/master/packages/vanilla */class jp{constructor(){this._listeners=new Map,this.on=this.addEventListener,this.off=this.removeEventListener,this.emit=this.dispatchEvent}addEventListener(e,r){const n=this._listeners.get(e)??new Set;return this._listeners.set(e,n),n.add(r),this}removeEventListener(e,r){var n;return(n=this._listeners.get(e))==null||n.delete(r),this}dispatchEvent(e,...r){let n=!0;for(const i of this._listeners.get(e)??[])n=i(...r)!==!1&&n;return n}unbindAllListeners(){this._listeners.clear()}}const vl=(t,e="px")=>typeof t=="number"?t+e:t,$r=({style:t},e,r)=>{if(typeof e=="object")for(const[n,i]of Object.entries(e))i!==void 0&&(t[n]=vl(i));else r!==void 0&&(t[e]=vl(r))},bl=(t=0,e=0,r=0,n=0)=>{const i={x:t,y:e,width:r,height:n,top:e,left:t,right:t+r,bottom:e+n};return{...i,toJSON:()=>JSON.stringify(i)}},Up=t=>{let e,r=-1,n=!1;return{next:(...i)=>{e=i,n||(n=!0,r=requestAnimationFrame(()=>{t(...e),n=!1}))},cancel:()=>{cancelAnimationFrame(r),n=!1}}},yl=(t,e,r="touch")=>{switch(r){case"center":{const n=e.left+e.width/2,i=e.top+e.height/2;return n>=t.left&&n<=t.right&&i>=t.top&&i<=t.bottom}case"cover":return e.left>=t.left&&e.top>=t.top&&e.right<=t.right&&e.bottom<=t.bottom;case"touch":return t.right>=e.left&&t.left<=e.right&&t.bottom>=e.top&&t.top<=e.bottom}},Vp=()=>matchMedia("(hover: none), (pointer: coarse)").matches,Wp=()=>"safari"in window,ta=t=>Array.isArray(t)?t:[t],ju=t=>(e,r,n,i={})=>{(e instanceof HTMLCollection||e instanceof NodeList)&&(e=Array.from(e)),r=ta(r),e=ta(e);for(const s of e)if(s)for(const a of r)s[t](a,n,{capture:!1,...i})},Br=ju("addEventListener"),Jt=ju("removeEventListener"),O0=t=>{var e;const{clientX:r,clientY:n,target:i}=((e=t.touches)==null?void 0:e[0])??t;return{x:r,y:n,target:i}},kn=(t,e=document)=>ta(t).map(r=>typeof r=="string"?Array.from(e.querySelectorAll(r)):r instanceof Element?r:null).flat().filter(Boolean),Gp=(t,e)=>e.some(r=>typeof r=="number"?t.button===r:typeof r=="object"?r.button!==t.button?!1:r.modifiers.every(n=>{switch(n){case"alt":return t.altKey;case"ctrl":return t.ctrlKey||t.metaKey;case"shift":return t.shiftKey}}):!1),{abs:an,max:wl,min:xl,ceil:kl}=Math,Sl=(t=[])=>({stored:t,selected:[],touched:[],changed:{added:[],removed:[]}}),Uu=class extends jp{constructor(e){var r,n,i,s,a;super(),this._selection=Sl(),this._targetBoundaryScrolled=!0,this._selectables=[],this._areaLocation={y1:0,x2:0,y2:0,x1:0},this._areaRect=bl(),this._singleClick=!0,this._scrollAvailable=!0,this._scrollingActive=!1,this._scrollSpeed={x:0,y:0},this._scrollDelta={x:0,y:0},this._lastMousePosition={x:0,y:0},this.enable=this._toggleStartEvents,this.disable=this._toggleStartEvents.bind(this,!1),this._options={selectionAreaClass:"selection-area",selectionContainerClass:void 0,selectables:[],document:window.document,startAreas:["html"],boundaries:["html"],container:"body",...e,behaviour:{overlap:"invert",intersect:"touch",triggers:[0],...e.behaviour,startThreshold:(r=e.behaviour)!=null&&r.startThreshold?typeof e.behaviour.startThreshold=="number"?e.behaviour.startThreshold:{x:10,y:10,...e.behaviour.startThreshold}:{x:10,y:10},scrolling:{speedDivider:10,manualSpeed:750,...(n=e.behaviour)==null?void 0:n.scrolling,startScrollMargins:{x:0,y:0,...(s=(i=e.behaviour)==null?void 0:i.scrolling)==null?void 0:s.startScrollMargins}}},features:{range:!0,touch:!0,deselectOnBlur:!1,...e.features,singleTap:{allow:!0,intersect:"native",...(a=e.features)==null?void 0:a.singleTap}}};for(const d of Object.getOwnPropertyNames(Object.getPrototypeOf(this)))typeof this[d]=="function"&&(this[d]=this[d].bind(this));const{document:o,selectionAreaClass:l,selectionContainerClass:c}=this._options;this._area=o.createElement("div"),this._clippingElement=o.createElement("div"),this._clippingElement.appendChild(this._area),this._area.classList.add(l),c&&this._clippingElement.classList.add(c),$r(this._area,{willChange:"top, left, bottom, right, width, height",top:0,left:0,position:"fixed"}),$r(this._clippingElement,{overflow:"hidden",position:"fixed",transform:"translate3d(0, 0, 0)",pointerEvents:"none",zIndex:"1"}),this._frame=Up(d=>{this._recalculateSelectionAreaRect(),this._updateElementSelection(),this._emitEvent("move",d),this._redrawSelectionArea()}),this.enable()}_toggleStartEvents(e=!0){const{document:r,features:n}=this._options,i=e?Br:Jt;i(r,"mousedown",this._onTapStart),n.touch&&i(r,"touchstart",this._onTapStart,{passive:!1})}_onTapStart(e,r=!1){const{x:n,y:i,target:s}=O0(e),{document:a,startAreas:o,boundaries:l,features:c,behaviour:d}=this._options,f=s.getBoundingClientRect();if(e instanceof MouseEvent&&!Gp(e,d.triggers))return;const p=kn(o,a),b=kn(l,a);this._targetElement=b.find(M=>yl(M.getBoundingClientRect(),f));const v=e.composedPath(),k=p.find(M=>v.includes(M));if(this._targetBoundary=b.find(M=>v.includes(M)),!this._targetElement||!k||!this._targetBoundary||!r&&this._emitEvent("beforestart",e)===!1)return;this._areaLocation={x1:n,y1:i,x2:0,y2:0};const w=a.scrollingElement??a.body;this._scrollDelta={x:w.scrollLeft,y:w.scrollTop},this._singleClick=!0,this.clearSelection(!1,!0),Br(a,["touchmove","mousemove"],this._delayedTapMove,{passive:!1}),Br(a,["mouseup","touchcancel","touchend"],this._onTapStop),Br(a,"scroll",this._onScroll),c.deselectOnBlur&&(this._targetBoundaryScrolled=!1,Br(this._targetBoundary,"scroll",this._onStartAreaScroll))}_onSingleTap(e){const{singleTap:{intersect:r},range:n}=this._options.features,i=O0(e);let s;if(r==="native")s=i.target;else if(r==="touch"){this.resolveSelectables();const{x:o,y:l}=i;s=this._selectables.find(c=>{const{right:d,left:f,top:p,bottom:b}=c.getBoundingClientRect();return of&&lp})}if(!s)return;for(this.resolveSelectables();!this._selectables.includes(s);)if(s.parentElement)s=s.parentElement;else{this._targetBoundaryScrolled||this.clearSelection();return}const{stored:a}=this._selection;if(this._emitEvent("start",e),e.shiftKey&&n&&this._latestElement){const o=this._latestElement,[l,c]=o.compareDocumentPosition(s)&4?[s,o]:[o,s],d=[...this._selectables.filter(f=>f.compareDocumentPosition(l)&4&&f.compareDocumentPosition(c)&2),l,c];this.select(d),this._latestElement=o}else a.includes(s)&&(a.length===1||e.ctrlKey||a.every(o=>this._selection.stored.includes(o)))?this.deselect(s):(this.select(s),this._latestElement=s)}_delayedTapMove(e){const{container:r,document:n,behaviour:{startThreshold:i}}=this._options,{x1:s,y1:a}=this._areaLocation,{x:o,y:l}=O0(e);if(typeof i=="number"&&an(o+l-(s+a))>=i||typeof i=="object"&&an(o-s)>=i.x||an(l-a)>=i.y){if(Jt(n,["mousemove","touchmove"],this._delayedTapMove,{passive:!1}),this._emitEvent("beforedrag",e)===!1){Jt(n,["mouseup","touchcancel","touchend"],this._onTapStop);return}Br(n,["mousemove","touchmove"],this._onTapMove,{passive:!1}),$r(this._area,"display","block"),kn(r,n)[0].appendChild(this._clippingElement),this.resolveSelectables(),this._singleClick=!1,this._targetRect=this._targetElement.getBoundingClientRect(),this._scrollAvailable=this._targetElement.scrollHeight!==this._targetElement.clientHeight||this._targetElement.scrollWidth!==this._targetElement.clientWidth,this._scrollAvailable&&(Br(this._targetElement,"wheel",this._wheelScroll,{passive:!1}),Br(this._options.document,"keydown",this._keyboardScroll,{passive:!1}),this._selectables=this._selectables.filter(c=>this._targetElement.contains(c))),this._setupSelectionArea(),this._emitEvent("start",e),this._onTapMove(e)}this._handleMoveEvent(e)}_setupSelectionArea(){const{_clippingElement:e,_targetElement:r,_area:n}=this,i=this._targetRect=r.getBoundingClientRect();this._scrollAvailable?($r(e,{top:i.top,left:i.left,width:i.width,height:i.height}),$r(n,{marginTop:-i.top,marginLeft:-i.left})):($r(e,{top:0,left:0,width:"100%",height:"100%"}),$r(n,{marginTop:0,marginLeft:0}))}_onTapMove(e){const{_scrollSpeed:r,_areaLocation:n,_options:i,_frame:s}=this,{speedDivider:a}=i.behaviour.scrolling,o=this._targetElement,{x:l,y:c}=O0(e);if(n.x2=l,n.y2=c,this._lastMousePosition.x=l,this._lastMousePosition.y=c,this._scrollAvailable&&!this._scrollingActive&&(r.y||r.x)){this._scrollingActive=!0;const d=()=>{if(!r.x&&!r.y){this._scrollingActive=!1;return}const{scrollTop:f,scrollLeft:p}=o;r.y&&(o.scrollTop+=kl(r.y/a),n.y1-=o.scrollTop-f),r.x&&(o.scrollLeft+=kl(r.x/a),n.x1-=o.scrollLeft-p),s.next(e),requestAnimationFrame(d)};requestAnimationFrame(d)}else s.next(e);this._handleMoveEvent(e)}_handleMoveEvent(e){const{features:r}=this._options;(r.touch&&Vp()||this._scrollAvailable&&Wp())&&e.preventDefault()}_onScroll(){const{_scrollDelta:e,_options:{document:r}}=this,{scrollTop:n,scrollLeft:i}=r.scrollingElement??r.body;this._areaLocation.x1+=e.x-i,this._areaLocation.y1+=e.y-n,e.x=i,e.y=n,this._setupSelectionArea(),this._frame.next(null)}_onStartAreaScroll(){this._targetBoundaryScrolled=!0,Jt(this._targetElement,"scroll",this._onStartAreaScroll)}_wheelScroll(e){const{manualSpeed:r}=this._options.behaviour.scrolling,n=e.deltaY?e.deltaY>0?1:-1:0,i=e.deltaX?e.deltaX>0?1:-1:0;this._scrollSpeed.y+=n*r,this._scrollSpeed.x+=i*r,this._onTapMove(e),e.preventDefault()}_keyboardScroll(e){const{manualSpeed:r}=this._options.behaviour.scrolling,n=e.key==="ArrowLeft"?-1:e.key==="ArrowRight"?1:0,i=e.key==="ArrowUp"?-1:e.key==="ArrowDown"?1:0;this._scrollSpeed.x+=Math.sign(n)*r,this._scrollSpeed.y+=Math.sign(i)*r,e.preventDefault(),this._onTapMove({clientX:this._lastMousePosition.x,clientY:this._lastMousePosition.y,preventDefault:()=>{}})}_recalculateSelectionAreaRect(){const{_scrollSpeed:e,_areaLocation:r,_targetElement:n,_options:i}=this,{scrollTop:s,scrollHeight:a,clientHeight:o,scrollLeft:l,scrollWidth:c,clientWidth:d}=n,f=this._targetRect,{x1:p,y1:b}=r;let{x2:v,y2:k}=r;const{behaviour:{scrolling:{startScrollMargins:w}}}=i;vf.right-w.x?(e.x=c-l-d?an(f.left+f.width-v-w.x):0,v=v>f.right?f.right:v):e.x=0,kf.bottom-w.y?(e.y=a-s-o?an(f.top+f.height-k-w.y):0,k=k>f.bottom?f.bottom:k):e.y=0;const M=xl(p,v),x=xl(b,k),A=wl(p,v),N=wl(b,k);this._areaRect=bl(M,x,A-M,N-x)}_redrawSelectionArea(){const{x:e,y:r,width:n,height:i}=this._areaRect,{style:s}=this._area;s.left=`${e}px`,s.top=`${r}px`,s.width=`${n}px`,s.height=`${i}px`}_onTapStop(e,r){var n;const{document:i,features:s}=this._options,{_singleClick:a}=this;Jt(this._targetElement,"scroll",this._onStartAreaScroll),Jt(i,["mousemove","touchmove"],this._delayedTapMove),Jt(i,["touchmove","mousemove"],this._onTapMove),Jt(i,["mouseup","touchcancel","touchend"],this._onTapStop),Jt(i,"scroll",this._onScroll),this._keepSelection(),e&&a&&s.singleTap.allow?this._onSingleTap(e):!a&&!r&&(this._updateElementSelection(),this._emitEvent("stop",e)),this._scrollSpeed.x=0,this._scrollSpeed.y=0,Jt(this._targetElement,"wheel",this._wheelScroll,{passive:!0}),Jt(this._options.document,"keydown",this._keyboardScroll,{passive:!0}),this._clippingElement.remove(),(n=this._frame)==null||n.cancel(),$r(this._area,"display","none")}_updateElementSelection(){const{_selectables:e,_options:r,_selection:n,_areaRect:i}=this,{stored:s,selected:a,touched:o}=n,{intersect:l,overlap:c}=r.behaviour,d=c==="invert",f=[],p=[],b=[];for(let k=0;k!a.includes(k)));const v=c==="keep";for(let k=0;k!a.includes(l));switch(e.behaviour.overlap){case"drop":{r.stored=[...o,...a.filter(l=>!s.includes(l))];break}case"invert":{r.stored=[...o,...a.filter(l=>!i.removed.includes(l))];break}case"keep":{r.stored=[...a,...n.filter(l=>!a.includes(l))];break}}}trigger(e,r=!0){this._onTapStart(e,r)}resolveSelectables(){this._selectables=kn(this._options.selectables,this._options.document)}clearSelection(e=!0,r=!1){const{selected:n,stored:i,changed:s}=this._selection;s.added=[],s.removed.push(...n,...e?i:[]),r||(this._emitEvent("move",null),this._emitEvent("stop",null)),this._selection=Sl(e?[]:i)}getSelection(){return this._selection.stored}getSelectionArea(){return this._area}getSelectables(){return this._selectables}setAreaLocation(e){Object.assign(this._areaLocation,e),this._redrawSelectionArea()}getAreaLocation(){return this._areaLocation}cancel(e=!1){this._onTapStop(null,!e)}destroy(){this.cancel(),this.disable(),this._clippingElement.remove(),super.unbindAllListeners()}select(e,r=!1){const{changed:n,selected:i,stored:s}=this._selection,a=kn(e,this._options.document).filter(o=>!i.includes(o)&&!s.includes(o));return s.push(...a),i.push(...a),n.added.push(...a),n.removed=[],this._latestElement=void 0,r||(this._emitEvent("move",null),this._emitEvent("stop",null)),a}deselect(e,r=!1){const{selected:n,stored:i,changed:s}=this._selection,a=kn(e,this._options.document).filter(o=>n.includes(o)||i.includes(o));this._selection.stored=i.filter(o=>!a.includes(o)),this._selection.selected=n.filter(o=>!a.includes(o)),this._selection.changed.added=[],this._selection.changed.removed.push(...a.filter(o=>!s.removed.includes(o))),this._latestElement=void 0,r||(this._emitEvent("move",null),this._emitEvent("stop",null))}};Uu.version="3.9.0";let Kp=Uu;function Yp(t){const e=t.mouseSelectionButton===2?[2]:[0],r=new Kp({selectables:[".map-container me-tpc"],boundaries:[t.container],container:t.selectionContainer,features:{touch:!1},behaviour:{triggers:e,scrolling:{speedDivider:10,manualSpeed:750,startScrollMargins:{x:10,y:10}}}}).on("beforestart",({event:n})=>{var i;const s=n.target;if(s.id==="input-box"||s.className==="circle"||(i=t.container.querySelector(".context-menu"))!=null&&i.contains(s))return!1;if(!n.ctrlKey&&!n.metaKey){if(s.tagName==="ME-TPC"&&s.classList.contains("selected"))return!1;t.clearSelection()}const a=r.getSelectionArea();return a.style.background="#4f90f22d",a.style.border="1px solid #4f90f2",a.parentElement&&(a.parentElement.style.zIndex="9999"),!0}).on("move",({store:{changed:{added:n,removed:i}}})=>{if(n.length>0||i.length>0,n.length>0){for(const s of n)s.className="selected";t.currentNodes=[...t.currentNodes,...n],t.bus.fire("selectNodes",n.map(s=>s.nodeObj))}if(i.length>0){for(const s of i)s.classList.remove("selected");t.currentNodes=t.currentNodes.filter(s=>!(i!=null&&i.includes(s))),t.bus.fire("unselectNodes",i.map(s=>s.nodeObj))}});t.selection=r}const Xp=function(t,e=!0){this.theme=t;const r={...(t.type==="dark"?ja:qa).cssVar,...t.cssVar},n=Object.keys(r);for(let i=0;i{var e;const r=(e=t.parent)==null?void 0:e.children,n=(r==null?void 0:r.indexOf(t))??0;return{siblings:r,index:n}};function Zp(t){const{siblings:e,index:r}=$n(t);if(e===void 0)return;const n=e[r];r===0?(e[r]=e[e.length-1],e[e.length-1]=n):(e[r]=e[r-1],e[r-1]=n)}function Jp(t){const{siblings:e,index:r}=$n(t);if(e===void 0)return;const n=e[r];r===e.length-1?(e[r]=e[0],e[0]=n):(e[r]=e[r+1],e[r+1]=n)}function Vu(t){const{siblings:e,index:r}=$n(t);return e===void 0?0:(e.splice(r,1),e.length)}function Qp(t,e,r){const{siblings:n,index:i}=$n(r);n!==void 0&&(e==="before"?n.splice(i,0,t):n.splice(i+1,0,t))}function e4(t,e){const{siblings:r,index:n}=$n(t);r!==void 0&&(r[n]=e,e.children=[t])}function Wu(t,e,r){var n;if(Vu(e),(n=r.parent)!=null&&n.parent||(e.direction=r.direction),t==="in")r.children?r.children.push(e):r.children=[e];else{e.direction!==void 0&&(e.direction=r.direction);const{siblings:i,index:s}=$n(r);if(i===void 0)return;t==="before"?i.splice(s,0,e):i.splice(s+1,0,e)}}const t4=function({map:t,direction:e},r){var n,i;if(e===0)return 0;if(e===1)return 1;if(e===2){const s=((n=t.querySelector(".lhs"))==null?void 0:n.childElementCount)||0,a=((i=t.querySelector(".rhs"))==null?void 0:i.childElementCount)||0;return s<=a?(r.direction=0,0):(r.direction=1,1)}},Gu=function(t,e,r){var n,i;const s=r.children[0].children[0],a=e.parentElement;if(a.tagName==="ME-PARENT"){if(y0(s),a.children[1])a.nextSibling.appendChild(r);else{const o=t.createChildren([r]);a.appendChild(Ka(!0)),a.insertAdjacentElement("afterend",o)}t.linkDiv(r.offsetParent)}else a.tagName==="ME-ROOT"&&(t4(t,s.nodeObj)===0?(n=t.container.querySelector(".lhs"))==null||n.appendChild(r):(i=t.container.querySelector(".rhs"))==null||i.appendChild(r),t.linkDiv())},r4=function(t,e){const r=t.parentNode;if(e===0){const n=r.parentNode.parentNode;n.tagName!=="ME-MAIN"&&(n.previousSibling.children[1].remove(),n.remove())}r.parentNode.remove()},Ku={before:"beforebegin",after:"afterend"},y0=function(t){const e=t.parentElement.parentElement.lastElementChild;(e==null?void 0:e.tagName)==="svg"&&(e==null||e.remove())},n4=function(t,e){const r=t.nodeObj,n=Va(r);n.style&&e.style&&(e.style=Object.assign(n.style,e.style));const i=Object.assign(r,e);Ga.call(this,t,i),this.linkDiv(),this.bus.fire("operation",{name:"reshapeNode",obj:i,origin:n})},Ya=function(t,e,r){if(!e)return null;const n=e.nodeObj;n.expanded===!1&&(t.expandNode(e,!0),e=t.findEle(n.id));const i=r||t.generateNewObj();n.children?n.children.push(i):n.children=[i],en(t.nodeData);const{grp:s,top:a}=t.createWrapper(i);return Gu(t,e,s),{newTop:a,newNodeObj:i}},i4=function(t,e,r){var n,i,s,a;const o=e||this.currentNode;if(!o)return;const l=o.nodeObj;if(l.parent){if(!((n=l.parent)!=null&&n.parent)&&((s=(i=l.parent)==null?void 0:i.children)==null?void 0:s.length)===1&&this.direction===2){this.addChild(this.findEle(l.parent.id),r);return}}else{this.addChild();return}const c=r||this.generateNewObj();if(!((a=l.parent)!=null&&a.parent)){const b=o.closest("me-main").className===sr.LHS?0:1;c.direction=b}Qp(c,t,l),en(this.nodeData);const d=o.parentElement,{grp:f,top:p}=this.createWrapper(c);d.parentElement.insertAdjacentElement(Ku[t],f),this.linkDiv(f.offsetParent),r||this.editTopic(p.firstChild),this.bus.fire("operation",{name:"insertSibling",type:t,obj:c}),this.selectNode(p.firstChild,!0)},s4=function(t,e){const r=t||this.currentNode;if(!r)return;y0(r);const n=r.nodeObj;if(!n.parent)return;const i=e||this.generateNewObj();e4(n,i),en(this.nodeData);const s=r.parentElement.parentElement,{grp:a,top:o}=this.createWrapper(i,!0);o.appendChild(Ka(!0)),s.insertAdjacentElement("afterend",a);const l=this.createChildren([s]);o.insertAdjacentElement("afterend",l),this.linkDiv(),e||this.editTopic(o.firstChild),this.selectNode(o.firstChild,!0),this.bus.fire("operation",{name:"insertParent",obj:i})},a4=function(t,e){const r=t||this.currentNode;if(!r)return;const n=Ya(this,r,e);if(!n)return;const{newTop:i,newNodeObj:s}=n;this.bus.fire("operation",{name:"addChild",obj:s}),e||this.editTopic(i.firstChild),this.selectNode(i.firstChild,!0)},o4=function(t,e){const r=Va(t.nodeObj);Ua(r);const n=Ya(this,e,r);if(!n)return;const{newNodeObj:i}=n;this.selectNode(this.findEle(i.id)),this.bus.fire("operation",{name:"copyNode",obj:i})},l4=function(t,e){t=qi(t);const r=[];for(let n=0;nthis.findEle(n.id))),this.bus.fire("operation",{name:"copyNodes",objs:r})},c4=function(t){const e=t||this.currentNode;if(!e)return;const r=e.nodeObj;Zp(r);const n=e.parentNode.parentNode;n.parentNode.insertBefore(n,n.previousSibling),this.linkDiv(),this.bus.fire("operation",{name:"moveUpNode",obj:r})},u4=function(t){const e=t||this.currentNode;if(!e)return;const r=e.nodeObj;Jp(r);const n=e.parentNode.parentNode;n.nextSibling?n.nextSibling.insertAdjacentElement("afterend",n):n.parentNode.prepend(n),this.linkDiv(),this.bus.fire("operation",{name:"moveDownNode",obj:r})},d4=function(t){if(t.length===0)return;t=qi(t);for(const r of t){const n=r.nodeObj,i=Vu(n);r4(r,i)}const e=t[t.length-1];this.selectNode(this.findEle(e.nodeObj.parent.id)),this.linkDiv(),this.bus.fire("operation",{name:"removeNodes",objs:t.map(r=>r.nodeObj)})},h4=function(t,e){t=qi(t);const r=e.nodeObj;r.expanded===!1&&(this.expandNode(e,!0),e=this.findEle(r.id));for(const n of t){const i=n.nodeObj;Wu("in",i,r),en(this.nodeData);const s=n.parentElement;Gu(this,e,s.parentElement)}this.linkDiv(),this.bus.fire("operation",{name:"moveNodeIn",objs:t.map(n=>n.nodeObj),toObj:r})},Yu=(t,e,r,n)=>{t=qi(t),e==="after"&&(t=t.reverse());const i=r.nodeObj,s=[];for(const a of t){const o=a.nodeObj;Wu(e,o,i),en(n.nodeData),y0(a);const l=a.parentElement.parentNode;s.includes(l.parentElement)||s.push(l.parentElement),r.parentElement.parentNode.insertAdjacentElement(Ku[e],l)}for(const a of s)a.childElementCount===0&&a.tagName!=="ME-MAIN"&&(a.previousSibling.children[1].remove(),a.remove());n.linkDiv(),n.bus.fire("operation",{name:e==="before"?"moveNodeBefore":"moveNodeAfter",objs:t.map(a=>a.nodeObj),toObj:i})},f4=function(t,e){Yu(t,"before",e,this)},p4=function(t,e){Yu(t,"after",e,this)},m4=function(t){const e=t||this.currentNode;e&&(e.nodeObj.dangerouslySetInnerHTML||this.editTopic(e))},g4=function(t,e){t.text.textContent=e,t.nodeObj.topic=e,this.linkDiv()},Xu=Object.freeze(Object.defineProperty({__proto__:null,addChild:a4,beginEdit:m4,copyNode:o4,copyNodes:l4,insertParent:s4,insertSibling:i4,moveDownNode:u4,moveNodeAfter:p4,moveNodeBefore:f4,moveNodeIn:h4,moveUpNode:c4,removeNodes:d4,reshapeNode:n4,rmSubline:y0,setNodeTopic:g4},Symbol.toStringTag,{value:"Module"}));function v4(t){return{nodeData:t.isFocusMode?t.nodeDataBackup:t.nodeData,arrows:t.arrows,summaries:t.summaries,direction:t.direction,theme:t.theme}}const b4=function(t){const e=this.container,r=t.getBoundingClientRect(),n=e.getBoundingClientRect();if(r.top>n.bottom||r.bottomn.right||r.right{if(!(e==="parent"&&typeof r!="string"))return r})},T4=function(){return JSON.parse(this.getDataString())},A4=function(){this.editable=!0},E4=function(){this.editable=!1},C4=function(t,e={x:0,y:0}){if(tthis.scaleMax)return;const r=this.container.getBoundingClientRect(),n=e.x?e.x-r.left-r.width/2:0,i=e.y?e.y-r.top-r.height/2:0,{dx:s,dy:a}=Zu(this),o=this.map.style.transform,{x:l,y:c}=Fu(o),d=l-s,f=c-a,p=this.scaleVal,b=(-n+d)*(1-t/p),v=(-i+f)*(1-t/p);this.map.style.transform=`translate(${l-b}px, ${c-v}px) scale(${t})`,this.scaleVal=t,this.bus.fire("scale",t)},M4=function(){const t=this.nodes.offsetHeight/this.container.offsetHeight,e=this.nodes.offsetWidth/this.container.offsetWidth,r=1/Math.max(1,Math.max(t,e));this.scaleVal=r,this.map.style.transform="scale("+r+")",this.bus.fire("scale",r)},N4=function(t,e,r=!1){const{map:n,scaleVal:i,bus:s}=this,a=n.style.transform;let{x:o,y:l}=Fu(a);o+=t,l+=e,r&&(n.style.transition="transform 0.3s",setTimeout(()=>{n.style.transition="none"},300)),n.style.transform=`translate(${o}px, ${l}px) scale(${i})`,s.fire("move",{dx:t,dy:e})},Zu=t=>{const{container:e,map:r,nodes:n}=t,i=r.querySelector("me-root"),s=i.offsetTop,a=i.offsetLeft,o=i.offsetWidth,l=i.offsetHeight;let c,d;return t.alignment==="root"?(c=e.offsetWidth/2-a-o/2,d=e.offsetHeight/2-s-l/2,r.style.transformOrigin=`${a+o/2}px 50%`):(c=(e.offsetWidth-n.offsetWidth)/2,d=(e.offsetHeight-n.offsetHeight)/2,r.style.transformOrigin="50% 50%"),{dx:c,dy:d}},D4=function(){const{map:t}=this,{dx:e,dy:r}=Zu(this);t.style.transform=`translate(${e}px, ${r}px) scale(${this.scaleVal})`},R4=function(t){t(this)},I4=function(t){t.nodeObj.parent&&(this.clearSelection(),this.tempDirection===null&&(this.tempDirection=this.direction),this.isFocusMode||(this.nodeDataBackup=this.nodeData,this.isFocusMode=!0),this.nodeData=t.nodeObj,this.initRight(),this.toCenter())},_4=function(){this.isFocusMode=!1,this.tempDirection!==null&&(this.nodeData=this.nodeDataBackup,this.direction=this.tempDirection,this.tempDirection=null,this.refresh(),this.toCenter())},O4=function(){this.direction=0,this.refresh(),this.toCenter()},L4=function(){this.direction=1,this.refresh(),this.toCenter()},z4=function(){this.direction=2,this.refresh(),this.toCenter()},F4=function(t){this.locale=t,this.refresh()},$4=function(t,e){const r=t.nodeObj;typeof e=="boolean"?r.expanded=e:r.expanded!==!1?r.expanded=!1:r.expanded=!0;const n=t.getBoundingClientRect(),i={x:n.left,y:n.top},s=t.parentNode,a=s.children[1];if(a.expanded=r.expanded,a.className=r.expanded?"minus":"",y0(t),r.expanded){const f=this.createChildren(r.children.map(p=>this.createWrapper(p).grp));s.parentNode.appendChild(f)}else s.parentNode.children[1].remove();this.linkDiv(t.closest("me-main > me-wrapper"));const o=t.getBoundingClientRect(),l={x:o.left,y:o.top},c=i.x-l.x,d=i.y-l.y;this.move(c,d),this.bus.fire("expandNode",r)},B4=function(t,e){const r=t.nodeObj,n=t.getBoundingClientRect(),i={x:n.left,y:n.top};_n(r,e??!r.expanded),this.refresh();const s=this.findEle(r.id).getBoundingClientRect(),a={x:s.left,y:s.top},o=i.x-a.x,l=i.y-a.y;this.move(o,l)},P4=function(t){this.clearSelection(),t&&(t=JSON.parse(JSON.stringify(t)),this.nodeData=t.nodeData,this.arrows=t.arrows||[],this.summaries=t.summaries||[],t.theme&&this.changeTheme(t.theme)),en(this.nodeData),this.layout(),this.linkDiv()},H4=Object.freeze(Object.defineProperty({__proto__:null,cancelFocus:_4,clearSelection:k4,disableEdit:E4,enableEdit:A4,expandNode:$4,expandNodeAll:B4,focusNode:I4,getData:T4,getDataString:S4,initLeft:O4,initRight:L4,initSide:z4,install:R4,move:N4,refresh:P4,scale:C4,scaleFit:M4,scrollIntoView:b4,selectNode:y4,selectNodes:w4,setLocale:F4,toCenter:D4,unselectNodes:x4},Symbol.toStringTag,{value:"Module"})),q4=function(t){return{dom:t,moved:!1,pointerdown:!1,lastX:0,lastY:0,handlePointerMove(e){if(this.pointerdown){this.moved=!0;const r=e.clientX-this.lastX,n=e.clientY-this.lastY;this.lastX=e.clientX,this.lastY=e.clientY,this.cb&&this.cb(r,n)}},handlePointerDown(e){e.button===0&&(this.pointerdown=!0,this.lastX=e.clientX,this.lastY=e.clientY,this.dom.setPointerCapture(e.pointerId))},handleClear(e){this.pointerdown=!1,e.pointerId!==void 0&&this.dom.releasePointerCapture(e.pointerId)},cb:null,init(e,r){this.cb=r,this.handleClear=this.handleClear.bind(this),this.handlePointerMove=this.handlePointerMove.bind(this),this.handlePointerDown=this.handlePointerDown.bind(this),this.destroy=Wa([{dom:e,evt:"pointermove",func:this.handlePointerMove},{dom:e,evt:"pointerleave",func:this.handleClear},{dom:e,evt:"pointerup",func:this.handleClear},{dom:this.dom,evt:"pointerdown",func:this.handlePointerDown}])},destroy:null,clear(){this.moved=!1,this.pointerdown=!1}}},Tl={create:q4},j4="#4dc4ff";function Ju(t,e,r,n,i,s,a,o){return{x:t/8+r*3/8+i*3/8+a/8,y:e/8+n*3/8+s*3/8+o/8}}function U4(t,e,r){gt(t,{x:e+"",y:r+""})}function L0(t,e,r,n,i){gt(t,{x1:e+"",y1:r+"",x2:n+"",y2:i+""})}function Al(t,e,r,n,i,s,a,o,l,c){var d;const f=`M ${e} ${r} C ${n} ${i} ${s} ${a} ${o} ${l}`;if(t.line.setAttribute("d",f),c.style){const w=c.style;w.stroke&&t.line.setAttribute("stroke",w.stroke),w.strokeWidth&&t.line.setAttribute("stroke-width",String(w.strokeWidth)),w.strokeDasharray&&t.line.setAttribute("stroke-dasharray",w.strokeDasharray),w.strokeLinecap&&t.line.setAttribute("stroke-linecap",w.strokeLinecap),w.opacity!==void 0&&t.line.setAttribute("opacity",String(w.opacity))}const p=t.querySelectorAll('path[stroke="transparent"]');p.length>0&&p[0].setAttribute("d",f);const b=vi(s,a,o,l);if(b){const w=`M ${b.x1} ${b.y1} L ${o} ${l} L ${b.x2} ${b.y2}`;if(t.arrow1.setAttribute("d",w),p.length>1&&p[1].setAttribute("d",w),c.style){const M=c.style;M.stroke&&t.arrow1.setAttribute("stroke",M.stroke),M.strokeWidth&&t.arrow1.setAttribute("stroke-width",String(M.strokeWidth)),M.strokeLinecap&&t.arrow1.setAttribute("stroke-linecap",M.strokeLinecap),M.opacity!==void 0&&t.arrow1.setAttribute("opacity",String(M.opacity))}}if(c.bidirectional){const w=vi(n,i,e,r);if(w){const M=`M ${w.x1} ${w.y1} L ${e} ${r} L ${w.x2} ${w.y2}`;if(t.arrow2.setAttribute("d",M),p.length>2&&p[2].setAttribute("d",M),c.style){const x=c.style;x.stroke&&t.arrow2.setAttribute("stroke",x.stroke),x.strokeWidth&&t.arrow2.setAttribute("stroke-width",String(x.strokeWidth)),x.strokeLinecap&&t.arrow2.setAttribute("stroke-linecap",x.strokeLinecap),x.opacity!==void 0&&t.arrow2.setAttribute("opacity",String(x.opacity))}}}const{x:v,y:k}=Ju(e,r,n,i,s,a,o,l);U4(t.label,v,k),(d=c.style)!=null&&d.labelColor&&t.label.setAttribute("fill",c.style.labelColor),J4(t)}function wi(t,e,r){const{offsetLeft:n,offsetTop:i}=tn(t.nodes,e),s=e.offsetWidth,a=e.offsetHeight,o=n+s/2,l=i+a/2,c=o+r.x,d=l+r.y;return{w:s,h:a,cx:o,cy:l,ctrlX:c,ctrlY:d}}function Cn(t){let e,r;const n=(t.cy-t.ctrlY)/(t.ctrlX-t.cx);return n>t.h/t.w||n<-t.h/t.w?t.cy-t.ctrlY<0?(e=t.cx-t.h/2/n,r=t.cy+t.h/2):(e=t.cx+t.h/2/n,r=t.cy-t.h/2):t.cx-t.ctrlX<0?(e=t.cx+t.w/2,r=t.cy-t.w*n/2):(e=t.cx-t.w/2,r=t.cy+t.w*n/2),{x:e,y:r}}const Xa=function(t,e,r,n,i){var s;if(!e||!r)return;const a=wi(t,e,n.delta1),o=wi(t,r,n.delta2),{x:l,y:c}=Cn(a),{ctrlX:d,ctrlY:f}=a,{ctrlX:p,ctrlY:b}=o,{x:v,y:k}=Cn(o),w=vi(p,b,v,k);if(!w)return;const M=`M ${w.x1} ${w.y1} L ${v} ${k} L ${w.x2} ${w.y2}`;let x="";if(n.bidirectional){const Y=vi(d,f,l,c);if(!Y)return;x=`M ${Y.x1} ${Y.y1} L ${l} ${c} L ${Y.x2} ${Y.y2}`}const A=Sp(`M ${l} ${c} C ${d} ${f} ${p} ${b} ${v} ${k}`,M,x,n.style),{x:N,y:_}=Ju(l,c,d,f,p,b,v,k),O=(s=n.style)==null?void 0:s.labelColor,z=Js(n.label,N,_,{anchor:"middle",color:O,dataType:"custom-link"});A.appendChild(z),A.label=z,A.arrowObj=n,A.dataset.linkid=n.id,t.linkSvgGroup.appendChild(A),i||(t.arrows.push(n),t.currentArrow=A,Qu(t,n,a,o))},V4=function(t,e,r={}){const n={id:vn(),label:"Custom Link",from:t.nodeObj.id,to:e.nodeObj.id,delta1:{x:t.offsetWidth/2+100,y:0},delta2:{x:e.offsetWidth/2+100,y:0},...r};Xa(this,t,e,n),this.bus.fire("operation",{name:"createArrow",obj:n})},W4=function(t){ji(this);const e={...t,id:vn()};Xa(this,this.findEle(e.from),this.findEle(e.to),e),this.bus.fire("operation",{name:"createArrow",obj:e})},G4=function(t){let e;if(t?e=t:e=this.currentArrow,!e)return;ji(this);const r=e.arrowObj.id;this.arrows=this.arrows.filter(n=>n.id!==r),e.remove(),this.bus.fire("operation",{name:"removeArrow",obj:{id:r}})},K4=function(t){this.currentArrow=t;const e=t.arrowObj,r=this.findEle(e.from),n=this.findEle(e.to),i=wi(this,r,e.delta1),s=wi(this,n,e.delta2);Qu(this,e,i,s)},Y4=function(){ji(this),this.currentArrow=null},ys=function(t,e){const r=document.createElementNS(Kt,"path");return gt(r,{d:t,stroke:e,fill:"none","stroke-width":"6","stroke-linecap":"round","stroke-linejoin":"round"}),r},X4=function(t,e){const r=document.createElementNS(Kt,"g");r.setAttribute("class","arrow-highlight"),r.setAttribute("opacity","0.45");const n=ys(t.line.getAttribute("d"),e);r.appendChild(n);const i=ys(t.arrow1.getAttribute("d"),e);if(r.appendChild(i),t.arrow2.getAttribute("d")){const s=ys(t.arrow2.getAttribute("d"),e);r.appendChild(s)}t.insertBefore(r,t.firstChild)},Z4=function(t){const e=t.querySelector(".arrow-highlight");e&&e.remove()},J4=function(t){const e=t.querySelector(".arrow-highlight");if(!e)return;const r=e.querySelectorAll("path");r.length>=1&&r[0].setAttribute("d",t.line.getAttribute("d")),r.length>=2&&r[1].setAttribute("d",t.arrow1.getAttribute("d")),r.length>=3&&t.arrow2.getAttribute("d")&&r[2].setAttribute("d",t.arrow2.getAttribute("d"))},ji=function(t){var e,r;(e=t.helper1)==null||e.destroy(),(r=t.helper2)==null||r.destroy(),t.linkController.style.display="none",t.P2.style.display="none",t.P3.style.display="none",t.currentArrow&&Z4(t.currentArrow)},Qu=function(t,e,r,n){const{linkController:i,P2:s,P3:a,line1:o,line2:l,nodes:c,map:d,currentArrow:f,bus:p}=t;if(!f)return;i.style.display="initial",s.style.display="initial",a.style.display="initial",c.appendChild(i),c.appendChild(s),c.appendChild(a),X4(f,j4);let{x:b,y:v}=Cn(r),{ctrlX:k,ctrlY:w}=r,{ctrlX:M,ctrlY:x}=n,{x:A,y:N}=Cn(n);s.style.cssText=`top:${w}px;left:${k}px;`,a.style.cssText=`top:${x}px;left:${M}px;`,L0(o,b,v,k,w),L0(l,M,x,A,N),t.helper1=Tl.create(s),t.helper2=Tl.create(a),t.helper1.init(d,(_,O)=>{k=k+_/t.scaleVal,w=w+O/t.scaleVal;const z=Cn({...r,ctrlX:k,ctrlY:w});b=z.x,v=z.y,s.style.top=w+"px",s.style.left=k+"px",Al(f,b,v,k,w,M,x,A,N,e),L0(o,b,v,k,w),e.delta1.x=k-r.cx,e.delta1.y=w-r.cy,p.fire("updateArrowDelta",e)}),t.helper2.init(d,(_,O)=>{M=M+_/t.scaleVal,x=x+O/t.scaleVal;const z=Cn({...n,ctrlX:M,ctrlY:x});A=z.x,N=z.y,a.style.top=x+"px",a.style.left=M+"px",Al(f,b,v,k,w,M,x,A,N,e),L0(l,M,x,A,N),e.delta2.x=M-n.cx,e.delta2.y=x-n.cy,p.fire("updateArrowDelta",e)})};function Q4(){this.linkSvgGroup.innerHTML="";for(let t=0;tgi(t.from,this.nodeData)&&gi(t.to,this.nodeData))}const rm=Object.freeze(Object.defineProperty({__proto__:null,createArrow:V4,createArrowFrom:W4,editArrowLabel:em,removeArrow:G4,renderArrow:Q4,selectArrow:K4,tidyArrow:tm,unselectArrow:Y4},Symbol.toStringTag,{value:"Module"})),nm=function(t){var e,r;if(t.length===0)throw new Error("No selected node.");if(t.length===1){const d=t[0].nodeObj,f=t[0].nodeObj.parent;if(!f)throw new Error("Can not select root node.");const p=f.children.findIndex(b=>d===b);return{parent:f.id,start:p,end:p}}let n=0;const i=t.map(d=>{let f=d.nodeObj;const p=[];for(;f.parent;){const b=f.parent,v=b.children,k=v==null?void 0:v.indexOf(f);f=b,p.unshift({node:f,index:k})}return p.length>n&&(n=p.length),p});let s=0;e:for(;sd[s-1].index).sort(),o=a[0]||0,l=a[a.length-1]||0,c=i[0][s-1].node;if(!c.parent)throw new Error("Please select nodes in the same main topic.");return{parent:c.id,start:o,end:l}},im=function(t){const e=document.createElementNS(Kt,"g");return e.setAttribute("id",t),e},El=function(t,e){const r=document.createElementNS(Kt,"path");return gt(r,{d:t,stroke:e||"#666",fill:"none","stroke-linecap":"round","stroke-width":"2"}),r},sm=t=>t.parentElement.parentElement,am=function(t,{parent:e,start:r}){const n=t.findEle(e),i=n.nodeObj;let s;return i.parent?s=n.closest("me-main").className:s=t.findEle(i.children[r].id).closest("me-main").className,s},Za=function(t,e){var r;const{id:n,label:i,parent:s,start:a,end:o}=e,{nodes:l,theme:c,summarySvg:d}=t,f=t.findEle(s).nodeObj,p=am(t,e);let b=1/0,v=0,k=0,w=0;for(let Y=a;Y<=o;Y++){const W=(r=f.children)==null?void 0:r[Y];if(!W)return t.removeSummary(n),null;const he=sm(t.findEle(W.id)),{offsetLeft:pe,offsetTop:Ae}=tn(l,he),st=a===o?10:20;Y===a&&(k=Ae+st),Y===o&&(w=Ae+he.offsetHeight-st),pev&&(v=he.offsetWidth+pe)}let M,x;const A=k+10,N=w+10,_=(A+N)/2,O=c.cssVar["--color"];p===sr.LHS?(M=El(`M ${b+10} ${A} c -5 0 -10 5 -10 10 L ${b} ${N-10} c 0 5 5 10 10 10 M ${b} ${_} h -10`,O),x=Js(i,b-20,_+6,{anchor:"end",color:O})):(M=El(`M ${v-10} ${A} c 5 0 10 5 10 10 L ${v} ${N-10} c 0 5 -5 10 -10 10 M ${v} ${_} h 10`,O),x=Js(i,v+20,_+6,{anchor:"start",color:O}));const z=im("s-"+n);return z.appendChild(M),z.appendChild(x),z.summaryObj=e,d.appendChild(z),z},om=function(){if(!this.currentNodes)return;const{currentNodes:t,summaries:e,bus:r}=this,{parent:n,start:i,end:s}=nm(t),a={id:vn(),parent:n,start:i,end:s,label:"summary"},o=Za(this,a);e.push(a),this.editSummary(o),r.fire("operation",{name:"createSummary",obj:a})},lm=function(t){const e=vn(),r={...t,id:e};Za(this,r),this.summaries.push(r),this.bus.fire("operation",{name:"createSummary",obj:r})},cm=function(t){var e;const r=this.summaries.findIndex(n=>n.id===t);r>-1&&(this.summaries.splice(r,1),(e=document.querySelector("#s-"+t))==null||e.remove()),this.bus.fire("operation",{name:"removeSummary",obj:{id:t}})},um=function(t){const e=t.children[1].getBBox(),r=6,n=3,i=document.createElementNS(Kt,"rect");gt(i,{x:e.x-r+"",y:e.y-r+"",width:e.width+r*2+"",height:e.height+r*2+"",rx:n+"",stroke:this.theme.cssVar["--selected"]||"#4dc4ff","stroke-width":"2",fill:"none"}),t.appendChild(i),this.currentSummary=t},dm=function(){var t,e;(e=(t=this.currentSummary)==null?void 0:t.querySelector("rect"))==null||e.remove(),this.currentSummary=null},hm=function(){this.summarySvg.innerHTML="",this.summaries.forEach(t=>{try{Za(this,t)}catch{}}),this.nodes.insertAdjacentElement("beforeend",this.summarySvg)},fm=function(t){if(!t)return;const e=t.childNodes[1];Hu(this,e,t.summaryObj)},pm=Object.freeze(Object.defineProperty({__proto__:null,createSummary:om,createSummaryFrom:lm,editSummary:fm,removeSummary:cm,renderSummary:hm,selectSummary:um,unselectSummary:dm},Symbol.toStringTag,{value:"Module"})),jt="http://www.w3.org/2000/svg";function mm(t,e){const r=document.createElementNS(jt,"svg");return gt(r,{version:"1.1",xmlns:jt,height:t,width:e}),r}function gm(t,e){return(parseInt(t)-parseInt(e))/2}function vm(t,e,r,n){const i=document.createElementNS(jt,"g");let s="";return t.text?s=t.text.textContent:s=t.childNodes[0].textContent,s.split(` -`).forEach((a,o)=>{const l=document.createElementNS(jt,"text");gt(l,{x:r+parseInt(e.paddingLeft)+"",y:n+parseInt(e.paddingTop)+gm(e.lineHeight,e.fontSize)*(o+1)+parseFloat(e.fontSize)*(o+1)+"","text-anchor":"start","font-family":e.fontFamily,"font-size":`${e.fontSize}`,"font-weight":`${e.fontWeight}`,fill:`${e.color}`}),l.innerHTML=a,i.appendChild(l)}),i}function bm(t,e,r,n){var i;let s="";(i=t.nodeObj)!=null&&i.dangerouslySetInnerHTML?s=t.nodeObj.dangerouslySetInnerHTML:t.text?s=t.text.textContent:s=t.childNodes[0].textContent;const a=document.createElementNS(jt,"foreignObject");gt(a,{x:r+parseInt(e.paddingLeft)+"",y:n+parseInt(e.paddingTop)+"",width:e.width,height:e.height});const o=document.createElement("div");return gt(o,{xmlns:"http://www.w3.org/1999/xhtml",style:`font-family: ${e.fontFamily}; font-size: ${e.fontSize}; font-weight: ${e.fontWeight}; color: ${e.color}; white-space: pre-wrap;`}),o.innerHTML=s,a.appendChild(o),a}function ym(t,e){const r=getComputedStyle(e),{offsetLeft:n,offsetTop:i}=tn(t.nodes,e),s=document.createElementNS(jt,"rect");return gt(s,{x:n+"",y:i+"",rx:r.borderRadius,ry:r.borderRadius,width:r.width,height:r.height,fill:r.backgroundColor,stroke:r.borderColor,"stroke-width":r.borderWidth}),s}function z0(t,e,r=!1){const n=getComputedStyle(e),{offsetLeft:i,offsetTop:s}=tn(t.nodes,e),a=document.createElementNS(jt,"rect");gt(a,{x:i+"",y:s+"",rx:n.borderRadius,ry:n.borderRadius,width:n.width,height:n.height,fill:n.backgroundColor,stroke:n.borderColor,"stroke-width":n.borderWidth});const o=document.createElementNS(jt,"g");o.appendChild(a);let l;return r?l=bm(e,n,i,s):l=vm(e,n,i,s),o.appendChild(l),o}function wm(t,e){const r=getComputedStyle(e),{offsetLeft:n,offsetTop:i}=tn(t.nodes,e),s=document.createElementNS(jt,"a"),a=document.createElementNS(jt,"text");return gt(a,{x:n+"",y:i+parseInt(r.fontSize)+"","text-anchor":"start","font-family":r.fontFamily,"font-size":`${r.fontSize}`,"font-weight":`${r.fontWeight}`,fill:`${r.color}`}),a.innerHTML=e.textContent,s.appendChild(a),s.setAttribute("href",e.href),s}function xm(t,e){const r=getComputedStyle(e),{offsetLeft:n,offsetTop:i}=tn(t.nodes,e),s=document.createElementNS(jt,"image");return gt(s,{x:n+"",y:i+"",width:r.width+"",height:r.height+"",href:e.src}),s}const F0=100,km='',Sm=(t,e=!1)=>{var r,n,i;const s=t.nodes,a=s.offsetHeight+F0*2,o=s.offsetWidth+F0*2,l=mm(a+"px",o+"px"),c=document.createElementNS(jt,"svg"),d=document.createElementNS(jt,"rect");gt(d,{x:"0",y:"0",width:`${o}`,height:`${a}`,fill:t.theme.cssVar["--bgcolor"]}),l.appendChild(d),s.querySelectorAll(".subLines").forEach(v=>{const k=v.cloneNode(!0),{offsetLeft:w,offsetTop:M}=tn(s,v.parentElement);k.setAttribute("x",`${w}`),k.setAttribute("y",`${M}`),c.appendChild(k)});const f=(r=s.querySelector(".lines"))==null?void 0:r.cloneNode(!0);f&&c.appendChild(f);const p=(n=s.querySelector(".topiclinks"))==null?void 0:n.cloneNode(!0);p&&c.appendChild(p);const b=(i=s.querySelector(".summary"))==null?void 0:i.cloneNode(!0);return b&&c.appendChild(b),s.querySelectorAll("me-tpc").forEach(v=>{v.nodeObj.dangerouslySetInnerHTML?c.appendChild(z0(t,v,!e)):(c.appendChild(ym(t,v)),c.appendChild(z0(t,v.text,!e)))}),s.querySelectorAll(".tags > span").forEach(v=>{c.appendChild(z0(t,v))}),s.querySelectorAll(".icons > span").forEach(v=>{c.appendChild(z0(t,v))}),s.querySelectorAll(".hyper-link").forEach(v=>{c.appendChild(wm(t,v))}),s.querySelectorAll("img").forEach(v=>{c.appendChild(xm(t,v))}),gt(c,{x:F0+"",y:F0+"",overflow:"visible"}),l.appendChild(c),l},Tm=(t,e)=>(e&&t.insertAdjacentHTML("afterbegin",""),km+t.outerHTML);function Am(t){return new Promise((e,r)=>{const n=new FileReader;n.onload=i=>{e(i.target.result)},n.onerror=i=>{r(i)},n.readAsDataURL(t)})}const Em=function(t=!1,e){const r=Sm(this,t),n=Tm(r,e);return new Blob([n],{type:"image/svg+xml"})},Cm=async function(t=!1,e){const r=this.exportSvg(t,e),n=await Am(r);return new Promise((i,s)=>{const a=new Image;a.setAttribute("crossOrigin","anonymous"),a.onload=()=>{const o=document.createElement("canvas");o.width=a.width,o.height=a.height,o.getContext("2d").drawImage(a,0,0),o.toBlob(i,"image/png",1)},a.src=n,a.onerror=s})},Mm=Object.freeze(Object.defineProperty({__proto__:null,exportPng:Cm,exportSvg:Em},Symbol.toStringTag,{value:"Module"}));function Nm(t,e){return async function(...r){const n=this.before[e];n&&!await n.apply(this,r)||t.apply(this,r)}}const Cl=Object.keys(Xu),e1={};for(let t=0;te()),this.el&&(this.el.innerHTML=""),this.el=void 0,this.nodeData=void 0,this.arrows=void 0,this.summaries=void 0,this.currentArrow=void 0,this.currentNodes=void 0,this.currentSummary=void 0,this.waitCopy=void 0,this.theme=void 0,this.direction=void 0,this.bus=void 0,this.container=void 0,this.map=void 0,this.lines=void 0,this.linkController=void 0,this.linkSvgGroup=void 0,this.P2=void 0,this.P3=void 0,this.line1=void 0,this.line2=void 0,this.nodes=void 0,(t=this.selection)==null||t.destroy(),this.selection=void 0}};function Rm({pT:t,pL:e,pW:r,pH:n,cT:i,cL:s,cW:a,cH:o,direction:l,containerHeight:c}){let d=e+r/2;const f=t+n/2;let p;l===sr.LHS?p=s+a:p=s;const b=i+o/2,v=(1-Math.abs(b-f)/c)*.25*(r/2);return l===sr.LHS?d=d-r/10-v:d=d+r/10+v,`M ${d} ${f} Q ${d} ${b} ${p} ${b}`}function Im({pT:t,pL:e,pW:r,pH:n,cT:i,cL:s,cW:a,cH:o,direction:l,isFirst:c}){const d=parseInt(this.container.style.getPropertyValue("--node-gap-x"));let f=0,p=0;c?f=t+n/2:f=t+n;const b=i+o;let v=0,k=0,w=0;const M=Math.abs(f-b)/300*d;return l===sr.LHS?(w=e,v=w+d,k=w-d,p=s+d,`M ${v} ${f} C ${w} ${f} ${w+M} ${b} ${k} ${b} H ${p}`):(w=e+r,v=w-d,k=w+d,p=s+a-d,`M ${v} ${f} C ${w} ${f} ${w-M} ${b} ${k} ${b} H ${p}`)}const _m="5.1.1";function Om(t){return{x:0,y:0,moved:!1,mousedown:!1,onMove(e,r){this.mousedown&&(this.moved=!0,t.move(e,r))},clear(){this.mousedown=!1}}}const Wn=document;function bt({el:t,direction:e,locale:r,draggable:n,editable:i,contextMenu:s,toolBar:a,keypress:o,mouseSelectionButton:l,selectionContainer:c,before:d,newTopicName:f,allowUndo:p,generateMainBranch:b,generateSubBranch:v,overflowHidden:k,theme:w,alignment:M,scaleSensitivity:x,scaleMax:A,scaleMin:N,handleWheel:_,markdown:O,imageProxy:z}){let Y=null;const W=Object.prototype.toString.call(t);if(W==="[object HTMLDivElement]"?Y=t:W==="[object String]"&&(Y=document.querySelector(t)),!Y)throw new Error("MindElixir: el is not a valid element");Y.style.position="relative",Y.innerHTML="",this.el=Y,this.disposable=[],this.before=d||{},this.locale=r||"en",this.newTopicName=f||"New Node",this.contextMenu=s??!0,this.toolBar=a??!0,this.keypress=o??!0,this.mouseSelectionButton=l??0,this.direction=e??1,this.draggable=n??!0,this.editable=i??!0,this.allowUndo=p??!0,this.scaleSensitivity=x??.1,this.scaleMax=A??1.4,this.scaleMin=N??.2,this.generateMainBranch=b||Rm,this.generateSubBranch=v||Im,this.overflowHidden=k??!1,this.alignment=M??"root",this.handleWheel=_??!0,this.markdown=O||void 0,this.imageProxy=z||void 0,this.currentNodes=[],this.currentArrow=null,this.scaleVal=1,this.tempDirection=null,this.dragMoveHelper=Om(this),this.bus=pp(),this.container=Wn.createElement("div"),this.selectionContainer=c||this.container,this.container.className="map-container";const he=window.matchMedia("(prefers-color-scheme: dark)");this.theme=w||(he.matches?ja:qa);const pe=Wn.createElement("div");pe.className="map-canvas",this.map=pe,this.container.setAttribute("tabindex","0"),this.container.appendChild(this.map),this.el.appendChild(this.container),this.nodes=Wn.createElement("me-nodes"),this.lines=Zn("lines"),this.summarySvg=Zn("summary"),this.linkController=Zn("linkcontroller"),this.P2=Wn.createElement("div"),this.P3=Wn.createElement("div"),this.P2.className=this.P3.className="circle",this.P2.style.display=this.P3.style.display="none",this.line1=fl(),this.line2=fl(),this.linkController.appendChild(this.line1),this.linkController.appendChild(this.line2),this.linkSvgGroup=Zn("topiclinks"),this.map.appendChild(this.nodes),this.overflowHidden?this.container.style.overflow="hidden":this.disposable.push(fp(this))}bt.prototype=Dm;Object.defineProperty(bt.prototype,"currentNode",{get(){return this.currentNodes[this.currentNodes.length-1]},enumerable:!0});bt.LEFT=0;bt.RIGHT=1;bt.SIDE=2;bt.THEME=qa;bt.DARK_THEME=ja;bt.version=_m;bt.E=$u;bt.new=t=>({nodeData:{id:vn(),topic:t||"new topic",children:[]}});function t1(t,e){return function(){return t.apply(e,arguments)}}const{toString:Lm}=Object.prototype,{getPrototypeOf:Ja}=Object,{iterator:Ui,toStringTag:r1}=Symbol,Vi=(t=>e=>{const r=Lm.call(e);return t[r]||(t[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),ar=t=>(t=t.toLowerCase(),e=>Vi(e)===t),Wi=t=>e=>typeof e===t,{isArray:Bn}=Array,p0=Wi("undefined");function w0(t){return t!==null&&!p0(t)&&t.constructor!==null&&!p0(t.constructor)&&Lt(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const n1=ar("ArrayBuffer");function zm(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&n1(t.buffer),e}const Fm=Wi("string"),Lt=Wi("function"),i1=Wi("number"),x0=t=>t!==null&&typeof t=="object",$m=t=>t===!0||t===!1,ti=t=>{if(Vi(t)!=="object")return!1;const e=Ja(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(r1 in t)&&!(Ui in t)},Bm=t=>{if(!x0(t)||w0(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},Pm=ar("Date"),Hm=ar("File"),qm=ar("Blob"),jm=ar("FileList"),Um=t=>x0(t)&&Lt(t.pipe),Vm=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||Lt(t.append)&&((e=Vi(t))==="formdata"||e==="object"&&Lt(t.toString)&&t.toString()==="[object FormData]"))},Wm=ar("URLSearchParams"),[Gm,Km,Ym,Xm]=["ReadableStream","Request","Response","Headers"].map(ar),Zm=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function k0(t,e,{allOwnKeys:r=!1}={}){if(t===null||typeof t>"u")return;let n,i;if(typeof t!="object"&&(t=[t]),Bn(t))for(n=0,i=t.length;n0;)if(i=r[n],e===i.toLowerCase())return i;return null}const dn=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),a1=t=>!p0(t)&&t!==dn;function ra(){const{caseless:t}=a1(this)&&this||{},e={},r=(n,i)=>{const s=t&&s1(e,i)||i;ti(e[s])&&ti(n)?e[s]=ra(e[s],n):ti(n)?e[s]=ra({},n):Bn(n)?e[s]=n.slice():e[s]=n};for(let n=0,i=arguments.length;n(k0(e,(i,s)=>{r&&Lt(i)?t[s]=t1(i,r):t[s]=i},{allOwnKeys:n}),t),Qm=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),e2=(t,e,r,n)=>{t.prototype=Object.create(e.prototype,n),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),r&&Object.assign(t.prototype,r)},t2=(t,e,r,n)=>{let i,s,a;const o={};if(e=e||{},t==null)return e;do{for(i=Object.getOwnPropertyNames(t),s=i.length;s-- >0;)a=i[s],(!n||n(a,t,e))&&!o[a]&&(e[a]=t[a],o[a]=!0);t=r!==!1&&Ja(t)}while(t&&(!r||r(t,e))&&t!==Object.prototype);return e},r2=(t,e,r)=>{t=String(t),(r===void 0||r>t.length)&&(r=t.length),r-=e.length;const n=t.indexOf(e,r);return n!==-1&&n===r},n2=t=>{if(!t)return null;if(Bn(t))return t;let e=t.length;if(!i1(e))return null;const r=new Array(e);for(;e-- >0;)r[e]=t[e];return r},i2=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Ja(Uint8Array)),s2=(t,e)=>{const n=(t&&t[Ui]).call(t);let i;for(;(i=n.next())&&!i.done;){const s=i.value;e.call(t,s[0],s[1])}},a2=(t,e)=>{let r;const n=[];for(;(r=t.exec(e))!==null;)n.push(r);return n},o2=ar("HTMLFormElement"),l2=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,i){return n.toUpperCase()+i}),Ml=(({hasOwnProperty:t})=>(e,r)=>t.call(e,r))(Object.prototype),c2=ar("RegExp"),o1=(t,e)=>{const r=Object.getOwnPropertyDescriptors(t),n={};k0(r,(i,s)=>{let a;(a=e(i,s,t))!==!1&&(n[s]=a||i)}),Object.defineProperties(t,n)},u2=t=>{o1(t,(e,r)=>{if(Lt(t)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const n=t[r];if(Lt(n)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},d2=(t,e)=>{const r={},n=i=>{i.forEach(s=>{r[s]=!0})};return Bn(t)?n(t):n(String(t).split(e)),r},h2=()=>{},f2=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function p2(t){return!!(t&&Lt(t.append)&&t[r1]==="FormData"&&t[Ui])}const m2=t=>{const e=new Array(10),r=(n,i)=>{if(x0(n)){if(e.indexOf(n)>=0)return;if(w0(n))return n;if(!("toJSON"in n)){e[i]=n;const s=Bn(n)?[]:{};return k0(n,(a,o)=>{const l=r(a,i+1);!p0(l)&&(s[o]=l)}),e[i]=void 0,s}}return n};return r(t,0)},g2=ar("AsyncFunction"),v2=t=>t&&(x0(t)||Lt(t))&&Lt(t.then)&&Lt(t.catch),l1=((t,e)=>t?setImmediate:e?((r,n)=>(dn.addEventListener("message",({source:i,data:s})=>{i===dn&&s===r&&n.length&&n.shift()()},!1),i=>{n.push(i),dn.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",Lt(dn.postMessage)),b2=typeof queueMicrotask<"u"?queueMicrotask.bind(dn):typeof process<"u"&&process.nextTick||l1,y2=t=>t!=null&&Lt(t[Ui]),$={isArray:Bn,isArrayBuffer:n1,isBuffer:w0,isFormData:Vm,isArrayBufferView:zm,isString:Fm,isNumber:i1,isBoolean:$m,isObject:x0,isPlainObject:ti,isEmptyObject:Bm,isReadableStream:Gm,isRequest:Km,isResponse:Ym,isHeaders:Xm,isUndefined:p0,isDate:Pm,isFile:Hm,isBlob:qm,isRegExp:c2,isFunction:Lt,isStream:Um,isURLSearchParams:Wm,isTypedArray:i2,isFileList:jm,forEach:k0,merge:ra,extend:Jm,trim:Zm,stripBOM:Qm,inherits:e2,toFlatObject:t2,kindOf:Vi,kindOfTest:ar,endsWith:r2,toArray:n2,forEachEntry:s2,matchAll:a2,isHTMLForm:o2,hasOwnProperty:Ml,hasOwnProp:Ml,reduceDescriptors:o1,freezeMethods:u2,toObjectSet:d2,toCamelCase:l2,noop:h2,toFiniteNumber:f2,findKey:s1,global:dn,isContextDefined:a1,isSpecCompliantForm:p2,toJSONObject:m2,isAsyncFn:g2,isThenable:v2,setImmediate:l1,asap:b2,isIterable:y2};function Ne(t,e,r,n,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),r&&(this.config=r),n&&(this.request=n),i&&(this.response=i,this.status=i.status?i.status:null)}$.inherits(Ne,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:$.toJSONObject(this.config),code:this.code,status:this.status}}});const c1=Ne.prototype,u1={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{u1[t]={value:t}});Object.defineProperties(Ne,u1);Object.defineProperty(c1,"isAxiosError",{value:!0});Ne.from=(t,e,r,n,i,s)=>{const a=Object.create(c1);return $.toFlatObject(t,a,function(l){return l!==Error.prototype},o=>o!=="isAxiosError"),Ne.call(a,t.message,e,r,n,i),a.cause=t,a.name=t.name,s&&Object.assign(a,s),a};const w2=null;function na(t){return $.isPlainObject(t)||$.isArray(t)}function d1(t){return $.endsWith(t,"[]")?t.slice(0,-2):t}function Nl(t,e,r){return t?t.concat(e).map(function(i,s){return i=d1(i),!r&&s?"["+i+"]":i}).join(r?".":""):e}function x2(t){return $.isArray(t)&&!t.some(na)}const k2=$.toFlatObject($,{},null,function(e){return/^is[A-Z]/.test(e)});function Gi(t,e,r){if(!$.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,r=$.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(k,w){return!$.isUndefined(w[k])});const n=r.metaTokens,i=r.visitor||d,s=r.dots,a=r.indexes,l=(r.Blob||typeof Blob<"u"&&Blob)&&$.isSpecCompliantForm(e);if(!$.isFunction(i))throw new TypeError("visitor must be a function");function c(v){if(v===null)return"";if($.isDate(v))return v.toISOString();if($.isBoolean(v))return v.toString();if(!l&&$.isBlob(v))throw new Ne("Blob is not supported. Use a Buffer instead.");return $.isArrayBuffer(v)||$.isTypedArray(v)?l&&typeof Blob=="function"?new Blob([v]):Buffer.from(v):v}function d(v,k,w){let M=v;if(v&&!w&&typeof v=="object"){if($.endsWith(k,"{}"))k=n?k:k.slice(0,-2),v=JSON.stringify(v);else if($.isArray(v)&&x2(v)||($.isFileList(v)||$.endsWith(k,"[]"))&&(M=$.toArray(v)))return k=d1(k),M.forEach(function(A,N){!($.isUndefined(A)||A===null)&&e.append(a===!0?Nl([k],N,s):a===null?k:k+"[]",c(A))}),!1}return na(v)?!0:(e.append(Nl(w,k,s),c(v)),!1)}const f=[],p=Object.assign(k2,{defaultVisitor:d,convertValue:c,isVisitable:na});function b(v,k){if(!$.isUndefined(v)){if(f.indexOf(v)!==-1)throw Error("Circular reference detected in "+k.join("."));f.push(v),$.forEach(v,function(M,x){(!($.isUndefined(M)||M===null)&&i.call(e,M,$.isString(x)?x.trim():x,k,p))===!0&&b(M,k?k.concat(x):[x])}),f.pop()}}if(!$.isObject(t))throw new TypeError("data must be an object");return b(t),e}function Dl(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(n){return e[n]})}function Qa(t,e){this._pairs=[],t&&Gi(t,this,e)}const h1=Qa.prototype;h1.append=function(e,r){this._pairs.push([e,r])};h1.toString=function(e){const r=e?function(n){return e.call(this,n,Dl)}:Dl;return this._pairs.map(function(i){return r(i[0])+"="+r(i[1])},"").join("&")};function S2(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function f1(t,e,r){if(!e)return t;const n=r&&r.encode||S2;$.isFunction(r)&&(r={serialize:r});const i=r&&r.serialize;let s;if(i?s=i(e,r):s=$.isURLSearchParams(e)?e.toString():new Qa(e,r).toString(n),s){const a=t.indexOf("#");a!==-1&&(t=t.slice(0,a)),t+=(t.indexOf("?")===-1?"?":"&")+s}return t}class T2{constructor(){this.handlers=[]}use(e,r,n){return this.handlers.push({fulfilled:e,rejected:r,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){$.forEach(this.handlers,function(n){n!==null&&e(n)})}}const Rl=T2,p1={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},A2=typeof URLSearchParams<"u"?URLSearchParams:Qa,E2=typeof FormData<"u"?FormData:null,C2=typeof Blob<"u"?Blob:null,M2={isBrowser:!0,classes:{URLSearchParams:A2,FormData:E2,Blob:C2},protocols:["http","https","file","blob","url","data"]},eo=typeof window<"u"&&typeof document<"u",ia=typeof navigator=="object"&&navigator||void 0,N2=eo&&(!ia||["ReactNative","NativeScript","NS"].indexOf(ia.product)<0),D2=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),R2=eo&&window.location.href||"http://localhost",I2=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:eo,hasStandardBrowserEnv:N2,hasStandardBrowserWebWorkerEnv:D2,navigator:ia,origin:R2},Symbol.toStringTag,{value:"Module"})),kt={...I2,...M2};function _2(t,e){return Gi(t,new kt.classes.URLSearchParams,{visitor:function(r,n,i,s){return kt.isNode&&$.isBuffer(r)?(this.append(n,r.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)},...e})}function O2(t){return $.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function L2(t){const e={},r=Object.keys(t);let n;const i=r.length;let s;for(n=0;n=r.length;return a=!a&&$.isArray(i)?i.length:a,l?($.hasOwnProp(i,a)?i[a]=[i[a],n]:i[a]=n,!o):((!i[a]||!$.isObject(i[a]))&&(i[a]=[]),e(r,n,i[a],s)&&$.isArray(i[a])&&(i[a]=L2(i[a])),!o)}if($.isFormData(t)&&$.isFunction(t.entries)){const r={};return $.forEachEntry(t,(n,i)=>{e(O2(n),i,r,0)}),r}return null}function z2(t,e,r){if($.isString(t))try{return(e||JSON.parse)(t),$.trim(t)}catch(n){if(n.name!=="SyntaxError")throw n}return(r||JSON.stringify)(t)}const to={transitional:p1,adapter:["xhr","http","fetch"],transformRequest:[function(e,r){const n=r.getContentType()||"",i=n.indexOf("application/json")>-1,s=$.isObject(e);if(s&&$.isHTMLForm(e)&&(e=new FormData(e)),$.isFormData(e))return i?JSON.stringify(m1(e)):e;if($.isArrayBuffer(e)||$.isBuffer(e)||$.isStream(e)||$.isFile(e)||$.isBlob(e)||$.isReadableStream(e))return e;if($.isArrayBufferView(e))return e.buffer;if($.isURLSearchParams(e))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let o;if(s){if(n.indexOf("application/x-www-form-urlencoded")>-1)return _2(e,this.formSerializer).toString();if((o=$.isFileList(e))||n.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return Gi(o?{"files[]":e}:e,l&&new l,this.formSerializer)}}return s||i?(r.setContentType("application/json",!1),z2(e)):e}],transformResponse:[function(e){const r=this.transitional||to.transitional,n=r&&r.forcedJSONParsing,i=this.responseType==="json";if($.isResponse(e)||$.isReadableStream(e))return e;if(e&&$.isString(e)&&(n&&!this.responseType||i)){const a=!(r&&r.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(o){if(a)throw o.name==="SyntaxError"?Ne.from(o,Ne.ERR_BAD_RESPONSE,this,null,this.response):o}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:kt.classes.FormData,Blob:kt.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};$.forEach(["delete","get","head","post","put","patch"],t=>{to.headers[t]={}});const ro=to,F2=$.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),$2=t=>{const e={};let r,n,i;return t&&t.split(` -`).forEach(function(a){i=a.indexOf(":"),r=a.substring(0,i).trim().toLowerCase(),n=a.substring(i+1).trim(),!(!r||e[r]&&F2[r])&&(r==="set-cookie"?e[r]?e[r].push(n):e[r]=[n]:e[r]=e[r]?e[r]+", "+n:n)}),e},Il=Symbol("internals");function Gn(t){return t&&String(t).trim().toLowerCase()}function ri(t){return t===!1||t==null?t:$.isArray(t)?t.map(ri):String(t)}function B2(t){const e=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(t);)e[n[1]]=n[2];return e}const P2=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function ws(t,e,r,n,i){if($.isFunction(n))return n.call(this,e,r);if(i&&(e=r),!!$.isString(e)){if($.isString(n))return e.indexOf(n)!==-1;if($.isRegExp(n))return n.test(e)}}function H2(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,r,n)=>r.toUpperCase()+n)}function q2(t,e){const r=$.toCamelCase(" "+e);["get","set","has"].forEach(n=>{Object.defineProperty(t,n+r,{value:function(i,s,a){return this[n].call(this,e,i,s,a)},configurable:!0})})}class Ki{constructor(e){e&&this.set(e)}set(e,r,n){const i=this;function s(o,l,c){const d=Gn(l);if(!d)throw new Error("header name must be a non-empty string");const f=$.findKey(i,d);(!f||i[f]===void 0||c===!0||c===void 0&&i[f]!==!1)&&(i[f||l]=ri(o))}const a=(o,l)=>$.forEach(o,(c,d)=>s(c,d,l));if($.isPlainObject(e)||e instanceof this.constructor)a(e,r);else if($.isString(e)&&(e=e.trim())&&!P2(e))a($2(e),r);else if($.isObject(e)&&$.isIterable(e)){let o={},l,c;for(const d of e){if(!$.isArray(d))throw TypeError("Object iterator must return a key-value pair");o[c=d[0]]=(l=o[c])?$.isArray(l)?[...l,d[1]]:[l,d[1]]:d[1]}a(o,r)}else e!=null&&s(r,e,n);return this}get(e,r){if(e=Gn(e),e){const n=$.findKey(this,e);if(n){const i=this[n];if(!r)return i;if(r===!0)return B2(i);if($.isFunction(r))return r.call(this,i,n);if($.isRegExp(r))return r.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,r){if(e=Gn(e),e){const n=$.findKey(this,e);return!!(n&&this[n]!==void 0&&(!r||ws(this,this[n],n,r)))}return!1}delete(e,r){const n=this;let i=!1;function s(a){if(a=Gn(a),a){const o=$.findKey(n,a);o&&(!r||ws(n,n[o],o,r))&&(delete n[o],i=!0)}}return $.isArray(e)?e.forEach(s):s(e),i}clear(e){const r=Object.keys(this);let n=r.length,i=!1;for(;n--;){const s=r[n];(!e||ws(this,this[s],s,e,!0))&&(delete this[s],i=!0)}return i}normalize(e){const r=this,n={};return $.forEach(this,(i,s)=>{const a=$.findKey(n,s);if(a){r[a]=ri(i),delete r[s];return}const o=e?H2(s):String(s).trim();o!==s&&delete r[s],r[o]=ri(i),n[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const r=Object.create(null);return $.forEach(this,(n,i)=>{n!=null&&n!==!1&&(r[i]=e&&$.isArray(n)?n.join(", "):n)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,r])=>e+": "+r).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...r){const n=new this(e);return r.forEach(i=>n.set(i)),n}static accessor(e){const n=(this[Il]=this[Il]={accessors:{}}).accessors,i=this.prototype;function s(a){const o=Gn(a);n[o]||(q2(i,a),n[o]=!0)}return $.isArray(e)?e.forEach(s):s(e),this}}Ki.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);$.reduceDescriptors(Ki.prototype,({value:t},e)=>{let r=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(n){this[r]=n}}});$.freezeMethods(Ki);const ir=Ki;function xs(t,e){const r=this||ro,n=e||r,i=ir.from(n.headers);let s=n.data;return $.forEach(t,function(o){s=o.call(r,s,i.normalize(),e?e.status:void 0)}),i.normalize(),s}function g1(t){return!!(t&&t.__CANCEL__)}function Pn(t,e,r){Ne.call(this,t??"canceled",Ne.ERR_CANCELED,e,r),this.name="CanceledError"}$.inherits(Pn,Ne,{__CANCEL__:!0});function v1(t,e,r){const n=r.config.validateStatus;!r.status||!n||n(r.status)?t(r):e(new Ne("Request failed with status code "+r.status,[Ne.ERR_BAD_REQUEST,Ne.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function j2(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function U2(t,e){t=t||10;const r=new Array(t),n=new Array(t);let i=0,s=0,a;return e=e!==void 0?e:1e3,function(l){const c=Date.now(),d=n[s];a||(a=c),r[i]=l,n[i]=c;let f=s,p=0;for(;f!==i;)p+=r[f++],f=f%t;if(i=(i+1)%t,i===s&&(s=(s+1)%t),c-a{r=d,i=null,s&&(clearTimeout(s),s=null),t(...c)};return[(...c)=>{const d=Date.now(),f=d-r;f>=n?a(c,d):(i=c,s||(s=setTimeout(()=>{s=null,a(i)},n-f)))},()=>i&&a(i)]}const xi=(t,e,r=3)=>{let n=0;const i=U2(50,250);return V2(s=>{const a=s.loaded,o=s.lengthComputable?s.total:void 0,l=a-n,c=i(l),d=a<=o;n=a;const f={loaded:a,total:o,progress:o?a/o:void 0,bytes:l,rate:c||void 0,estimated:c&&o&&d?(o-a)/c:void 0,event:s,lengthComputable:o!=null,[e?"download":"upload"]:!0};t(f)},r)},_l=(t,e)=>{const r=t!=null;return[n=>e[0]({lengthComputable:r,total:t,loaded:n}),e[1]]},Ol=t=>(...e)=>$.asap(()=>t(...e)),W2=kt.hasStandardBrowserEnv?((t,e)=>r=>(r=new URL(r,kt.origin),t.protocol===r.protocol&&t.host===r.host&&(e||t.port===r.port)))(new URL(kt.origin),kt.navigator&&/(msie|trident)/i.test(kt.navigator.userAgent)):()=>!0,G2=kt.hasStandardBrowserEnv?{write(t,e,r,n,i,s){const a=[t+"="+encodeURIComponent(e)];$.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),$.isString(n)&&a.push("path="+n),$.isString(i)&&a.push("domain="+i),s===!0&&a.push("secure"),document.cookie=a.join("; ")},read(t){const e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function K2(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Y2(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function b1(t,e,r){let n=!K2(e);return t&&(n||r==!1)?Y2(t,e):e}const Ll=t=>t instanceof ir?{...t}:t;function mn(t,e){e=e||{};const r={};function n(c,d,f,p){return $.isPlainObject(c)&&$.isPlainObject(d)?$.merge.call({caseless:p},c,d):$.isPlainObject(d)?$.merge({},d):$.isArray(d)?d.slice():d}function i(c,d,f,p){if($.isUndefined(d)){if(!$.isUndefined(c))return n(void 0,c,f,p)}else return n(c,d,f,p)}function s(c,d){if(!$.isUndefined(d))return n(void 0,d)}function a(c,d){if($.isUndefined(d)){if(!$.isUndefined(c))return n(void 0,c)}else return n(void 0,d)}function o(c,d,f){if(f in e)return n(c,d);if(f in t)return n(void 0,c)}const l={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o,headers:(c,d,f)=>i(Ll(c),Ll(d),f,!0)};return $.forEach(Object.keys({...t,...e}),function(d){const f=l[d]||i,p=f(t[d],e[d],d);$.isUndefined(p)&&f!==o||(r[d]=p)}),r}const y1=t=>{const e=mn({},t);let{data:r,withXSRFToken:n,xsrfHeaderName:i,xsrfCookieName:s,headers:a,auth:o}=e;e.headers=a=ir.from(a),e.url=f1(b1(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),o&&a.set("Authorization","Basic "+btoa((o.username||"")+":"+(o.password?unescape(encodeURIComponent(o.password)):"")));let l;if($.isFormData(r)){if(kt.hasStandardBrowserEnv||kt.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if((l=a.getContentType())!==!1){const[c,...d]=l?l.split(";").map(f=>f.trim()).filter(Boolean):[];a.setContentType([c||"multipart/form-data",...d].join("; "))}}if(kt.hasStandardBrowserEnv&&(n&&$.isFunction(n)&&(n=n(e)),n||n!==!1&&W2(e.url))){const c=i&&s&&G2.read(s);c&&a.set(i,c)}return e},X2=typeof XMLHttpRequest<"u",Z2=X2&&function(t){return new Promise(function(r,n){const i=y1(t);let s=i.data;const a=ir.from(i.headers).normalize();let{responseType:o,onUploadProgress:l,onDownloadProgress:c}=i,d,f,p,b,v;function k(){b&&b(),v&&v(),i.cancelToken&&i.cancelToken.unsubscribe(d),i.signal&&i.signal.removeEventListener("abort",d)}let w=new XMLHttpRequest;w.open(i.method.toUpperCase(),i.url,!0),w.timeout=i.timeout;function M(){if(!w)return;const A=ir.from("getAllResponseHeaders"in w&&w.getAllResponseHeaders()),_={data:!o||o==="text"||o==="json"?w.responseText:w.response,status:w.status,statusText:w.statusText,headers:A,config:t,request:w};v1(function(z){r(z),k()},function(z){n(z),k()},_),w=null}"onloadend"in w?w.onloadend=M:w.onreadystatechange=function(){!w||w.readyState!==4||w.status===0&&!(w.responseURL&&w.responseURL.indexOf("file:")===0)||setTimeout(M)},w.onabort=function(){w&&(n(new Ne("Request aborted",Ne.ECONNABORTED,t,w)),w=null)},w.onerror=function(){n(new Ne("Network Error",Ne.ERR_NETWORK,t,w)),w=null},w.ontimeout=function(){let N=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const _=i.transitional||p1;i.timeoutErrorMessage&&(N=i.timeoutErrorMessage),n(new Ne(N,_.clarifyTimeoutError?Ne.ETIMEDOUT:Ne.ECONNABORTED,t,w)),w=null},s===void 0&&a.setContentType(null),"setRequestHeader"in w&&$.forEach(a.toJSON(),function(N,_){w.setRequestHeader(_,N)}),$.isUndefined(i.withCredentials)||(w.withCredentials=!!i.withCredentials),o&&o!=="json"&&(w.responseType=i.responseType),c&&([p,v]=xi(c,!0),w.addEventListener("progress",p)),l&&w.upload&&([f,b]=xi(l),w.upload.addEventListener("progress",f),w.upload.addEventListener("loadend",b)),(i.cancelToken||i.signal)&&(d=A=>{w&&(n(!A||A.type?new Pn(null,t,w):A),w.abort(),w=null)},i.cancelToken&&i.cancelToken.subscribe(d),i.signal&&(i.signal.aborted?d():i.signal.addEventListener("abort",d)));const x=j2(i.url);if(x&&kt.protocols.indexOf(x)===-1){n(new Ne("Unsupported protocol "+x+":",Ne.ERR_BAD_REQUEST,t));return}w.send(s||null)})},J2=(t,e)=>{const{length:r}=t=t?t.filter(Boolean):[];if(e||r){let n=new AbortController,i;const s=function(c){if(!i){i=!0,o();const d=c instanceof Error?c:this.reason;n.abort(d instanceof Ne?d:new Pn(d instanceof Error?d.message:d))}};let a=e&&setTimeout(()=>{a=null,s(new Ne(`timeout ${e} of ms exceeded`,Ne.ETIMEDOUT))},e);const o=()=>{t&&(a&&clearTimeout(a),a=null,t.forEach(c=>{c.unsubscribe?c.unsubscribe(s):c.removeEventListener("abort",s)}),t=null)};t.forEach(c=>c.addEventListener("abort",s));const{signal:l}=n;return l.unsubscribe=()=>$.asap(o),l}},Q2=J2,e3=function*(t,e){let r=t.byteLength;if(!e||r{const i=t3(t,e);let s=0,a,o=l=>{a||(a=!0,n&&n(l))};return new ReadableStream({async pull(l){try{const{done:c,value:d}=await i.next();if(c){o(),l.close();return}let f=d.byteLength;if(r){let p=s+=f;r(p)}l.enqueue(new Uint8Array(d))}catch(c){throw o(c),c}},cancel(l){return o(l),i.return()}},{highWaterMark:2})},Yi=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",w1=Yi&&typeof ReadableStream=="function",n3=Yi&&(typeof TextEncoder=="function"?(t=>e=>t.encode(e))(new TextEncoder):async t=>new Uint8Array(await new Response(t).arrayBuffer())),x1=(t,...e)=>{try{return!!t(...e)}catch{return!1}},i3=w1&&x1(()=>{let t=!1;const e=new Request(kt.origin,{body:new ReadableStream,method:"POST",get duplex(){return t=!0,"half"}}).headers.has("Content-Type");return t&&!e}),Fl=64*1024,sa=w1&&x1(()=>$.isReadableStream(new Response("").body)),ki={stream:sa&&(t=>t.body)};Yi&&(t=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!ki[e]&&(ki[e]=$.isFunction(t[e])?r=>r[e]():(r,n)=>{throw new Ne(`Response type '${e}' is not supported`,Ne.ERR_NOT_SUPPORT,n)})})})(new Response);const s3=async t=>{if(t==null)return 0;if($.isBlob(t))return t.size;if($.isSpecCompliantForm(t))return(await new Request(kt.origin,{method:"POST",body:t}).arrayBuffer()).byteLength;if($.isArrayBufferView(t)||$.isArrayBuffer(t))return t.byteLength;if($.isURLSearchParams(t)&&(t=t+""),$.isString(t))return(await n3(t)).byteLength},a3=async(t,e)=>{const r=$.toFiniteNumber(t.getContentLength());return r??s3(e)},o3=Yi&&(async t=>{let{url:e,method:r,data:n,signal:i,cancelToken:s,timeout:a,onDownloadProgress:o,onUploadProgress:l,responseType:c,headers:d,withCredentials:f="same-origin",fetchOptions:p}=y1(t);c=c?(c+"").toLowerCase():"text";let b=Q2([i,s&&s.toAbortSignal()],a),v;const k=b&&b.unsubscribe&&(()=>{b.unsubscribe()});let w;try{if(l&&i3&&r!=="get"&&r!=="head"&&(w=await a3(d,n))!==0){let _=new Request(e,{method:"POST",body:n,duplex:"half"}),O;if($.isFormData(n)&&(O=_.headers.get("content-type"))&&d.setContentType(O),_.body){const[z,Y]=_l(w,xi(Ol(l)));n=zl(_.body,Fl,z,Y)}}$.isString(f)||(f=f?"include":"omit");const M="credentials"in Request.prototype;v=new Request(e,{...p,signal:b,method:r.toUpperCase(),headers:d.normalize().toJSON(),body:n,duplex:"half",credentials:M?f:void 0});let x=await fetch(v,p);const A=sa&&(c==="stream"||c==="response");if(sa&&(o||A&&k)){const _={};["status","statusText","headers"].forEach(W=>{_[W]=x[W]});const O=$.toFiniteNumber(x.headers.get("content-length")),[z,Y]=o&&_l(O,xi(Ol(o),!0))||[];x=new Response(zl(x.body,Fl,z,()=>{Y&&Y(),k&&k()}),_)}c=c||"text";let N=await ki[$.findKey(ki,c)||"text"](x,t);return!A&&k&&k(),await new Promise((_,O)=>{v1(_,O,{data:N,headers:ir.from(x.headers),status:x.status,statusText:x.statusText,config:t,request:v})})}catch(M){throw k&&k(),M&&M.name==="TypeError"&&/Load failed|fetch/i.test(M.message)?Object.assign(new Ne("Network Error",Ne.ERR_NETWORK,t,v),{cause:M.cause||M}):Ne.from(M,M&&M.code,t,v)}}),aa={http:w2,xhr:Z2,fetch:o3};$.forEach(aa,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const $l=t=>`- ${t}`,l3=t=>$.isFunction(t)||t===null||t===!1,k1={getAdapter:t=>{t=$.isArray(t)?t:[t];const{length:e}=t;let r,n;const i={};for(let s=0;s`adapter ${o} `+(l===!1?"is not supported by the environment":"is not available in the build"));let a=e?s.length>1?`since : -`+s.map($l).join(` -`):" "+$l(s[0]):"as no adapter specified";throw new Ne("There is no suitable adapter to dispatch the request "+a,"ERR_NOT_SUPPORT")}return n},adapters:aa};function ks(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new Pn(null,t)}function Bl(t){return ks(t),t.headers=ir.from(t.headers),t.data=xs.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),k1.getAdapter(t.adapter||ro.adapter)(t).then(function(n){return ks(t),n.data=xs.call(t,t.transformResponse,n),n.headers=ir.from(n.headers),n},function(n){return g1(n)||(ks(t),n&&n.response&&(n.response.data=xs.call(t,t.transformResponse,n.response),n.response.headers=ir.from(n.response.headers))),Promise.reject(n)})}const S1="1.11.0",Xi={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{Xi[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}});const Pl={};Xi.transitional=function(e,r,n){function i(s,a){return"[Axios v"+S1+"] Transitional option '"+s+"'"+a+(n?". "+n:"")}return(s,a,o)=>{if(e===!1)throw new Ne(i(a," has been removed"+(r?" in "+r:"")),Ne.ERR_DEPRECATED);return r&&!Pl[a]&&(Pl[a]=!0,console.warn(i(a," has been deprecated since v"+r+" and will be removed in the near future"))),e?e(s,a,o):!0}};Xi.spelling=function(e){return(r,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};function c3(t,e,r){if(typeof t!="object")throw new Ne("options must be an object",Ne.ERR_BAD_OPTION_VALUE);const n=Object.keys(t);let i=n.length;for(;i-- >0;){const s=n[i],a=e[s];if(a){const o=t[s],l=o===void 0||a(o,s,t);if(l!==!0)throw new Ne("option "+s+" must be "+l,Ne.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new Ne("Unknown option "+s,Ne.ERR_BAD_OPTION)}}const ni={assertOptions:c3,validators:Xi},lr=ni.validators;class Si{constructor(e){this.defaults=e||{},this.interceptors={request:new Rl,response:new Rl}}async request(e,r){try{return await this._request(e,r)}catch(n){if(n instanceof Error){let i={};Error.captureStackTrace?Error.captureStackTrace(i):i=new Error;const s=i.stack?i.stack.replace(/^.+\n/,""):"";try{n.stack?s&&!String(n.stack).endsWith(s.replace(/^.+\n.+\n/,""))&&(n.stack+=` -`+s):n.stack=s}catch{}}throw n}}_request(e,r){typeof e=="string"?(r=r||{},r.url=e):r=e||{},r=mn(this.defaults,r);const{transitional:n,paramsSerializer:i,headers:s}=r;n!==void 0&&ni.assertOptions(n,{silentJSONParsing:lr.transitional(lr.boolean),forcedJSONParsing:lr.transitional(lr.boolean),clarifyTimeoutError:lr.transitional(lr.boolean)},!1),i!=null&&($.isFunction(i)?r.paramsSerializer={serialize:i}:ni.assertOptions(i,{encode:lr.function,serialize:lr.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),ni.assertOptions(r,{baseUrl:lr.spelling("baseURL"),withXsrfToken:lr.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let a=s&&$.merge(s.common,s[r.method]);s&&$.forEach(["delete","get","head","post","put","patch","common"],v=>{delete s[v]}),r.headers=ir.concat(a,s);const o=[];let l=!0;this.interceptors.request.forEach(function(k){typeof k.runWhen=="function"&&k.runWhen(r)===!1||(l=l&&k.synchronous,o.unshift(k.fulfilled,k.rejected))});const c=[];this.interceptors.response.forEach(function(k){c.push(k.fulfilled,k.rejected)});let d,f=0,p;if(!l){const v=[Bl.bind(this),void 0];for(v.unshift(...o),v.push(...c),p=v.length,d=Promise.resolve(r);f{if(!n._listeners)return;let s=n._listeners.length;for(;s-- >0;)n._listeners[s](i);n._listeners=null}),this.promise.then=i=>{let s;const a=new Promise(o=>{n.subscribe(o),s=o}).then(i);return a.cancel=function(){n.unsubscribe(s)},a},e(function(s,a,o){n.reason||(n.reason=new Pn(s,a,o),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const r=this._listeners.indexOf(e);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const e=new AbortController,r=n=>{e.abort(n)};return this.subscribe(r),e.signal.unsubscribe=()=>this.unsubscribe(r),e.signal}static source(){let e;return{token:new no(function(i){e=i}),cancel:e}}}const u3=no;function d3(t){return function(r){return t.apply(null,r)}}function h3(t){return $.isObject(t)&&t.isAxiosError===!0}const oa={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(oa).forEach(([t,e])=>{oa[e]=t});const f3=oa;function T1(t){const e=new ii(t),r=t1(ii.prototype.request,e);return $.extend(r,ii.prototype,e,{allOwnKeys:!0}),$.extend(r,e,null,{allOwnKeys:!0}),r.create=function(i){return T1(mn(t,i))},r}const ht=T1(ro);ht.Axios=ii;ht.CanceledError=Pn;ht.CancelToken=u3;ht.isCancel=g1;ht.VERSION=S1;ht.toFormData=Gi;ht.AxiosError=Ne;ht.Cancel=ht.CanceledError;ht.all=function(e){return Promise.all(e)};ht.spread=d3;ht.isAxiosError=h3;ht.mergeConfig=mn;ht.AxiosHeaders=ir;ht.formToJSON=t=>m1($.isHTMLForm(t)?new FormData(t):t);ht.getAdapter=k1.getAdapter;ht.HttpStatusCode=f3;ht.default=ht;const p3=ht,m3="http://127.0.0.1:8000/api",Sn=p3.create({baseURL:m3,timeout:1e4,headers:{"Content-Type":"application/json"}}),nt={createMindmap:(t="思维导图",e=null)=>Sn.post("/mindMaps",{title:t,data:e}),getMindmap:t=>Sn.get(`/mindMaps/${t}`),getAllMindmaps:()=>Sn.get("/mindmaps"),addNodes:(t,e)=>Sn.post("/mindMaps/addNodes",{mindMapId:t,nodes:e}),updateNode:(t,e)=>Sn.patch("/mindMaps/updateNode",{id:t,...e}),deleteNodes:t=>Sn.delete("/mindMaps/deleteNodes",{data:{nodeIds:t}})};function io(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var bn=io();function A1(t){bn=t}var o0={exec:()=>null};function je(t,e=""){let r=typeof t=="string"?t:t.source,n={replace:(i,s)=>{let a=typeof s=="string"?s:s.source;return a=a.replace(Mt.caret,"$1"),r=r.replace(i,a),n},getRegex:()=>new RegExp(r,e)};return n}var Mt={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},g3=/^(?:[ \t]*(?:\n|$))+/,v3=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,b3=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,S0=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,y3=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,so=/(?:[*+-]|\d{1,9}[.)])/,E1=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,C1=je(E1).replace(/bull/g,so).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),w3=je(E1).replace(/bull/g,so).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),ao=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,x3=/^[^\n]+/,oo=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,k3=je(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",oo).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),S3=je(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,so).getRegex(),Zi="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",lo=/|$))/,T3=je("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",lo).replace("tag",Zi).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),M1=je(ao).replace("hr",S0).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Zi).getRegex(),A3=je(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",M1).getRegex(),co={blockquote:A3,code:v3,def:k3,fences:b3,heading:y3,hr:S0,html:T3,lheading:C1,list:S3,newline:g3,paragraph:M1,table:o0,text:x3},Hl=je("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",S0).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Zi).getRegex(),E3={...co,lheading:w3,table:Hl,paragraph:je(ao).replace("hr",S0).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Hl).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Zi).getRegex()},C3={...co,html:je(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",lo).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:o0,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:je(ao).replace("hr",S0).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",C1).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},M3=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,N3=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,N1=/^( {2,}|\\)\n(?!\s*$)/,D3=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,I1=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,L3=je(I1,"u").replace(/punct/g,Ji).getRegex(),z3=je(I1,"u").replace(/punct/g,R1).getRegex(),_1="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",F3=je(_1,"gu").replace(/notPunctSpace/g,D1).replace(/punctSpace/g,uo).replace(/punct/g,Ji).getRegex(),$3=je(_1,"gu").replace(/notPunctSpace/g,_3).replace(/punctSpace/g,I3).replace(/punct/g,R1).getRegex(),B3=je("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,D1).replace(/punctSpace/g,uo).replace(/punct/g,Ji).getRegex(),P3=je(/\\(punct)/,"gu").replace(/punct/g,Ji).getRegex(),H3=je(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),q3=je(lo).replace("(?:-->|$)","-->").getRegex(),j3=je("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",q3).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Ti=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,U3=je(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Ti).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),O1=je(/^!?\[(label)\]\[(ref)\]/).replace("label",Ti).replace("ref",oo).getRegex(),L1=je(/^!?\[(ref)\](?:\[\])?/).replace("ref",oo).getRegex(),V3=je("reflink|nolink(?!\\()","g").replace("reflink",O1).replace("nolink",L1).getRegex(),ho={_backpedal:o0,anyPunctuation:P3,autolink:H3,blockSkip:O3,br:N1,code:N3,del:o0,emStrongLDelim:L3,emStrongRDelimAst:F3,emStrongRDelimUnd:B3,escape:M3,link:U3,nolink:L1,punctuation:R3,reflink:O1,reflinkSearch:V3,tag:j3,text:D3,url:o0},W3={...ho,link:je(/^!?\[(label)\]\((.*?)\)/).replace("label",Ti).getRegex(),reflink:je(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ti).getRegex()},la={...ho,emStrongRDelimAst:$3,emStrongLDelim:z3,url:je(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},ql=t=>K3[t];function cr(t,e){if(e){if(Mt.escapeTest.test(t))return t.replace(Mt.escapeReplace,ql)}else if(Mt.escapeTestNoEncode.test(t))return t.replace(Mt.escapeReplaceNoEncode,ql);return t}function jl(t){try{t=encodeURI(t).replace(Mt.percentDecode,"%")}catch{return null}return t}function Ul(t,e){var s;let r=t.replace(Mt.findPipe,(a,o,l)=>{let c=!1,d=o;for(;--d>=0&&l[d]==="\\";)c=!c;return c?"|":" |"}),n=r.split(Mt.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!((s=n.at(-1))!=null&&s.trim())&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length0?-2:-1}function Vl(t,e,r,n,i){let s=e.href,a=e.title||null,o=t[1].replace(i.other.outputLinkReplace,"$1");n.state.inLink=!0;let l={type:t[0].charAt(0)==="!"?"image":"link",raw:r,href:s,title:a,text:o,tokens:n.inlineTokens(o)};return n.state.inLink=!1,l}function X3(t,e,r){let n=t.match(r.other.indentCodeCompensation);if(n===null)return e;let i=n[1];return e.split(` -`).map(s=>{let a=s.match(r.other.beginningSpace);if(a===null)return s;let[o]=a;return o.length>=i.length?s.slice(i.length):s}).join(` -`)}var Ai=class{constructor(t){Ge(this,"options");Ge(this,"rules");Ge(this,"lexer");this.options=t||bn}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:Yn(r,` -`)}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let r=e[0],n=X3(r,e[3]||"",this.rules);return{type:"code",raw:r,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:n}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let n=Yn(r,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(r=n.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:Yn(e[0],` -`)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let r=Yn(e[0],` -`).split(` -`),n="",i="",s=[];for(;r.length>0;){let a=!1,o=[],l;for(l=0;l1,i={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");let s=this.rules.other.listItemRegex(r),a=!1;for(;t;){let l=!1,c="",d="";if(!(e=s.exec(t))||this.rules.block.hr.test(t))break;c=e[0],t=t.substring(c.length);let f=e[2].split(` -`,1)[0].replace(this.rules.other.listReplaceTabs,M=>" ".repeat(3*M.length)),p=t.split(` -`,1)[0],b=!f.trim(),v=0;if(this.options.pedantic?(v=2,d=f.trimStart()):b?v=e[1].length+1:(v=e[2].search(this.rules.other.nonSpaceChar),v=v>4?1:v,d=f.slice(v),v+=e[1].length),b&&this.rules.other.blankLine.test(p)&&(c+=p+` -`,t=t.substring(p.length+1),l=!0),!l){let M=this.rules.other.nextBulletRegex(v),x=this.rules.other.hrRegex(v),A=this.rules.other.fencesBeginRegex(v),N=this.rules.other.headingBeginRegex(v),_=this.rules.other.htmlBeginRegex(v);for(;t;){let O=t.split(` -`,1)[0],z;if(p=O,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),z=p):z=p.replace(this.rules.other.tabCharGlobal," "),A.test(p)||N.test(p)||_.test(p)||M.test(p)||x.test(p))break;if(z.search(this.rules.other.nonSpaceChar)>=v||!p.trim())d+=` -`+z.slice(v);else{if(b||f.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||A.test(f)||N.test(f)||x.test(f))break;d+=` -`+p}!b&&!p.trim()&&(b=!0),c+=O+` -`,t=t.substring(O.length+1),f=z.slice(v)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(a=!0));let k=null,w;this.options.gfm&&(k=this.rules.other.listIsTask.exec(d),k&&(w=k[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,""))),i.items.push({type:"list_item",raw:c,task:!!k,checked:w,loose:!1,text:d,tokens:[]}),i.raw+=c}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l=0;lf.type==="space"),d=c.length>0&&c.some(f=>this.rules.other.anyLine.test(f.raw));i.loose=d}if(i.loose)for(let l=0;l({text:l,tokens:this.lexer.inline(l),header:!1,align:s.align[c]})));return s}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let r=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:r,tokens:this.lexer.inline(r)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let r=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let s=Yn(r.slice(0,-1),"\\");if((r.length-s.length)%2===0)return}else{let s=Y3(e[2],"()");if(s===-2)return;if(s>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+s;e[2]=e[2].substring(0,s),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],i="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(n);s&&(n=s[1],i=s[3])}else i=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?n=n.slice(1):n=n.slice(1,-1)),Vl(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let n=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=e[n.toLowerCase()];if(!i){let s=r[0].charAt(0);return{type:"text",raw:s,text:s}}return Vl(r,i,r[0],this.lexer,this.rules)}}emStrong(t,e,r=""){let n=this.rules.inline.emStrongLDelim.exec(t);if(!(!n||n[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[2])||!r||this.rules.inline.punctuation.exec(r))){let i=[...n[0]].length-1,s,a,o=i,l=0,c=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,e=e.slice(-1*t.length+i);(n=c.exec(e))!=null;){if(s=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!s)continue;if(a=[...s].length,n[3]||n[4]){o+=a;continue}else if((n[5]||n[6])&&i%3&&!((i+a)%3)){l+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o+l);let d=[...n[0]][0].length,f=t.slice(0,i+n.index+d+a);if(Math.min(i,a)%2){let b=f.slice(1,-1);return{type:"em",raw:f,text:b,tokens:this.lexer.inlineTokens(b)}}let p=f.slice(2,-2);return{type:"strong",raw:f,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(r),i=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return n&&i&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let r,n;return e[2]==="@"?(r=e[1],n="mailto:"+r):(r=e[1],n=r),{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}url(t){var r;let e;if(e=this.rules.inline.url.exec(t)){let n,i;if(e[2]==="@")n=e[0],i="mailto:"+n;else{let s;do s=e[0],e[0]=((r=this.rules.inline._backpedal.exec(e[0]))==null?void 0:r[0])??"";while(s!==e[0]);n=e[0],e[1]==="www."?i="http://"+e[0]:i=e[0]}return{type:"link",raw:e[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},Cr=class ca{constructor(e){Ge(this,"tokens");Ge(this,"options");Ge(this,"state");Ge(this,"tokenizer");Ge(this,"inlineQueue");this.tokens=[],this.tokens.links=Object.create(null),this.options=e||bn,this.options.tokenizer=this.options.tokenizer||new Ai,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:Mt,block:$0.normal,inline:Kn.normal};this.options.pedantic?(r.block=$0.pedantic,r.inline=Kn.pedantic):this.options.gfm&&(r.block=$0.gfm,this.options.breaks?r.inline=Kn.breaks:r.inline=Kn.gfm),this.tokenizer.rules=r}static get rules(){return{block:$0,inline:Kn}}static lex(e,r){return new ca(r).lex(e)}static lexInline(e,r){return new ca(r).inlineTokens(e)}lex(e){e=e.replace(Mt.carriageReturn,` -`),this.blockTokens(e,this.tokens);for(let r=0;r(o=c.call({lexer:this},e,r))?(e=e.substring(o.raw.length),r.push(o),!0):!1))continue;if(o=this.tokenizer.space(e)){e=e.substring(o.raw.length);let c=r.at(-1);o.raw.length===1&&c!==void 0?c.raw+=` -`:r.push(o);continue}if(o=this.tokenizer.code(e)){e=e.substring(o.raw.length);let c=r.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith(` -`)?"":` -`)+o.raw,c.text+=` -`+o.text,this.inlineQueue.at(-1).src=c.text):r.push(o);continue}if(o=this.tokenizer.fences(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.heading(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.hr(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.blockquote(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.list(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.html(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.def(e)){e=e.substring(o.raw.length);let c=r.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith(` -`)?"":` -`)+o.raw,c.text+=` -`+o.raw,this.inlineQueue.at(-1).src=c.text):this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title},r.push(o));continue}if(o=this.tokenizer.table(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.lheading(e)){e=e.substring(o.raw.length),r.push(o);continue}let l=e;if((a=this.options.extensions)!=null&&a.startBlock){let c=1/0,d=e.slice(1),f;this.options.extensions.startBlock.forEach(p=>{f=p.call({lexer:this},d),typeof f=="number"&&f>=0&&(c=Math.min(c,f))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(this.state.top&&(o=this.tokenizer.paragraph(l))){let c=r.at(-1);n&&(c==null?void 0:c.type)==="paragraph"?(c.raw+=(c.raw.endsWith(` -`)?"":` -`)+o.raw,c.text+=` -`+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):r.push(o),n=l.length!==e.length,e=e.substring(o.raw.length);continue}if(o=this.tokenizer.text(e)){e=e.substring(o.raw.length);let c=r.at(-1);(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith(` -`)?"":` -`)+o.raw,c.text+=` -`+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):r.push(o);continue}if(e){let c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){var o,l,c;let n=e,i=null;if(this.tokens.links){let d=Object.keys(this.tokens.links);if(d.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)d.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let s=!1,a="";for(;e;){s||(a=""),s=!1;let d;if((l=(o=this.options.extensions)==null?void 0:o.inline)!=null&&l.some(p=>(d=p.call({lexer:this},e,r))?(e=e.substring(d.raw.length),r.push(d),!0):!1))continue;if(d=this.tokenizer.escape(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.tag(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.link(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(d.raw.length);let p=r.at(-1);d.type==="text"&&(p==null?void 0:p.type)==="text"?(p.raw+=d.raw,p.text+=d.text):r.push(d);continue}if(d=this.tokenizer.emStrong(e,n,a)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.codespan(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.br(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.del(e)){e=e.substring(d.raw.length),r.push(d);continue}if(d=this.tokenizer.autolink(e)){e=e.substring(d.raw.length),r.push(d);continue}if(!this.state.inLink&&(d=this.tokenizer.url(e))){e=e.substring(d.raw.length),r.push(d);continue}let f=e;if((c=this.options.extensions)!=null&&c.startInline){let p=1/0,b=e.slice(1),v;this.options.extensions.startInline.forEach(k=>{v=k.call({lexer:this},b),typeof v=="number"&&v>=0&&(p=Math.min(p,v))}),p<1/0&&p>=0&&(f=e.substring(0,p+1))}if(d=this.tokenizer.inlineText(f)){e=e.substring(d.raw.length),d.raw.slice(-1)!=="_"&&(a=d.raw.slice(-1)),s=!0;let p=r.at(-1);(p==null?void 0:p.type)==="text"?(p.raw+=d.raw,p.text+=d.text):r.push(d);continue}if(e){let p="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return r}},Ei=class{constructor(t){Ge(this,"options");Ge(this,"parser");this.options=t||bn}space(t){return""}code({text:t,lang:e,escaped:r}){var s;let n=(s=(e||"").match(Mt.notSpaceStart))==null?void 0:s[0],i=t.replace(Mt.endingNewline,"")+` -`;return n?'
    '+(r?i:cr(i,!0))+`
    -`:"
    "+(r?i:cr(i,!0))+`
    -`}blockquote({tokens:t}){return`
    -${this.parser.parse(t)}
    -`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`${this.parser.parseInline(t)} -`}hr(t){return`
    -`}list(t){let e=t.ordered,r=t.start,n="";for(let a=0;a -`+n+" -`}listitem(t){var r;let e="";if(t.task){let n=this.checkbox({checked:!!t.checked});t.loose?((r=t.tokens[0])==null?void 0:r.type)==="paragraph"?(t.tokens[0].text=n+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&t.tokens[0].tokens[0].type==="text"&&(t.tokens[0].tokens[0].text=n+" "+cr(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):e+=n+" "}return e+=this.parser.parse(t.tokens,!!t.loose),`
  • ${e}
  • -`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    -`}table(t){let e="",r="";for(let i=0;i${n}`),`
    - -`+e+` -`+n+`
    -`}tablerow({text:t}){return` -${t} -`}tablecell(t){let e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+` -`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${cr(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:r}){let n=this.parser.parseInline(r),i=jl(t);if(i===null)return n;t=i;let s='
    ",s}image({href:t,title:e,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let i=jl(t);if(i===null)return cr(r);t=i;let s=`${r}{let l=a[o].flat(1/0);r=r.concat(this.walkTokens(l,e))}):a.tokens&&(r=r.concat(this.walkTokens(a.tokens,e)))}}return r}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(r=>{let n={...r};if(n.async=this.defaults.async||n.async||!1,r.extensions&&(r.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let s=e.renderers[i.name];s?e.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:e.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let s=e[i.level];s?s.unshift(i.tokenizer):e[i.level]=[i.tokenizer],i.start&&(i.level==="block"?e.startBlock?e.startBlock.push(i.start):e.startBlock=[i.start]:i.level==="inline"&&(e.startInline?e.startInline.push(i.start):e.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(e.childTokens[i.name]=i.childTokens)}),n.extensions=e),r.renderer){let i=this.defaults.renderer||new Ei(this.defaults);for(let s in r.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if(["options","parser"].includes(s))continue;let a=s,o=r.renderer[a],l=i[a];i[a]=(...c)=>{let d=o.apply(i,c);return d===!1&&(d=l.apply(i,c)),d||""}}n.renderer=i}if(r.tokenizer){let i=this.defaults.tokenizer||new Ai(this.defaults);for(let s in r.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if(["options","rules","lexer"].includes(s))continue;let a=s,o=r.tokenizer[a],l=i[a];i[a]=(...c)=>{let d=o.apply(i,c);return d===!1&&(d=l.apply(i,c)),d}}n.tokenizer=i}if(r.hooks){let i=this.defaults.hooks||new si;for(let s in r.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if(["options","block"].includes(s))continue;let a=s,o=r.hooks[a],l=i[a];si.passThroughHooks.has(s)?i[a]=c=>{if(this.defaults.async)return Promise.resolve(o.call(i,c)).then(f=>l.call(i,f));let d=o.call(i,c);return l.call(i,d)}:i[a]=(...c)=>{let d=o.apply(i,c);return d===!1&&(d=l.apply(i,c)),d}}n.hooks=i}if(r.walkTokens){let i=this.defaults.walkTokens,s=r.walkTokens;n.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...n}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Cr.lex(t,e??this.defaults)}parser(t,e){return Mr.parse(t,e??this.defaults)}parseMarkdown(t){return(e,r)=>{let n={...r},i={...this.defaults,...n},s=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&n.async===!1)return s(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return s(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=t);let a=i.hooks?i.hooks.provideLexer():t?Cr.lex:Cr.lexInline,o=i.hooks?i.hooks.provideParser():t?Mr.parse:Mr.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(e):e).then(l=>a(l,i)).then(l=>i.hooks?i.hooks.processAllTokens(l):l).then(l=>i.walkTokens?Promise.all(this.walkTokens(l,i.walkTokens)).then(()=>l):l).then(l=>o(l,i)).then(l=>i.hooks?i.hooks.postprocess(l):l).catch(s);try{i.hooks&&(e=i.hooks.preprocess(e));let l=a(e,i);i.hooks&&(l=i.hooks.processAllTokens(l)),i.walkTokens&&this.walkTokens(l,i.walkTokens);let c=o(l,i);return i.hooks&&(c=i.hooks.postprocess(c)),c}catch(l){return s(l)}}}onError(t,e){return r=>{if(r.message+=` -Please report this to https://github.com/markedjs/marked.`,t){let n="

    An error occurred:

    "+cr(r.message+"",!0)+"
    ";return e?Promise.resolve(n):n}if(e)return Promise.reject(r);throw r}}},gn=new Z3;function qe(t,e){return gn.parse(t,e)}qe.options=qe.setOptions=function(t){return gn.setOptions(t),qe.defaults=gn.defaults,A1(qe.defaults),qe};qe.getDefaults=io;qe.defaults=bn;qe.use=function(...t){return gn.use(...t),qe.defaults=gn.defaults,A1(qe.defaults),qe};qe.walkTokens=function(t,e){return gn.walkTokens(t,e)};qe.parseInline=gn.parseInline;qe.Parser=Mr;qe.parser=Mr.parse;qe.Renderer=Ei;qe.TextRenderer=fo;qe.Lexer=Cr;qe.lexer=Cr.lex;qe.Tokenizer=Ai;qe.Hooks=si;qe.parse=qe;qe.options;qe.setOptions;qe.use;qe.walkTokens;qe.parseInline;Mr.parse;Cr.lex;var Wl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function J3(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function b8(t){if(t.__esModule)return t;var e=t.default;if(typeof e=="function"){var r=function n(){return this instanceof n?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};r.prototype=e.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(t).forEach(function(n){var i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(r,n,i.get?i:{enumerable:!0,get:function(){return t[n]}})}),r}var z1={exports:{}};(function(t){var e=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT - * @author Lea Verou - * @namespace - * @public - */var r=function(n){var i=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,s=0,a={},o={manual:n.Prism&&n.Prism.manual,disableWorkerMessageHandler:n.Prism&&n.Prism.disableWorkerMessageHandler,util:{encode:function x(A){return A instanceof l?new l(A.type,x(A.content),A.alias):Array.isArray(A)?A.map(x):A.replace(/&/g,"&").replace(/"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT"&&1<2)return document.currentScript;try{throw new Error}catch(_){var x=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(_.stack)||[])[1];if(x){var A=document.getElementsByTagName("script");for(var N in A)if(A[N].src==x)return A[N]}return null}},isActive:function(x,A,N){for(var _="no-"+A;x;){var O=x.classList;if(O.contains(A))return!0;if(O.contains(_))return!1;x=x.parentElement}return!!N}},languages:{plain:a,plaintext:a,text:a,txt:a,extend:function(x,A){var N=o.util.clone(o.languages[x]);for(var _ in A)N[_]=A[_];return N},insertBefore:function(x,A,N,_){_=_||o.languages;var O=_[x],z={};for(var Y in O)if(O.hasOwnProperty(Y)){if(Y==A)for(var W in N)N.hasOwnProperty(W)&&(z[W]=N[W]);N.hasOwnProperty(Y)||(z[Y]=O[Y])}var he=_[x];return _[x]=z,o.languages.DFS(o.languages,function(pe,Ae){Ae===he&&pe!=x&&(this[pe]=z)}),z},DFS:function x(A,N,_,O){O=O||{};var z=o.util.objId;for(var Y in A)if(A.hasOwnProperty(Y)){N.call(A,Y,A[Y],_||Y);var W=A[Y],he=o.util.type(W);he==="Object"&&!O[z(W)]?(O[z(W)]=!0,x(W,N,null,O)):he==="Array"&&!O[z(W)]&&(O[z(W)]=!0,x(W,N,Y,O))}}},plugins:{},highlightAll:function(x,A){o.highlightAllUnder(document,x,A)},highlightAllUnder:function(x,A,N){var _={callback:N,container:x,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};o.hooks.run("before-highlightall",_),_.elements=Array.prototype.slice.apply(_.container.querySelectorAll(_.selector)),o.hooks.run("before-all-elements-highlight",_);for(var O=0,z;z=_.elements[O++];)o.highlightElement(z,A===!0,_.callback)},highlightElement:function(x,A,N){var _=o.util.getLanguage(x),O=o.languages[_];o.util.setLanguage(x,_);var z=x.parentElement;z&&z.nodeName.toLowerCase()==="pre"&&o.util.setLanguage(z,_);var Y=x.textContent,W={element:x,language:_,grammar:O,code:Y};function he(Ae){W.highlightedCode=Ae,o.hooks.run("before-insert",W),W.element.innerHTML=W.highlightedCode,o.hooks.run("after-highlight",W),o.hooks.run("complete",W),N&&N.call(W.element)}if(o.hooks.run("before-sanity-check",W),z=W.element.parentElement,z&&z.nodeName.toLowerCase()==="pre"&&!z.hasAttribute("tabindex")&&z.setAttribute("tabindex","0"),!W.code){o.hooks.run("complete",W),N&&N.call(W.element);return}if(o.hooks.run("before-highlight",W),!W.grammar){he(o.util.encode(W.code));return}if(A&&n.Worker){var pe=new Worker(o.filename);pe.onmessage=function(Ae){he(Ae.data)},pe.postMessage(JSON.stringify({language:W.language,code:W.code,immediateClose:!0}))}else he(o.highlight(W.code,W.grammar,W.language))},highlight:function(x,A,N){var _={code:x,grammar:A,language:N};if(o.hooks.run("before-tokenize",_),!_.grammar)throw new Error('The language "'+_.language+'" has no grammar.');return _.tokens=o.tokenize(_.code,_.grammar),o.hooks.run("after-tokenize",_),l.stringify(o.util.encode(_.tokens),_.language)},tokenize:function(x,A){var N=A.rest;if(N){for(var _ in N)A[_]=N[_];delete A.rest}var O=new f;return p(O,O.head,x),d(x,O,A,O.head,0),v(O)},hooks:{all:{},add:function(x,A){var N=o.hooks.all;N[x]=N[x]||[],N[x].push(A)},run:function(x,A){var N=o.hooks.all[x];if(!(!N||!N.length))for(var _=0,O;O=N[_++];)O(A)}},Token:l};n.Prism=o;function l(x,A,N,_){this.type=x,this.content=A,this.alias=N,this.length=(_||"").length|0}l.stringify=function x(A,N){if(typeof A=="string")return A;if(Array.isArray(A)){var _="";return A.forEach(function(he){_+=x(he,N)}),_}var O={type:A.type,content:x(A.content,N),tag:"span",classes:["token",A.type],attributes:{},language:N},z=A.alias;z&&(Array.isArray(z)?Array.prototype.push.apply(O.classes,z):O.classes.push(z)),o.hooks.run("wrap",O);var Y="";for(var W in O.attributes)Y+=" "+W+'="'+(O.attributes[W]||"").replace(/"/g,""")+'"';return"<"+O.tag+' class="'+O.classes.join(" ")+'"'+Y+">"+O.content+""};function c(x,A,N,_){x.lastIndex=A;var O=x.exec(N);if(O&&_&&O[1]){var z=O[1].length;O.index+=z,O[0]=O[0].slice(z)}return O}function d(x,A,N,_,O,z){for(var Y in N)if(!(!N.hasOwnProperty(Y)||!N[Y])){var W=N[Y];W=Array.isArray(W)?W:[W];for(var he=0;he=z.reach);Ee+=ve.value.length,ve=ve.next){var rt=ve.value;if(A.length>x.length)return;if(!(rt instanceof l)){var Ve=1,Ie;if(Ze){if(Ie=c(Oe,Ee,x,st),!Ie||Ie.index>=x.length)break;var G=Ie.index,Rt=Ie.index+Ie[0].length,pt=Ee;for(pt+=ve.value.length;G>=pt;)ve=ve.next,pt+=ve.value.length;if(pt-=ve.value.length,Ee=pt,ve.value instanceof l)continue;for(var j=ve;j!==A.tail&&(ptz.reach&&(z.reach=me);var de=ve.prev;se&&(de=p(A,de,se),Ee+=se.length),b(A,de,Ve);var Ue=new l(Y,Ae?o.tokenize(te,Ae):te,tt,te);if(ve=p(A,de,Ue),Ce&&p(A,ve,Ce),Ve>1){var S={cause:Y+","+he,reach:me};d(x,A,N,ve.prev,Ee,S),z&&S.reach>z.reach&&(z.reach=S.reach)}}}}}}function f(){var x={value:null,prev:null,next:null},A={value:null,prev:x,next:null};x.next=A,this.head=x,this.tail=A,this.length=0}function p(x,A,N){var _=A.next,O={value:N,prev:A,next:_};return A.next=O,_.prev=O,x.length++,O}function b(x,A,N){for(var _=A.next,O=0;O/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.languages.markup.doctype.inside["internal-subset"].inside=r.languages.markup,r.hooks.add("wrap",function(n){n.type==="entity"&&(n.attributes.title=n.content.replace(/&/,"&"))}),Object.defineProperty(r.languages.markup.tag,"addInlined",{value:function(i,s){var a={};a["language-"+s]={pattern:/(^$)/i,lookbehind:!0,inside:r.languages[s]},a.cdata=/^$/i;var o={"included-cdata":{pattern://i,inside:a}};o["language-"+s]={pattern:/[\s\S]+/,inside:r.languages[s]};var l={};l[i]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return i}),"i"),lookbehind:!0,greedy:!0,inside:o},r.languages.insertBefore("markup","cdata",l)}}),Object.defineProperty(r.languages.markup.tag,"addAttribute",{value:function(n,i){r.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+n+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[i,"language-"+i],inside:r.languages[i]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.xml=r.languages.extend("markup",{}),r.languages.ssml=r.languages.xml,r.languages.atom=r.languages.xml,r.languages.rss=r.languages.xml,function(n){var i=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;n.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+i.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+i.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+i.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+i.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:i,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},n.languages.css.atrule.inside.rest=n.languages.css;var s=n.languages.markup;s&&(s.tag.addInlined("style","css"),s.tag.addAttribute("style","css"))}(r),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},r.languages.javascript=r.languages.extend("clike",{"class-name":[r.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),r.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,r.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:r.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:r.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:r.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:r.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:r.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),r.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:r.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),r.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),r.languages.markup&&(r.languages.markup.tag.addInlined("script","javascript"),r.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),r.languages.js=r.languages.javascript,function(){if(typeof r>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var n="Loading…",i=function(k,w){return"✖ Error "+k+" while fetching file: "+w},s="✖ Error: File does not exist or is empty",a={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},o="data-src-status",l="loading",c="loaded",d="failed",f="pre[data-src]:not(["+o+'="'+c+'"]):not(['+o+'="'+l+'"])';function p(k,w,M){var x=new XMLHttpRequest;x.open("GET",k,!0),x.onreadystatechange=function(){x.readyState==4&&(x.status<400&&x.responseText?w(x.responseText):x.status>=400?M(i(x.status,x.statusText)):M(s))},x.send(null)}function b(k){var w=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(k||"");if(w){var M=Number(w[1]),x=w[2],A=w[3];return x?A?[M,Number(A)]:[M,void 0]:[M,M]}}r.hooks.add("before-highlightall",function(k){k.selector+=", "+f}),r.hooks.add("before-sanity-check",function(k){var w=k.element;if(w.matches(f)){k.code="",w.setAttribute(o,l);var M=w.appendChild(document.createElement("CODE"));M.textContent=n;var x=w.getAttribute("data-src"),A=k.language;if(A==="none"){var N=(/\.(\w+)$/.exec(x)||[,"none"])[1];A=a[N]||N}r.util.setLanguage(M,A),r.util.setLanguage(w,A);var _=r.plugins.autoloader;_&&_.loadLanguages(A),p(x,function(O){w.setAttribute(o,c);var z=b(w.getAttribute("data-range"));if(z){var Y=O.split(/\r\n?|\n/g),W=z[0],he=z[1]==null?Y.length:z[1];W<0&&(W+=Y.length),W=Math.max(0,Math.min(W-1,Y.length)),he<0&&(he+=Y.length),he=Math.max(0,Math.min(he,Y.length)),O=Y.slice(W,he).join(` -`),w.hasAttribute("data-start")||w.setAttribute("data-start",String(W+1))}M.textContent=O,r.highlightElement(M)},function(O){w.setAttribute(o,d),M.textContent=O})}}),r.plugins.fileHighlight={highlight:function(w){for(var M=(w||document).querySelectorAll(f),x=0,A;A=M[x++];)r.highlightElement(A)}};var v=!1;r.fileHighlight=function(){v||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),v=!0),r.plugins.fileHighlight.highlight.apply(this,arguments)}}()})(z1);var Q3=z1.exports;const Gl=J3(Q3);class $t{constructor(e,r,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=r,this.end=n}static range(e,r){return r?!e||!e.loc||!r.loc||e.loc.lexer!==r.loc.lexer?null:new $t(e.loc.lexer,e.loc.start,r.loc.end):e&&e.loc}}class Yt{constructor(e,r){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=r}range(e,r){return new Yt(r,$t.range(this,e))}}class ee{constructor(e,r){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var n="KaTeX parse error: "+e,i,s,a=r&&r.loc;if(a&&a.start<=a.end){var o=a.lexer.input;i=a.start,s=a.end,i===o.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var l=o.slice(i,s).replace(/[^]/g,"$&̲"),c;i>15?c="…"+o.slice(i-15,i):c=o.slice(0,i);var d;s+15":">","<":"<",'"':""","'":"'"},s6=/[&><"']/g;function a6(t){return String(t).replace(s6,e=>i6[e])}var F1=function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},o6=function(e){var r=F1(e);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},l6=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},c6=function(e){var r=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return r?r[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1])?null:r[1].toLowerCase():"_relative"},ye={contains:e6,deflt:t6,escape:a6,hyphenate:n6,getBaseElem:F1,isCharacterBox:o6,protocolFromUrl:c6},ai={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:t=>Math.max(0,t),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:t=>Math.max(0,t),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};function u6(t){if(t.default)return t.default;var e=t.type,r=Array.isArray(e)?e[0]:e;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class po{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var r in ai)if(ai.hasOwnProperty(r)){var n=ai[r];this[r]=e[r]!==void 0?n.processor?n.processor(e[r]):e[r]:u6(n)}}reportNonstrict(e,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(e,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new ee("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+e+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]"))}}useStrictBehavior(e,r,n){var i=this.strict;if(typeof i=="function")try{i=i(e,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var r=ye.protocolFromUrl(e.url);if(r==null)return!1;e.protocol=r}var n=typeof this.trust=="function"?this.trust(e):this.trust;return!!n}}class Pr{constructor(e,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=r,this.cramped=n}sup(){return hr[d6[this.id]]}sub(){return hr[h6[this.id]]}fracNum(){return hr[f6[this.id]]}fracDen(){return hr[p6[this.id]]}cramp(){return hr[m6[this.id]]}text(){return hr[g6[this.id]]}isTight(){return this.size>=2}}var mo=0,Ci=1,On=2,Nr=3,m0=4,Wt=5,Fn=6,Nt=7,hr=[new Pr(mo,0,!1),new Pr(Ci,0,!0),new Pr(On,1,!1),new Pr(Nr,1,!0),new Pr(m0,2,!1),new Pr(Wt,2,!0),new Pr(Fn,3,!1),new Pr(Nt,3,!0)],d6=[m0,Wt,m0,Wt,Fn,Nt,Fn,Nt],h6=[Wt,Wt,Wt,Wt,Nt,Nt,Nt,Nt],f6=[On,Nr,m0,Wt,Fn,Nt,Fn,Nt],p6=[Nr,Nr,Wt,Wt,Nt,Nt,Nt,Nt],m6=[Ci,Ci,Nr,Nr,Wt,Wt,Nt,Nt],g6=[mo,Ci,On,Nr,On,Nr,On,Nr],xe={DISPLAY:hr[mo],TEXT:hr[On],SCRIPT:hr[m0],SCRIPTSCRIPT:hr[Fn]},da=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function v6(t){for(var e=0;e=i[0]&&t<=i[1])return r.name}return null}var oi=[];da.forEach(t=>t.blocks.forEach(e=>oi.push(...e)));function $1(t){for(var e=0;e=oi[e]&&t<=oi[e+1])return!0;return!1}var Tn=80,b6=function(e,r){return"M95,"+(622+e+r)+` -c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 -c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 -c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 -s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 -c69,-144,104.5,-217.7,106.5,-221 -l`+e/2.075+" -"+e+` -c5.3,-9.3,12,-14,20,-14 -H400000v`+(40+e)+`H845.2724 -s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 -c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},y6=function(e,r){return"M263,"+(601+e+r)+`c0.7,0,18,39.7,52,119 -c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 -c340,-704.7,510.7,-1060.3,512,-1067 -l`+e/2.084+" -"+e+` -c4.7,-7.3,11,-11,19,-11 -H40000v`+(40+e)+`H1012.3 -s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 -c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 -s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 -c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},w6=function(e,r){return"M983 "+(10+e+r)+` -l`+e/3.13+" -"+e+` -c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` -H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 -s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 -c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 -c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 -c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 -c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},x6=function(e,r){return"M424,"+(2398+e+r)+` -c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 -c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 -s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 -s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 -l`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 -v`+(40+e)+`H1014.6 -s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 -c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+r+` -h400000v`+(40+e)+"h-400000z"},k6=function(e,r){return"M473,"+(2713+e+r)+` -c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` -c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 -s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 -c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 -s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+e)+" "+r+"h400000v"+(40+e)+"H1017.7z"},S6=function(e){var r=e/2;return"M400000 "+e+" H0 L"+r+" 0 l65 45 L145 "+(e-80)+" H400000z"},T6=function(e,r,n){var i=n-54-r-e;return"M702 "+(e+r)+"H400000"+(40+e)+` -H742v`+i+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 -h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 -c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+r+"H400000v"+(40+e)+"H742z"},A6=function(e,r,n){r=1e3*r;var i="";switch(e){case"sqrtMain":i=b6(r,Tn);break;case"sqrtSize1":i=y6(r,Tn);break;case"sqrtSize2":i=w6(r,Tn);break;case"sqrtSize3":i=x6(r,Tn);break;case"sqrtSize4":i=k6(r,Tn);break;case"sqrtTall":i=T6(r,Tn,n)}return i},E6=function(e,r){switch(e){case"⎜":return"M291 0 H417 V"+r+" H291z M291 0 H417 V"+r+" H291z";case"∣":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z";case"∥":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z"+("M367 0 H410 V"+r+" H367z M367 0 H410 V"+r+" H367z");case"⎟":return"M457 0 H583 V"+r+" H457z M457 0 H583 V"+r+" H457z";case"⎢":return"M319 0 H403 V"+r+" H319z M319 0 H403 V"+r+" H319z";case"⎥":return"M263 0 H347 V"+r+" H263z M263 0 H347 V"+r+" H263z";case"⎪":return"M384 0 H504 V"+r+" H384z M384 0 H504 V"+r+" H384z";case"⏐":return"M312 0 H355 V"+r+" H312z M312 0 H355 V"+r+" H312z";case"‖":return"M257 0 H300 V"+r+" H257z M257 0 H300 V"+r+" H257z"+("M478 0 H521 V"+r+" H478z M478 0 H521 V"+r+" H478z");default:return""}},Kl={doubleleftarrow:`M262 157 -l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 - 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 - 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 -c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 - 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 --86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 --2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z -m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l --10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 - 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 --33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 --17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 --13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 -c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 --107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 - 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 --5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 -c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 - 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 - 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 - l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 --45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 - 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 - 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 - 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 --331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 -H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 - 435 0h399565z`,leftgroupunder:`M400000 262 -H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 - 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 --3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 --18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 --196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 - 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 --4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 --10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z -m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 - 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 - 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 --152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 - 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 --2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 -v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 --83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 --68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 - 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z -M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z -M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 --.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 -c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 - 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z -M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 -c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 --53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 - 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 - 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 -c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 - 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 - 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 --5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 --320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z -m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 -60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 --451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z -m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 -c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 --480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z -m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 -85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 --707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z -m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 -c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 --16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 - 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 - 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 --40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 - 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l --6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 -s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 -c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 - 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 --174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 - 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 - 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 --3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 --10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 - 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 --18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 - 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z -m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 - 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 --7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 --27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 - 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 - 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 --64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z -m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 - 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 --13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 - 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:`M399960 241 V94 h40 V428 h-40 V281 H0 v-40z -M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 - 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 --52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 --167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 - 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 --70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 --40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 --37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 - 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 -c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 - 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 - 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 --19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 - 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 --2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 - 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 - 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 --68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 --8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 - 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 -c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 - 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 --11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 - 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 - 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 - -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 --11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 - 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 - 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 - -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 -3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 -10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 --1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 --7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 -H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 -c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 -c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, --5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 -c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 -c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 -s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 -121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 -s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 -c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z -M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 --27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 -13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 --84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 --119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 -151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 -c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 -c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 -c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z -M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, -1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, --152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z -M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},C6=function(e,r){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 -H403z M403 1759 V0 H319 V1759 v`+r+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z -M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z -M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z -M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z -M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 -c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, --36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, -949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 -c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, --544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 -l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, --210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, -63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 -c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` -c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 -c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 -c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 -c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 -l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};class T0{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return ye.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),r=0;rr.toText();return this.children.map(e).join("")}}var fr={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},B0={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Yl={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function M6(t,e){fr[t]=e}function go(t,e,r){if(!fr[e])throw new Error("Font metrics not found for font: "+e+".");var n=t.charCodeAt(0),i=fr[e][n];if(!i&&t[0]in Yl&&(n=Yl[t[0]].charCodeAt(0),i=fr[e][n]),!i&&r==="text"&&$1(n)&&(i=fr[e][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}var Ss={};function N6(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!Ss[e]){var r=Ss[e]={cssEmPerMu:B0.quad[e]/18};for(var n in B0)B0.hasOwnProperty(n)&&(r[n]=B0[n][e])}return Ss[e]}var D6=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Xl=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Zl=function(e,r){return r.size<2?e:D6[e-1][r.size-1]};class Tr{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||Tr.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=Xl[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);return new Tr(r)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:Zl(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:Xl[e-1]})}havingBaseStyle(e){e=e||this.style.text();var r=Zl(Tr.BASESIZE,e);return this.size===r&&this.textSize===Tr.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Tr.BASESIZE?["sizing","reset-size"+this.size,"size"+Tr.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=N6(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Tr.BASESIZE=6;var ha={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},R6={ex:!0,em:!0,mu:!0},B1=function(e){return typeof e!="string"&&(e=e.unit),e in ha||e in R6||e==="ex"},ot=function(e,r){var n;if(e.unit in ha)n=ha[e.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(e.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,e.unit==="ex")n=i.fontMetrics().xHeight;else if(e.unit==="em")n=i.fontMetrics().quad;else throw new ee("Invalid unit: '"+e.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(e.number*n,r.maxSize)},ae=function(e){return+e.toFixed(4)+"em"},Yr=function(e){return e.filter(r=>r).join(" ")},P1=function(e,r,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},H1=function(e){var r=document.createElement(e);r.className=Yr(this.classes);for(var n in this.style)this.style.hasOwnProperty(n)&&(r.style[n]=this.style[n]);for(var i in this.attributes)this.attributes.hasOwnProperty(i)&&r.setAttribute(i,this.attributes[i]);for(var s=0;s/=\x00-\x1f]/,q1=function(e){var r="<"+e;this.classes.length&&(r+=' class="'+ye.escape(Yr(this.classes))+'"');var n="";for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=ye.hyphenate(i)+":"+this.style[i]+";");n&&(r+=' style="'+ye.escape(n)+'"');for(var s in this.attributes)if(this.attributes.hasOwnProperty(s)){if(I6.test(s))throw new ee("Invalid attribute name '"+s+"'");r+=" "+s+'="'+ye.escape(this.attributes[s])+'"'}r+=">";for(var a=0;a",r};class A0{constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,P1.call(this,e,n,i),this.children=r||[]}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return ye.contains(this.classes,e)}toNode(){return H1.call(this,"span")}toMarkup(){return q1.call(this,"span")}}class vo{constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,P1.call(this,r,i),this.children=n||[],this.setAttribute("href",e)}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return ye.contains(this.classes,e)}toNode(){return H1.call(this,"a")}toMarkup(){return q1.call(this,"a")}}class _6{constructor(e,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=e,this.classes=["mord"],this.style=n}hasClass(e){return ye.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var r in this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);return e}toMarkup(){var e=''+ye.escape(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=ae(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=Yr(this.classes));for(var n in this.style)this.style.hasOwnProperty(n)&&(r=r||document.createElement("span"),r.style[n]=this.style[n]);return r?(r.appendChild(e),r):e}toMarkup(){var e=!1,r="0&&(n+="margin-right:"+this.italic+"em;");for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=ye.hyphenate(i)+":"+this.style[i]+";");n&&(e=!0,r+=' style="'+ye.escape(n)+'"');var s=ye.escape(this.text);return e?(r+=">",r+=s,r+="",r):s}}class _r{constructor(e,r){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=r||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"svg");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}}class fa{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"line");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var e=" but got "+String(t)+".")}var z6={bin:1,close:1,inner:1,open:1,punct:1,rel:1},F6={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},Qe={math:{},text:{}};function u(t,e,r,n,i,s){Qe[t][i]={font:e,group:r,replace:n},s&&n&&(Qe[t][n]=Qe[t][i])}var h="math",X="text",m="main",T="ams",it="accent-token",ce="bin",Dt="close",Hn="inner",we="mathord",ft="op-token",Ut="open",Qi="punct",C="rel",Fr="spacing",R="textord";u(h,m,C,"≡","\\equiv",!0);u(h,m,C,"≺","\\prec",!0);u(h,m,C,"≻","\\succ",!0);u(h,m,C,"∼","\\sim",!0);u(h,m,C,"⊥","\\perp");u(h,m,C,"⪯","\\preceq",!0);u(h,m,C,"⪰","\\succeq",!0);u(h,m,C,"≃","\\simeq",!0);u(h,m,C,"∣","\\mid",!0);u(h,m,C,"≪","\\ll",!0);u(h,m,C,"≫","\\gg",!0);u(h,m,C,"≍","\\asymp",!0);u(h,m,C,"∥","\\parallel");u(h,m,C,"⋈","\\bowtie",!0);u(h,m,C,"⌣","\\smile",!0);u(h,m,C,"⊑","\\sqsubseteq",!0);u(h,m,C,"⊒","\\sqsupseteq",!0);u(h,m,C,"≐","\\doteq",!0);u(h,m,C,"⌢","\\frown",!0);u(h,m,C,"∋","\\ni",!0);u(h,m,C,"∝","\\propto",!0);u(h,m,C,"⊢","\\vdash",!0);u(h,m,C,"⊣","\\dashv",!0);u(h,m,C,"∋","\\owns");u(h,m,Qi,".","\\ldotp");u(h,m,Qi,"⋅","\\cdotp");u(h,m,R,"#","\\#");u(X,m,R,"#","\\#");u(h,m,R,"&","\\&");u(X,m,R,"&","\\&");u(h,m,R,"ℵ","\\aleph",!0);u(h,m,R,"∀","\\forall",!0);u(h,m,R,"ℏ","\\hbar",!0);u(h,m,R,"∃","\\exists",!0);u(h,m,R,"∇","\\nabla",!0);u(h,m,R,"♭","\\flat",!0);u(h,m,R,"ℓ","\\ell",!0);u(h,m,R,"♮","\\natural",!0);u(h,m,R,"♣","\\clubsuit",!0);u(h,m,R,"℘","\\wp",!0);u(h,m,R,"♯","\\sharp",!0);u(h,m,R,"♢","\\diamondsuit",!0);u(h,m,R,"ℜ","\\Re",!0);u(h,m,R,"♡","\\heartsuit",!0);u(h,m,R,"ℑ","\\Im",!0);u(h,m,R,"♠","\\spadesuit",!0);u(h,m,R,"§","\\S",!0);u(X,m,R,"§","\\S");u(h,m,R,"¶","\\P",!0);u(X,m,R,"¶","\\P");u(h,m,R,"†","\\dag");u(X,m,R,"†","\\dag");u(X,m,R,"†","\\textdagger");u(h,m,R,"‡","\\ddag");u(X,m,R,"‡","\\ddag");u(X,m,R,"‡","\\textdaggerdbl");u(h,m,Dt,"⎱","\\rmoustache",!0);u(h,m,Ut,"⎰","\\lmoustache",!0);u(h,m,Dt,"⟯","\\rgroup",!0);u(h,m,Ut,"⟮","\\lgroup",!0);u(h,m,ce,"∓","\\mp",!0);u(h,m,ce,"⊖","\\ominus",!0);u(h,m,ce,"⊎","\\uplus",!0);u(h,m,ce,"⊓","\\sqcap",!0);u(h,m,ce,"∗","\\ast");u(h,m,ce,"⊔","\\sqcup",!0);u(h,m,ce,"◯","\\bigcirc",!0);u(h,m,ce,"∙","\\bullet",!0);u(h,m,ce,"‡","\\ddagger");u(h,m,ce,"≀","\\wr",!0);u(h,m,ce,"⨿","\\amalg");u(h,m,ce,"&","\\And");u(h,m,C,"⟵","\\longleftarrow",!0);u(h,m,C,"⇐","\\Leftarrow",!0);u(h,m,C,"⟸","\\Longleftarrow",!0);u(h,m,C,"⟶","\\longrightarrow",!0);u(h,m,C,"⇒","\\Rightarrow",!0);u(h,m,C,"⟹","\\Longrightarrow",!0);u(h,m,C,"↔","\\leftrightarrow",!0);u(h,m,C,"⟷","\\longleftrightarrow",!0);u(h,m,C,"⇔","\\Leftrightarrow",!0);u(h,m,C,"⟺","\\Longleftrightarrow",!0);u(h,m,C,"↦","\\mapsto",!0);u(h,m,C,"⟼","\\longmapsto",!0);u(h,m,C,"↗","\\nearrow",!0);u(h,m,C,"↩","\\hookleftarrow",!0);u(h,m,C,"↪","\\hookrightarrow",!0);u(h,m,C,"↘","\\searrow",!0);u(h,m,C,"↼","\\leftharpoonup",!0);u(h,m,C,"⇀","\\rightharpoonup",!0);u(h,m,C,"↙","\\swarrow",!0);u(h,m,C,"↽","\\leftharpoondown",!0);u(h,m,C,"⇁","\\rightharpoondown",!0);u(h,m,C,"↖","\\nwarrow",!0);u(h,m,C,"⇌","\\rightleftharpoons",!0);u(h,T,C,"≮","\\nless",!0);u(h,T,C,"","\\@nleqslant");u(h,T,C,"","\\@nleqq");u(h,T,C,"⪇","\\lneq",!0);u(h,T,C,"≨","\\lneqq",!0);u(h,T,C,"","\\@lvertneqq");u(h,T,C,"⋦","\\lnsim",!0);u(h,T,C,"⪉","\\lnapprox",!0);u(h,T,C,"⊀","\\nprec",!0);u(h,T,C,"⋠","\\npreceq",!0);u(h,T,C,"⋨","\\precnsim",!0);u(h,T,C,"⪹","\\precnapprox",!0);u(h,T,C,"≁","\\nsim",!0);u(h,T,C,"","\\@nshortmid");u(h,T,C,"∤","\\nmid",!0);u(h,T,C,"⊬","\\nvdash",!0);u(h,T,C,"⊭","\\nvDash",!0);u(h,T,C,"⋪","\\ntriangleleft");u(h,T,C,"⋬","\\ntrianglelefteq",!0);u(h,T,C,"⊊","\\subsetneq",!0);u(h,T,C,"","\\@varsubsetneq");u(h,T,C,"⫋","\\subsetneqq",!0);u(h,T,C,"","\\@varsubsetneqq");u(h,T,C,"≯","\\ngtr",!0);u(h,T,C,"","\\@ngeqslant");u(h,T,C,"","\\@ngeqq");u(h,T,C,"⪈","\\gneq",!0);u(h,T,C,"≩","\\gneqq",!0);u(h,T,C,"","\\@gvertneqq");u(h,T,C,"⋧","\\gnsim",!0);u(h,T,C,"⪊","\\gnapprox",!0);u(h,T,C,"⊁","\\nsucc",!0);u(h,T,C,"⋡","\\nsucceq",!0);u(h,T,C,"⋩","\\succnsim",!0);u(h,T,C,"⪺","\\succnapprox",!0);u(h,T,C,"≆","\\ncong",!0);u(h,T,C,"","\\@nshortparallel");u(h,T,C,"∦","\\nparallel",!0);u(h,T,C,"⊯","\\nVDash",!0);u(h,T,C,"⋫","\\ntriangleright");u(h,T,C,"⋭","\\ntrianglerighteq",!0);u(h,T,C,"","\\@nsupseteqq");u(h,T,C,"⊋","\\supsetneq",!0);u(h,T,C,"","\\@varsupsetneq");u(h,T,C,"⫌","\\supsetneqq",!0);u(h,T,C,"","\\@varsupsetneqq");u(h,T,C,"⊮","\\nVdash",!0);u(h,T,C,"⪵","\\precneqq",!0);u(h,T,C,"⪶","\\succneqq",!0);u(h,T,C,"","\\@nsubseteqq");u(h,T,ce,"⊴","\\unlhd");u(h,T,ce,"⊵","\\unrhd");u(h,T,C,"↚","\\nleftarrow",!0);u(h,T,C,"↛","\\nrightarrow",!0);u(h,T,C,"⇍","\\nLeftarrow",!0);u(h,T,C,"⇏","\\nRightarrow",!0);u(h,T,C,"↮","\\nleftrightarrow",!0);u(h,T,C,"⇎","\\nLeftrightarrow",!0);u(h,T,C,"△","\\vartriangle");u(h,T,R,"ℏ","\\hslash");u(h,T,R,"▽","\\triangledown");u(h,T,R,"◊","\\lozenge");u(h,T,R,"Ⓢ","\\circledS");u(h,T,R,"®","\\circledR");u(X,T,R,"®","\\circledR");u(h,T,R,"∡","\\measuredangle",!0);u(h,T,R,"∄","\\nexists");u(h,T,R,"℧","\\mho");u(h,T,R,"Ⅎ","\\Finv",!0);u(h,T,R,"⅁","\\Game",!0);u(h,T,R,"‵","\\backprime");u(h,T,R,"▲","\\blacktriangle");u(h,T,R,"▼","\\blacktriangledown");u(h,T,R,"■","\\blacksquare");u(h,T,R,"⧫","\\blacklozenge");u(h,T,R,"★","\\bigstar");u(h,T,R,"∢","\\sphericalangle",!0);u(h,T,R,"∁","\\complement",!0);u(h,T,R,"ð","\\eth",!0);u(X,m,R,"ð","ð");u(h,T,R,"╱","\\diagup");u(h,T,R,"╲","\\diagdown");u(h,T,R,"□","\\square");u(h,T,R,"□","\\Box");u(h,T,R,"◊","\\Diamond");u(h,T,R,"¥","\\yen",!0);u(X,T,R,"¥","\\yen",!0);u(h,T,R,"✓","\\checkmark",!0);u(X,T,R,"✓","\\checkmark");u(h,T,R,"ℶ","\\beth",!0);u(h,T,R,"ℸ","\\daleth",!0);u(h,T,R,"ℷ","\\gimel",!0);u(h,T,R,"ϝ","\\digamma",!0);u(h,T,R,"ϰ","\\varkappa");u(h,T,Ut,"┌","\\@ulcorner",!0);u(h,T,Dt,"┐","\\@urcorner",!0);u(h,T,Ut,"└","\\@llcorner",!0);u(h,T,Dt,"┘","\\@lrcorner",!0);u(h,T,C,"≦","\\leqq",!0);u(h,T,C,"⩽","\\leqslant",!0);u(h,T,C,"⪕","\\eqslantless",!0);u(h,T,C,"≲","\\lesssim",!0);u(h,T,C,"⪅","\\lessapprox",!0);u(h,T,C,"≊","\\approxeq",!0);u(h,T,ce,"⋖","\\lessdot");u(h,T,C,"⋘","\\lll",!0);u(h,T,C,"≶","\\lessgtr",!0);u(h,T,C,"⋚","\\lesseqgtr",!0);u(h,T,C,"⪋","\\lesseqqgtr",!0);u(h,T,C,"≑","\\doteqdot");u(h,T,C,"≓","\\risingdotseq",!0);u(h,T,C,"≒","\\fallingdotseq",!0);u(h,T,C,"∽","\\backsim",!0);u(h,T,C,"⋍","\\backsimeq",!0);u(h,T,C,"⫅","\\subseteqq",!0);u(h,T,C,"⋐","\\Subset",!0);u(h,T,C,"⊏","\\sqsubset",!0);u(h,T,C,"≼","\\preccurlyeq",!0);u(h,T,C,"⋞","\\curlyeqprec",!0);u(h,T,C,"≾","\\precsim",!0);u(h,T,C,"⪷","\\precapprox",!0);u(h,T,C,"⊲","\\vartriangleleft");u(h,T,C,"⊴","\\trianglelefteq");u(h,T,C,"⊨","\\vDash",!0);u(h,T,C,"⊪","\\Vvdash",!0);u(h,T,C,"⌣","\\smallsmile");u(h,T,C,"⌢","\\smallfrown");u(h,T,C,"≏","\\bumpeq",!0);u(h,T,C,"≎","\\Bumpeq",!0);u(h,T,C,"≧","\\geqq",!0);u(h,T,C,"⩾","\\geqslant",!0);u(h,T,C,"⪖","\\eqslantgtr",!0);u(h,T,C,"≳","\\gtrsim",!0);u(h,T,C,"⪆","\\gtrapprox",!0);u(h,T,ce,"⋗","\\gtrdot");u(h,T,C,"⋙","\\ggg",!0);u(h,T,C,"≷","\\gtrless",!0);u(h,T,C,"⋛","\\gtreqless",!0);u(h,T,C,"⪌","\\gtreqqless",!0);u(h,T,C,"≖","\\eqcirc",!0);u(h,T,C,"≗","\\circeq",!0);u(h,T,C,"≜","\\triangleq",!0);u(h,T,C,"∼","\\thicksim");u(h,T,C,"≈","\\thickapprox");u(h,T,C,"⫆","\\supseteqq",!0);u(h,T,C,"⋑","\\Supset",!0);u(h,T,C,"⊐","\\sqsupset",!0);u(h,T,C,"≽","\\succcurlyeq",!0);u(h,T,C,"⋟","\\curlyeqsucc",!0);u(h,T,C,"≿","\\succsim",!0);u(h,T,C,"⪸","\\succapprox",!0);u(h,T,C,"⊳","\\vartriangleright");u(h,T,C,"⊵","\\trianglerighteq");u(h,T,C,"⊩","\\Vdash",!0);u(h,T,C,"∣","\\shortmid");u(h,T,C,"∥","\\shortparallel");u(h,T,C,"≬","\\between",!0);u(h,T,C,"⋔","\\pitchfork",!0);u(h,T,C,"∝","\\varpropto");u(h,T,C,"◀","\\blacktriangleleft");u(h,T,C,"∴","\\therefore",!0);u(h,T,C,"∍","\\backepsilon");u(h,T,C,"▶","\\blacktriangleright");u(h,T,C,"∵","\\because",!0);u(h,T,C,"⋘","\\llless");u(h,T,C,"⋙","\\gggtr");u(h,T,ce,"⊲","\\lhd");u(h,T,ce,"⊳","\\rhd");u(h,T,C,"≂","\\eqsim",!0);u(h,m,C,"⋈","\\Join");u(h,T,C,"≑","\\Doteq",!0);u(h,T,ce,"∔","\\dotplus",!0);u(h,T,ce,"∖","\\smallsetminus");u(h,T,ce,"⋒","\\Cap",!0);u(h,T,ce,"⋓","\\Cup",!0);u(h,T,ce,"⩞","\\doublebarwedge",!0);u(h,T,ce,"⊟","\\boxminus",!0);u(h,T,ce,"⊞","\\boxplus",!0);u(h,T,ce,"⋇","\\divideontimes",!0);u(h,T,ce,"⋉","\\ltimes",!0);u(h,T,ce,"⋊","\\rtimes",!0);u(h,T,ce,"⋋","\\leftthreetimes",!0);u(h,T,ce,"⋌","\\rightthreetimes",!0);u(h,T,ce,"⋏","\\curlywedge",!0);u(h,T,ce,"⋎","\\curlyvee",!0);u(h,T,ce,"⊝","\\circleddash",!0);u(h,T,ce,"⊛","\\circledast",!0);u(h,T,ce,"⋅","\\centerdot");u(h,T,ce,"⊺","\\intercal",!0);u(h,T,ce,"⋒","\\doublecap");u(h,T,ce,"⋓","\\doublecup");u(h,T,ce,"⊠","\\boxtimes",!0);u(h,T,C,"⇢","\\dashrightarrow",!0);u(h,T,C,"⇠","\\dashleftarrow",!0);u(h,T,C,"⇇","\\leftleftarrows",!0);u(h,T,C,"⇆","\\leftrightarrows",!0);u(h,T,C,"⇚","\\Lleftarrow",!0);u(h,T,C,"↞","\\twoheadleftarrow",!0);u(h,T,C,"↢","\\leftarrowtail",!0);u(h,T,C,"↫","\\looparrowleft",!0);u(h,T,C,"⇋","\\leftrightharpoons",!0);u(h,T,C,"↶","\\curvearrowleft",!0);u(h,T,C,"↺","\\circlearrowleft",!0);u(h,T,C,"↰","\\Lsh",!0);u(h,T,C,"⇈","\\upuparrows",!0);u(h,T,C,"↿","\\upharpoonleft",!0);u(h,T,C,"⇃","\\downharpoonleft",!0);u(h,m,C,"⊶","\\origof",!0);u(h,m,C,"⊷","\\imageof",!0);u(h,T,C,"⊸","\\multimap",!0);u(h,T,C,"↭","\\leftrightsquigarrow",!0);u(h,T,C,"⇉","\\rightrightarrows",!0);u(h,T,C,"⇄","\\rightleftarrows",!0);u(h,T,C,"↠","\\twoheadrightarrow",!0);u(h,T,C,"↣","\\rightarrowtail",!0);u(h,T,C,"↬","\\looparrowright",!0);u(h,T,C,"↷","\\curvearrowright",!0);u(h,T,C,"↻","\\circlearrowright",!0);u(h,T,C,"↱","\\Rsh",!0);u(h,T,C,"⇊","\\downdownarrows",!0);u(h,T,C,"↾","\\upharpoonright",!0);u(h,T,C,"⇂","\\downharpoonright",!0);u(h,T,C,"⇝","\\rightsquigarrow",!0);u(h,T,C,"⇝","\\leadsto");u(h,T,C,"⇛","\\Rrightarrow",!0);u(h,T,C,"↾","\\restriction");u(h,m,R,"‘","`");u(h,m,R,"$","\\$");u(X,m,R,"$","\\$");u(X,m,R,"$","\\textdollar");u(h,m,R,"%","\\%");u(X,m,R,"%","\\%");u(h,m,R,"_","\\_");u(X,m,R,"_","\\_");u(X,m,R,"_","\\textunderscore");u(h,m,R,"∠","\\angle",!0);u(h,m,R,"∞","\\infty",!0);u(h,m,R,"′","\\prime");u(h,m,R,"△","\\triangle");u(h,m,R,"Γ","\\Gamma",!0);u(h,m,R,"Δ","\\Delta",!0);u(h,m,R,"Θ","\\Theta",!0);u(h,m,R,"Λ","\\Lambda",!0);u(h,m,R,"Ξ","\\Xi",!0);u(h,m,R,"Π","\\Pi",!0);u(h,m,R,"Σ","\\Sigma",!0);u(h,m,R,"Υ","\\Upsilon",!0);u(h,m,R,"Φ","\\Phi",!0);u(h,m,R,"Ψ","\\Psi",!0);u(h,m,R,"Ω","\\Omega",!0);u(h,m,R,"A","Α");u(h,m,R,"B","Β");u(h,m,R,"E","Ε");u(h,m,R,"Z","Ζ");u(h,m,R,"H","Η");u(h,m,R,"I","Ι");u(h,m,R,"K","Κ");u(h,m,R,"M","Μ");u(h,m,R,"N","Ν");u(h,m,R,"O","Ο");u(h,m,R,"P","Ρ");u(h,m,R,"T","Τ");u(h,m,R,"X","Χ");u(h,m,R,"¬","\\neg",!0);u(h,m,R,"¬","\\lnot");u(h,m,R,"⊤","\\top");u(h,m,R,"⊥","\\bot");u(h,m,R,"∅","\\emptyset");u(h,T,R,"∅","\\varnothing");u(h,m,we,"α","\\alpha",!0);u(h,m,we,"β","\\beta",!0);u(h,m,we,"γ","\\gamma",!0);u(h,m,we,"δ","\\delta",!0);u(h,m,we,"ϵ","\\epsilon",!0);u(h,m,we,"ζ","\\zeta",!0);u(h,m,we,"η","\\eta",!0);u(h,m,we,"θ","\\theta",!0);u(h,m,we,"ι","\\iota",!0);u(h,m,we,"κ","\\kappa",!0);u(h,m,we,"λ","\\lambda",!0);u(h,m,we,"μ","\\mu",!0);u(h,m,we,"ν","\\nu",!0);u(h,m,we,"ξ","\\xi",!0);u(h,m,we,"ο","\\omicron",!0);u(h,m,we,"π","\\pi",!0);u(h,m,we,"ρ","\\rho",!0);u(h,m,we,"σ","\\sigma",!0);u(h,m,we,"τ","\\tau",!0);u(h,m,we,"υ","\\upsilon",!0);u(h,m,we,"ϕ","\\phi",!0);u(h,m,we,"χ","\\chi",!0);u(h,m,we,"ψ","\\psi",!0);u(h,m,we,"ω","\\omega",!0);u(h,m,we,"ε","\\varepsilon",!0);u(h,m,we,"ϑ","\\vartheta",!0);u(h,m,we,"ϖ","\\varpi",!0);u(h,m,we,"ϱ","\\varrho",!0);u(h,m,we,"ς","\\varsigma",!0);u(h,m,we,"φ","\\varphi",!0);u(h,m,ce,"∗","*",!0);u(h,m,ce,"+","+");u(h,m,ce,"−","-",!0);u(h,m,ce,"⋅","\\cdot",!0);u(h,m,ce,"∘","\\circ",!0);u(h,m,ce,"÷","\\div",!0);u(h,m,ce,"±","\\pm",!0);u(h,m,ce,"×","\\times",!0);u(h,m,ce,"∩","\\cap",!0);u(h,m,ce,"∪","\\cup",!0);u(h,m,ce,"∖","\\setminus",!0);u(h,m,ce,"∧","\\land");u(h,m,ce,"∨","\\lor");u(h,m,ce,"∧","\\wedge",!0);u(h,m,ce,"∨","\\vee",!0);u(h,m,R,"√","\\surd");u(h,m,Ut,"⟨","\\langle",!0);u(h,m,Ut,"∣","\\lvert");u(h,m,Ut,"∥","\\lVert");u(h,m,Dt,"?","?");u(h,m,Dt,"!","!");u(h,m,Dt,"⟩","\\rangle",!0);u(h,m,Dt,"∣","\\rvert");u(h,m,Dt,"∥","\\rVert");u(h,m,C,"=","=");u(h,m,C,":",":");u(h,m,C,"≈","\\approx",!0);u(h,m,C,"≅","\\cong",!0);u(h,m,C,"≥","\\ge");u(h,m,C,"≥","\\geq",!0);u(h,m,C,"←","\\gets");u(h,m,C,">","\\gt",!0);u(h,m,C,"∈","\\in",!0);u(h,m,C,"","\\@not");u(h,m,C,"⊂","\\subset",!0);u(h,m,C,"⊃","\\supset",!0);u(h,m,C,"⊆","\\subseteq",!0);u(h,m,C,"⊇","\\supseteq",!0);u(h,T,C,"⊈","\\nsubseteq",!0);u(h,T,C,"⊉","\\nsupseteq",!0);u(h,m,C,"⊨","\\models");u(h,m,C,"←","\\leftarrow",!0);u(h,m,C,"≤","\\le");u(h,m,C,"≤","\\leq",!0);u(h,m,C,"<","\\lt",!0);u(h,m,C,"→","\\rightarrow",!0);u(h,m,C,"→","\\to");u(h,T,C,"≱","\\ngeq",!0);u(h,T,C,"≰","\\nleq",!0);u(h,m,Fr," ","\\ ");u(h,m,Fr," ","\\space");u(h,m,Fr," ","\\nobreakspace");u(X,m,Fr," ","\\ ");u(X,m,Fr," "," ");u(X,m,Fr," ","\\space");u(X,m,Fr," ","\\nobreakspace");u(h,m,Fr,null,"\\nobreak");u(h,m,Fr,null,"\\allowbreak");u(h,m,Qi,",",",");u(h,m,Qi,";",";");u(h,T,ce,"⊼","\\barwedge",!0);u(h,T,ce,"⊻","\\veebar",!0);u(h,m,ce,"⊙","\\odot",!0);u(h,m,ce,"⊕","\\oplus",!0);u(h,m,ce,"⊗","\\otimes",!0);u(h,m,R,"∂","\\partial",!0);u(h,m,ce,"⊘","\\oslash",!0);u(h,T,ce,"⊚","\\circledcirc",!0);u(h,T,ce,"⊡","\\boxdot",!0);u(h,m,ce,"△","\\bigtriangleup");u(h,m,ce,"▽","\\bigtriangledown");u(h,m,ce,"†","\\dagger");u(h,m,ce,"⋄","\\diamond");u(h,m,ce,"⋆","\\star");u(h,m,ce,"◃","\\triangleleft");u(h,m,ce,"▹","\\triangleright");u(h,m,Ut,"{","\\{");u(X,m,R,"{","\\{");u(X,m,R,"{","\\textbraceleft");u(h,m,Dt,"}","\\}");u(X,m,R,"}","\\}");u(X,m,R,"}","\\textbraceright");u(h,m,Ut,"{","\\lbrace");u(h,m,Dt,"}","\\rbrace");u(h,m,Ut,"[","\\lbrack",!0);u(X,m,R,"[","\\lbrack",!0);u(h,m,Dt,"]","\\rbrack",!0);u(X,m,R,"]","\\rbrack",!0);u(h,m,Ut,"(","\\lparen",!0);u(h,m,Dt,")","\\rparen",!0);u(X,m,R,"<","\\textless",!0);u(X,m,R,">","\\textgreater",!0);u(h,m,Ut,"⌊","\\lfloor",!0);u(h,m,Dt,"⌋","\\rfloor",!0);u(h,m,Ut,"⌈","\\lceil",!0);u(h,m,Dt,"⌉","\\rceil",!0);u(h,m,R,"\\","\\backslash");u(h,m,R,"∣","|");u(h,m,R,"∣","\\vert");u(X,m,R,"|","\\textbar",!0);u(h,m,R,"∥","\\|");u(h,m,R,"∥","\\Vert");u(X,m,R,"∥","\\textbardbl");u(X,m,R,"~","\\textasciitilde");u(X,m,R,"\\","\\textbackslash");u(X,m,R,"^","\\textasciicircum");u(h,m,C,"↑","\\uparrow",!0);u(h,m,C,"⇑","\\Uparrow",!0);u(h,m,C,"↓","\\downarrow",!0);u(h,m,C,"⇓","\\Downarrow",!0);u(h,m,C,"↕","\\updownarrow",!0);u(h,m,C,"⇕","\\Updownarrow",!0);u(h,m,ft,"∐","\\coprod");u(h,m,ft,"⋁","\\bigvee");u(h,m,ft,"⋀","\\bigwedge");u(h,m,ft,"⨄","\\biguplus");u(h,m,ft,"⋂","\\bigcap");u(h,m,ft,"⋃","\\bigcup");u(h,m,ft,"∫","\\int");u(h,m,ft,"∫","\\intop");u(h,m,ft,"∬","\\iint");u(h,m,ft,"∭","\\iiint");u(h,m,ft,"∏","\\prod");u(h,m,ft,"∑","\\sum");u(h,m,ft,"⨂","\\bigotimes");u(h,m,ft,"⨁","\\bigoplus");u(h,m,ft,"⨀","\\bigodot");u(h,m,ft,"∮","\\oint");u(h,m,ft,"∯","\\oiint");u(h,m,ft,"∰","\\oiiint");u(h,m,ft,"⨆","\\bigsqcup");u(h,m,ft,"∫","\\smallint");u(X,m,Hn,"…","\\textellipsis");u(h,m,Hn,"…","\\mathellipsis");u(X,m,Hn,"…","\\ldots",!0);u(h,m,Hn,"…","\\ldots",!0);u(h,m,Hn,"⋯","\\@cdots",!0);u(h,m,Hn,"⋱","\\ddots",!0);u(h,m,R,"⋮","\\varvdots");u(X,m,R,"⋮","\\varvdots");u(h,m,it,"ˊ","\\acute");u(h,m,it,"ˋ","\\grave");u(h,m,it,"¨","\\ddot");u(h,m,it,"~","\\tilde");u(h,m,it,"ˉ","\\bar");u(h,m,it,"˘","\\breve");u(h,m,it,"ˇ","\\check");u(h,m,it,"^","\\hat");u(h,m,it,"⃗","\\vec");u(h,m,it,"˙","\\dot");u(h,m,it,"˚","\\mathring");u(h,m,we,"","\\@imath");u(h,m,we,"","\\@jmath");u(h,m,R,"ı","ı");u(h,m,R,"ȷ","ȷ");u(X,m,R,"ı","\\i",!0);u(X,m,R,"ȷ","\\j",!0);u(X,m,R,"ß","\\ss",!0);u(X,m,R,"æ","\\ae",!0);u(X,m,R,"œ","\\oe",!0);u(X,m,R,"ø","\\o",!0);u(X,m,R,"Æ","\\AE",!0);u(X,m,R,"Œ","\\OE",!0);u(X,m,R,"Ø","\\O",!0);u(X,m,it,"ˊ","\\'");u(X,m,it,"ˋ","\\`");u(X,m,it,"ˆ","\\^");u(X,m,it,"˜","\\~");u(X,m,it,"ˉ","\\=");u(X,m,it,"˘","\\u");u(X,m,it,"˙","\\.");u(X,m,it,"¸","\\c");u(X,m,it,"˚","\\r");u(X,m,it,"ˇ","\\v");u(X,m,it,"¨",'\\"');u(X,m,it,"˝","\\H");u(X,m,it,"◯","\\textcircled");var j1={"--":!0,"---":!0,"``":!0,"''":!0};u(X,m,R,"–","--",!0);u(X,m,R,"–","\\textendash");u(X,m,R,"—","---",!0);u(X,m,R,"—","\\textemdash");u(X,m,R,"‘","`",!0);u(X,m,R,"‘","\\textquoteleft");u(X,m,R,"’","'",!0);u(X,m,R,"’","\\textquoteright");u(X,m,R,"“","``",!0);u(X,m,R,"“","\\textquotedblleft");u(X,m,R,"”","''",!0);u(X,m,R,"”","\\textquotedblright");u(h,m,R,"°","\\degree",!0);u(X,m,R,"°","\\degree");u(X,m,R,"°","\\textdegree",!0);u(h,m,R,"£","\\pounds");u(h,m,R,"£","\\mathsterling",!0);u(X,m,R,"£","\\pounds");u(X,m,R,"£","\\textsterling",!0);u(h,T,R,"✠","\\maltese");u(X,T,R,"✠","\\maltese");var Ql='0123456789/@."';for(var Ts=0;Ts0)return er(s,c,i,r,a.concat(d));if(l){var f,p;if(l==="boldsymbol"){var b=P6(s,i,r,a,n);f=b.fontName,p=[b.fontClass]}else o?(f=W1[l].fontName,p=[l]):(f=j0(l,r.fontWeight,r.fontShape),p=[l,r.fontWeight,r.fontShape]);if(es(s,f,i).metrics)return er(s,f,i,r,a.concat(p));if(j1.hasOwnProperty(s)&&f.slice(0,10)==="Typewriter"){for(var v=[],k=0;k{if(Yr(t.classes)!==Yr(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var r=t.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n in t.style)if(t.style.hasOwnProperty(n)&&t.style[n]!==e.style[n])return!1;for(var i in e.style)if(e.style.hasOwnProperty(i)&&t.style[i]!==e.style[i])return!1;return!0},j6=t=>{for(var e=0;er&&(r=a.height),a.depth>n&&(n=a.depth),a.maxFontSize>i&&(i=a.maxFontSize)}e.height=r,e.depth=n,e.maxFontSize=i},Ot=function(e,r,n,i){var s=new A0(e,r,n,i);return bo(s),s},U1=(t,e,r,n)=>new A0(t,e,r,n),U6=function(e,r,n){var i=Ot([e],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=ae(i.height),i.maxFontSize=1,i},V6=function(e,r,n,i){var s=new vo(e,r,n,i);return bo(s),s},V1=function(e){var r=new T0(e);return bo(r),r},W6=function(e,r){return e instanceof T0?Ot([],[e],r):e},G6=function(e){if(e.positionType==="individualShift"){for(var r=e.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,s=i,a=1;a{var r=Ot(["mspace"],[],e),n=ot(t,e);return r.style.marginRight=ae(n),r},j0=function(e,r,n){var i="";switch(e){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=e}var s;return r==="textbf"&&n==="textit"?s="BoldItalic":r==="textbf"?s="Bold":r==="textit"?s="Italic":s="Regular",i+"-"+s},W1={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},G1={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},X6=function(e,r){var[n,i,s]=G1[e],a=new Xr(n),o=new _r([a],{width:ae(i),height:ae(s),style:"width:"+ae(i),viewBox:"0 0 "+1e3*i+" "+1e3*s,preserveAspectRatio:"xMinYMin"}),l=U1(["overlay"],[o],r);return l.height=s,l.style.height=ae(s),l.style.width=ae(i),l},L={fontMap:W1,makeSymbol:er,mathsym:B6,makeSpan:Ot,makeSvgSpan:U1,makeLineSpan:U6,makeAnchor:V6,makeFragment:V1,wrapFragment:W6,makeVList:K6,makeOrd:H6,makeGlue:Y6,staticSvg:X6,svgData:G1,tryCombineChars:j6},at={number:3,unit:"mu"},ln={number:4,unit:"mu"},xr={number:5,unit:"mu"},Z6={mord:{mop:at,mbin:ln,mrel:xr,minner:at},mop:{mord:at,mop:at,mrel:xr,minner:at},mbin:{mord:ln,mop:ln,mopen:ln,minner:ln},mrel:{mord:xr,mop:xr,mopen:xr,minner:xr},mopen:{},mclose:{mop:at,mbin:ln,mrel:xr,minner:at},mpunct:{mord:at,mop:at,mrel:xr,mopen:at,mclose:at,mpunct:at,minner:at},minner:{mord:at,mop:at,mbin:ln,mrel:xr,mopen:at,mpunct:at,minner:at}},J6={mord:{mop:at},mop:{mord:at,mop:at},mbin:{},mrel:{},mopen:{},mclose:{mop:at},mpunct:{},minner:{mop:at}},K1={},Ni={},Di={};function oe(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:s,mathmlBuilder:a}=t,o={type:e,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},l=0;l{var w=k.classes[0],M=v.classes[0];w==="mbin"&&ye.contains(e5,M)?k.classes[0]="mord":M==="mbin"&&ye.contains(Q6,w)&&(v.classes[0]="mord")},{node:f},p,b),ic(s,(v,k)=>{var w=ma(k),M=ma(v),x=w&&M?v.hasClass("mtight")?J6[w][M]:Z6[w][M]:null;if(x)return L.makeGlue(x,c)},{node:f},p,b),s},ic=function t(e,r,n,i,s){i&&e.push(i);for(var a=0;ap=>{e.splice(f+1,0,p),a++})(a)}i&&e.pop()},Y1=function(e){return e instanceof T0||e instanceof vo||e instanceof A0&&e.hasClass("enclosing")?e:null},n5=function t(e,r){var n=Y1(e);if(n){var i=n.children;if(i.length){if(r==="right")return t(i[i.length-1],"right");if(r==="left")return t(i[0],"left")}}return e},ma=function(e,r){return e?(r&&(e=n5(e,r)),r5[e.classes[0]]||null):null},g0=function(e,r){var n=["nulldelimiter"].concat(e.baseSizingClasses());return Or(r.concat(n))},Be=function(e,r,n){if(!e)return Or();if(Ni[e.type]){var i=Ni[e.type](e,r);if(n&&r.size!==n.size){i=Or(r.sizingClasses(n),[i],r);var s=r.sizeMultiplier/n.sizeMultiplier;i.height*=s,i.depth*=s}return i}else throw new ee("Got group of unknown type: '"+e.type+"'")};function U0(t,e){var r=Or(["base"],t,e),n=Or(["strut"]);return n.style.height=ae(r.height+r.depth),r.depth&&(n.style.verticalAlign=ae(-r.depth)),r.children.unshift(n),r}function ga(t,e){var r=null;t.length===1&&t[0].type==="tag"&&(r=t[0].tag,t=t[0].body);var n=vt(t,e,"root"),i;n.length===2&&n[1].hasClass("tag")&&(i=n.pop());for(var s=[],a=[],o=0;o0&&(s.push(U0(a,e)),a=[]),s.push(n[o]));a.length>0&&s.push(U0(a,e));var c;r?(c=U0(vt(r,e,!0)),c.classes=["tag"],s.push(c)):i&&s.push(i);var d=Or(["katex-html"],s);if(d.setAttribute("aria-hidden","true"),c){var f=c.children[0];f.style.height=ae(d.height+d.depth),d.depth&&(f.style.verticalAlign=ae(-d.depth))}return d}function X1(t){return new T0(t)}class Pt{constructor(e,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(e,r){this.attributes[e]=r}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&e.setAttribute(r,this.attributes[r]);this.classes.length>0&&(e.className=Yr(this.classes));for(var n=0;n0&&(e+=' class ="'+ye.escape(Yr(this.classes))+'"'),e+=">";for(var n=0;n",e}toText(){return this.children.map(e=>e.toText()).join("")}}class pr{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return ye.escape(this.toText())}toText(){return this.text}}class i5{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=" ":e>=.1666&&e<=.1667?this.character=" ":e>=.2222&&e<=.2223?this.character=" ":e>=.2777&&e<=.2778?this.character="  ":e>=-.05556&&e<=-.05555?this.character=" ⁣":e>=-.1667&&e<=-.1666?this.character=" ⁣":e>=-.2223&&e<=-.2222?this.character=" ⁣":e>=-.2778&&e<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",ae(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var Q={MathNode:Pt,TextNode:pr,SpaceNode:i5,newDocumentFragment:X1},Zt=function(e,r,n){return Qe[r][e]&&Qe[r][e].replace&&e.charCodeAt(0)!==55349&&!(j1.hasOwnProperty(e)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(e=Qe[r][e].replace),new Q.TextNode(e)},yo=function(e){return e.length===1?e[0]:new Q.MathNode("mrow",e)},wo=function(e,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=e.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathsfit")return"sans-serif-italic";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var s=e.text;if(ye.contains(["\\imath","\\jmath"],s))return null;Qe[i][s]&&Qe[i][s].replace&&(s=Qe[i][s].replace);var a=L.fontMap[n].fontName;return go(s,a,i)?L.fontMap[n].variant:null};function Ms(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof pr&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var r=t.children[0];return r instanceof pr&&r.text===","}else return!1}var zt=function(e,r,n){if(e.length===1){var i=Xe(e[0],r);return n&&i instanceof Pt&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var s=[],a,o=0;o=1&&(a.type==="mn"||Ms(a))){var c=l.children[0];c instanceof Pt&&c.type==="mn"&&(c.children=[...a.children,...c.children],s.pop())}else if(a.type==="mi"&&a.children.length===1){var d=a.children[0];if(d instanceof pr&&d.text==="̸"&&(l.type==="mo"||l.type==="mi"||l.type==="mn")){var f=l.children[0];f instanceof pr&&f.text.length>0&&(f.text=f.text.slice(0,1)+"̸"+f.text.slice(1),s.pop())}}}s.push(l),a=l}return s},Zr=function(e,r,n){return yo(zt(e,r,n))},Xe=function(e,r){if(!e)return new Q.MathNode("mrow");if(Di[e.type]){var n=Di[e.type](e,r);return n}else throw new ee("Got group of unknown type: '"+e.type+"'")};function sc(t,e,r,n,i){var s=zt(t,r),a;s.length===1&&s[0]instanceof Pt&&ye.contains(["mrow","mtable"],s[0].type)?a=s[0]:a=new Q.MathNode("mrow",s);var o=new Q.MathNode("annotation",[new Q.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var l=new Q.MathNode("semantics",[a,o]),c=new Q.MathNode("math",[l]);c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&c.setAttribute("display","block");var d=i?"katex":"katex-mathml";return L.makeSpan([d],[c])}var Z1=function(e){return new Tr({style:e.displayMode?xe.DISPLAY:xe.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},J1=function(e,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),e=L.makeSpan(n,[e])}return e},s5=function(e,r,n){var i=Z1(n),s;if(n.output==="mathml")return sc(e,r,i,n.displayMode,!0);if(n.output==="html"){var a=ga(e,i);s=L.makeSpan(["katex"],[a])}else{var o=sc(e,r,i,n.displayMode,!1),l=ga(e,i);s=L.makeSpan(["katex"],[o,l])}return J1(s,n)},a5=function(e,r,n){var i=Z1(n),s=ga(e,i),a=L.makeSpan(["katex"],[s]);return J1(a,n)},o5={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},l5=function(e){var r=new Q.MathNode("mo",[new Q.TextNode(o5[e.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},c5={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},u5=function(e){return e.type==="ordgroup"?e.body.length:1},d5=function(e,r){function n(){var o=4e5,l=e.label.slice(1);if(ye.contains(["widehat","widecheck","widetilde","utilde"],l)){var c=e,d=u5(c.base),f,p,b;if(d>5)l==="widehat"||l==="widecheck"?(f=420,o=2364,b=.42,p=l+"4"):(f=312,o=2340,b=.34,p="tilde4");else{var v=[1,1,2,2,3,3][d];l==="widehat"||l==="widecheck"?(o=[0,1062,2364,2364,2364][v],f=[0,239,300,360,420][v],b=[0,.24,.3,.3,.36,.42][v],p=l+v):(o=[0,600,1033,2339,2340][v],f=[0,260,286,306,312][v],b=[0,.26,.286,.3,.306,.34][v],p="tilde"+v)}var k=new Xr(p),w=new _r([k],{width:"100%",height:ae(b),viewBox:"0 0 "+o+" "+f,preserveAspectRatio:"none"});return{span:L.makeSvgSpan([],[w],r),minWidth:0,height:b}}else{var M=[],x=c5[l],[A,N,_]=x,O=_/1e3,z=A.length,Y,W;if(z===1){var he=x[3];Y=["hide-tail"],W=[he]}else if(z===2)Y=["halfarrow-left","halfarrow-right"],W=["xMinYMin","xMaxYMin"];else if(z===3)Y=["brace-left","brace-center","brace-right"],W=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+z+" children.");for(var pe=0;pe0&&(i.style.minWidth=ae(s)),i},h5=function(e,r,n,i,s){var a,o=e.height+e.depth+n+i;if(/fbox|color|angl/.test(r)){if(a=L.makeSpan(["stretchy",r],[],s),r==="fbox"){var l=s.color&&s.getColor();l&&(a.style.borderColor=l)}}else{var c=[];/^[bx]cancel$/.test(r)&&c.push(new fa({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&c.push(new fa({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var d=new _r(c,{width:"100%",height:ae(o)});a=L.makeSvgSpan([],[d],s)}return a.height=o,a.style.height=ae(o),a},Lr={encloseSpan:h5,mathMLnode:l5,svgSpan:d5};function Re(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function xo(t){var e=ts(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function ts(t){return t&&(t.type==="atom"||F6.hasOwnProperty(t.type))?t:null}var ko=(t,e)=>{var r,n,i;t&&t.type==="supsub"?(n=Re(t.base,"accent"),r=n.base,t.base=r,i=L6(Be(t,e)),t.base=n):(n=Re(t,"accent"),r=n.base);var s=Be(r,e.havingCrampedStyle()),a=n.isShifty&&ye.isCharacterBox(r),o=0;if(a){var l=ye.getBaseElem(r),c=Be(l,e.havingCrampedStyle());o=Jl(c).skew}var d=n.label==="\\c",f=d?s.height+s.depth:Math.min(s.height,e.fontMetrics().xHeight),p;if(n.isStretchy)p=Lr.svgSpan(n,e),p=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+ae(2*o)+")",marginLeft:ae(2*o)}:void 0}]},e);else{var b,v;n.label==="\\vec"?(b=L.staticSvg("vec",e),v=L.svgData.vec[1]):(b=L.makeOrd({mode:n.mode,text:n.label},e,"textord"),b=Jl(b),b.italic=0,v=b.width,d&&(f+=b.depth)),p=L.makeSpan(["accent-body"],[b]);var k=n.label==="\\textcircled";k&&(p.classes.push("accent-full"),f=s.height);var w=o;k||(w-=v/2),p.style.left=ae(w),n.label==="\\textcircled"&&(p.style.top=".2em"),p=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:-f},{type:"elem",elem:p}]},e)}var M=L.makeSpan(["mord","accent"],[p],e);return i?(i.children[0]=M,i.height=Math.max(M.height,i.height),i.classes[0]="mord",i):M},Q1=(t,e)=>{var r=t.isStretchy?Lr.mathMLnode(t.label):new Q.MathNode("mo",[Zt(t.label,t.mode)]),n=new Q.MathNode("mover",[Xe(t.base,e),r]);return n.setAttribute("accent","true"),n},f5=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));oe({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(t,e)=>{var r=Ri(e[0]),n=!f5.test(t.funcName),i=!n||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:n,isShifty:i,base:r}},htmlBuilder:ko,mathmlBuilder:Q1});oe({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var r=e[0],n=t.parser.mode;return n==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:ko,mathmlBuilder:Q1});oe({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},htmlBuilder:(t,e)=>{var r=Be(t.base,e),n=Lr.svgSpan(t,e),i=t.label==="\\utilde"?.12:0,s=L.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]},e);return L.makeSpan(["mord","accentunder"],[s],e)},mathmlBuilder:(t,e)=>{var r=Lr.mathMLnode(t.label),n=new Q.MathNode("munder",[Xe(t.base,e),r]);return n.setAttribute("accentunder","true"),n}});var V0=t=>{var e=new Q.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};oe({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n,funcName:i}=t;return{type:"xArrow",mode:n.mode,label:i,body:e[0],below:r[0]}},htmlBuilder(t,e){var r=e.style,n=e.havingStyle(r.sup()),i=L.wrapFragment(Be(t.body,n,e),e),s=t.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(s+"-arrow-pad");var a;t.below&&(n=e.havingStyle(r.sub()),a=L.wrapFragment(Be(t.below,n,e),e),a.classes.push(s+"-arrow-pad"));var o=Lr.svgSpan(t,e),l=-e.fontMetrics().axisHeight+.5*o.height,c=-e.fontMetrics().axisHeight-.5*o.height-.111;(i.depth>.25||t.label==="\\xleftequilibrium")&&(c-=i.depth);var d;if(a){var f=-e.fontMetrics().axisHeight+a.height+.5*o.height+.111;d=L.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:o,shift:l},{type:"elem",elem:a,shift:f}]},e)}else d=L.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:c},{type:"elem",elem:o,shift:l}]},e);return d.children[0].children[0].children[1].classes.push("svg-align"),L.makeSpan(["mrel","x-arrow"],[d],e)},mathmlBuilder(t,e){var r=Lr.mathMLnode(t.label);r.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(t.body){var i=V0(Xe(t.body,e));if(t.below){var s=V0(Xe(t.below,e));n=new Q.MathNode("munderover",[r,s,i])}else n=new Q.MathNode("mover",[r,i])}else if(t.below){var a=V0(Xe(t.below,e));n=new Q.MathNode("munder",[r,a])}else n=V0(),n=new Q.MathNode("mover",[r,n]);return n}});var p5=L.makeSpan;function ed(t,e){var r=vt(t.body,e,!0);return p5([t.mclass],r,e)}function td(t,e){var r,n=zt(t.body,e);return t.mclass==="minner"?r=new Q.MathNode("mpadded",n):t.mclass==="mord"?t.isCharacterBox?(r=n[0],r.type="mi"):r=new Q.MathNode("mi",n):(t.isCharacterBox?(r=n[0],r.type="mo"):r=new Q.MathNode("mo",n),t.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):t.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):t.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}oe({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:ut(i),isCharacterBox:ye.isCharacterBox(i)}},htmlBuilder:ed,mathmlBuilder:td});var rs=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};oe({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:r}=t;return{type:"mclass",mode:r.mode,mclass:rs(e[0]),body:ut(e[1]),isCharacterBox:ye.isCharacterBox(e[1])}}});oe({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:r,funcName:n}=t,i=e[1],s=e[0],a;n!=="\\stackrel"?a=rs(i):a="mrel";var o={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:ut(i)},l={type:"supsub",mode:s.mode,base:o,sup:n==="\\underset"?null:s,sub:n==="\\underset"?s:null};return{type:"mclass",mode:r.mode,mclass:a,body:[l],isCharacterBox:ye.isCharacterBox(l)}},htmlBuilder:ed,mathmlBuilder:td});oe({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"pmb",mode:r.mode,mclass:rs(e[0]),body:ut(e[0])}},htmlBuilder(t,e){var r=vt(t.body,e,!0),n=L.makeSpan([t.mclass],r,e);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(t,e){var r=zt(t.body,e),n=new Q.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});var m5={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},ac=()=>({type:"styling",body:[],mode:"math",style:"display"}),oc=t=>t.type==="textord"&&t.text==="@",g5=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;function v5(t,e,r){var n=m5[t];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[e[0]],[]),s={type:"atom",text:n,mode:"math",family:"rel"},a=r.callFunction("\\Big",[s],[]),o=r.callFunction("\\\\cdright",[e[1]],[]),l={type:"ordgroup",mode:"math",body:[i,a,o]};return r.callFunction("\\\\cdparent",[l],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var c={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[c],[])}default:return{type:"textord",text:" ",mode:"math"}}}function b5(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var r=t.fetch().text;if(r==="&"||r==="\\\\")t.consume();else if(r==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new ee("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var n=[],i=[n],s=0;s-1))if("<>AV".indexOf(c)>-1)for(var f=0;f<2;f++){for(var p=!0,b=l+1;bAV=|." after @',a[l]);var v=v5(c,d,t),k={type:"styling",body:[v],mode:"math",style:"display"};n.push(k),o=ac()}s%2===0?n.push(o):n.shift(),n=[],i.push(n)}t.gullet.endGroup(),t.gullet.endGroup();var w=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:w,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}oe({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:e[0]}},htmlBuilder(t,e){var r=e.havingStyle(e.style.sup()),n=L.wrapFragment(Be(t.label,r,e),e);return n.classes.push("cd-label-"+t.side),n.style.bottom=ae(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(t,e){var r=new Q.MathNode("mrow",[Xe(t.label,e)]);return r=new Q.MathNode("mpadded",[r]),r.setAttribute("width","0"),t.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new Q.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});oe({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:r}=t;return{type:"cdlabelparent",mode:r.mode,fragment:e[0]}},htmlBuilder(t,e){var r=L.wrapFragment(Be(t.fragment,e),e);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(t,e){return new Q.MathNode("mrow",[Xe(t.fragment,e)])}});oe({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:r}=t,n=Re(e[0],"ordgroup"),i=n.body,s="",a=0;a=1114111)throw new ee("\\@char with invalid code point "+s);return l<=65535?c=String.fromCharCode(l):(l-=65536,c=String.fromCharCode((l>>10)+55296,(l&1023)+56320)),{type:"textord",mode:r.mode,text:c}}});var rd=(t,e)=>{var r=vt(t.body,e.withColor(t.color),!1);return L.makeFragment(r)},nd=(t,e)=>{var r=zt(t.body,e.withColor(t.color)),n=new Q.MathNode("mstyle",r);return n.setAttribute("mathcolor",t.color),n};oe({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:r}=t,n=Re(e[0],"color-token").color,i=e[1];return{type:"color",mode:r.mode,color:n,body:ut(i)}},htmlBuilder:rd,mathmlBuilder:nd});oe({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:r,breakOnTokenText:n}=t,i=Re(e[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var s=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:s}},htmlBuilder:rd,mathmlBuilder:nd});oe({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,r){var{parser:n}=t,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,s=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:s,size:i&&Re(i,"size").value}},htmlBuilder(t,e){var r=L.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=ae(ot(t.size,e)))),r},mathmlBuilder(t,e){var r=new Q.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",ae(ot(t.size,e)))),r}});var va={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},id=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new ee("Expected a control sequence",t);return e},y5=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},sd=(t,e,r,n)=>{var i=t.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!t.gullet.isExpandable(r.text)}),t.gullet.macros.set(e,i,n)};oe({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:r}=t;e.consumeSpaces();var n=e.fetch();if(va[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=va[n.text]),Re(e.parseFunction(),"internal");throw new ee("Invalid token after macro prefix",n)}});oe({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=e.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new ee("Expected a control sequence",n);for(var s=0,a,o=[[]];e.gullet.future().text!=="{";)if(n=e.gullet.popToken(),n.text==="#"){if(e.gullet.future().text==="{"){a=e.gullet.future(),o[s].push("{");break}if(n=e.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new ee('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==s+1)throw new ee('Argument number "'+n.text+'" out of order');s++,o.push([])}else{if(n.text==="EOF")throw new ee("Expected a macro definition");o[s].push(n.text)}var{tokens:l}=e.gullet.consumeArg();return a&&l.unshift(a),(r==="\\edef"||r==="\\xdef")&&(l=e.gullet.expandTokens(l),l.reverse()),e.gullet.macros.set(i,{tokens:l,numArgs:s,delimiters:o},r===va[r]),{type:"internal",mode:e.mode}}});oe({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=id(e.gullet.popToken());e.gullet.consumeSpaces();var i=y5(e);return sd(e,n,i,r==="\\\\globallet"),{type:"internal",mode:e.mode}}});oe({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=id(e.gullet.popToken()),i=e.gullet.popToken(),s=e.gullet.popToken();return sd(e,n,s,r==="\\\\globalfuture"),e.gullet.pushToken(s),e.gullet.pushToken(i),{type:"internal",mode:e.mode}}});var Jn=function(e,r,n){var i=Qe.math[e]&&Qe.math[e].replace,s=go(i||e,r,n);if(!s)throw new Error("Unsupported symbol "+e+" and font size "+r+".");return s},So=function(e,r,n,i){var s=n.havingBaseStyle(r),a=L.makeSpan(i.concat(s.sizingClasses(n)),[e],n),o=s.sizeMultiplier/n.sizeMultiplier;return a.height*=o,a.depth*=o,a.maxFontSize=s.sizeMultiplier,a},ad=function(e,r,n){var i=r.havingBaseStyle(n),s=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=ae(s),e.height-=s,e.depth+=s},w5=function(e,r,n,i,s,a){var o=L.makeSymbol(e,"Main-Regular",s,i),l=So(o,r,i,a);return n&&ad(l,i,r),l},x5=function(e,r,n,i){return L.makeSymbol(e,"Size"+r+"-Regular",n,i)},od=function(e,r,n,i,s,a){var o=x5(e,r,s,i),l=So(L.makeSpan(["delimsizing","size"+r],[o],i),xe.TEXT,i,a);return n&&ad(l,i,xe.TEXT),l},Ns=function(e,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var s=L.makeSpan(["delimsizinginner",i],[L.makeSpan([],[L.makeSymbol(e,r,n)])]);return{type:"elem",elem:s}},Ds=function(e,r,n){var i=fr["Size4-Regular"][e.charCodeAt(0)]?fr["Size4-Regular"][e.charCodeAt(0)][4]:fr["Size1-Regular"][e.charCodeAt(0)][4],s=new Xr("inner",E6(e,Math.round(1e3*r))),a=new _r([s],{width:ae(i),height:ae(r),style:"width:"+ae(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),o=L.makeSvgSpan([],[a],n);return o.height=r,o.style.height=ae(r),o.style.width=ae(i),{type:"elem",elem:o}},ba=.008,W0={type:"kern",size:-1*ba},k5=["|","\\lvert","\\rvert","\\vert"],S5=["\\|","\\lVert","\\rVert","\\Vert"],ld=function(e,r,n,i,s,a){var o,l,c,d,f="",p=0;o=c=d=e,l=null;var b="Size1-Regular";e==="\\uparrow"?c=d="⏐":e==="\\Uparrow"?c=d="‖":e==="\\downarrow"?o=c="⏐":e==="\\Downarrow"?o=c="‖":e==="\\updownarrow"?(o="\\uparrow",c="⏐",d="\\downarrow"):e==="\\Updownarrow"?(o="\\Uparrow",c="‖",d="\\Downarrow"):ye.contains(k5,e)?(c="∣",f="vert",p=333):ye.contains(S5,e)?(c="∥",f="doublevert",p=556):e==="["||e==="\\lbrack"?(o="⎡",c="⎢",d="⎣",b="Size4-Regular",f="lbrack",p=667):e==="]"||e==="\\rbrack"?(o="⎤",c="⎥",d="⎦",b="Size4-Regular",f="rbrack",p=667):e==="\\lfloor"||e==="⌊"?(c=o="⎢",d="⎣",b="Size4-Regular",f="lfloor",p=667):e==="\\lceil"||e==="⌈"?(o="⎡",c=d="⎢",b="Size4-Regular",f="lceil",p=667):e==="\\rfloor"||e==="⌋"?(c=o="⎥",d="⎦",b="Size4-Regular",f="rfloor",p=667):e==="\\rceil"||e==="⌉"?(o="⎤",c=d="⎥",b="Size4-Regular",f="rceil",p=667):e==="("||e==="\\lparen"?(o="⎛",c="⎜",d="⎝",b="Size4-Regular",f="lparen",p=875):e===")"||e==="\\rparen"?(o="⎞",c="⎟",d="⎠",b="Size4-Regular",f="rparen",p=875):e==="\\{"||e==="\\lbrace"?(o="⎧",l="⎨",d="⎩",c="⎪",b="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(o="⎫",l="⎬",d="⎭",c="⎪",b="Size4-Regular"):e==="\\lgroup"||e==="⟮"?(o="⎧",d="⎩",c="⎪",b="Size4-Regular"):e==="\\rgroup"||e==="⟯"?(o="⎫",d="⎭",c="⎪",b="Size4-Regular"):e==="\\lmoustache"||e==="⎰"?(o="⎧",d="⎭",c="⎪",b="Size4-Regular"):(e==="\\rmoustache"||e==="⎱")&&(o="⎫",d="⎩",c="⎪",b="Size4-Regular");var v=Jn(o,b,s),k=v.height+v.depth,w=Jn(c,b,s),M=w.height+w.depth,x=Jn(d,b,s),A=x.height+x.depth,N=0,_=1;if(l!==null){var O=Jn(l,b,s);N=O.height+O.depth,_=2}var z=k+A+N,Y=Math.max(0,Math.ceil((r-z)/(_*M))),W=z+Y*_*M,he=i.fontMetrics().axisHeight;n&&(he*=i.sizeMultiplier);var pe=W/2-he,Ae=[];if(f.length>0){var st=W-k-A,Ze=Math.round(W*1e3),tt=C6(f,Math.round(st*1e3)),$e=new Xr(f,tt),Oe=(p/1e3).toFixed(3)+"em",ve=(Ze/1e3).toFixed(3)+"em",Ee=new _r([$e],{width:Oe,height:ve,viewBox:"0 0 "+p+" "+Ze}),rt=L.makeSvgSpan([],[Ee],i);rt.height=Ze/1e3,rt.style.width=Oe,rt.style.height=ve,Ae.push({type:"elem",elem:rt})}else{if(Ae.push(Ns(d,b,s)),Ae.push(W0),l===null){var Ve=W-k-A+2*ba;Ae.push(Ds(c,Ve,i))}else{var Ie=(W-k-A-N)/2+2*ba;Ae.push(Ds(c,Ie,i)),Ae.push(W0),Ae.push(Ns(l,b,s)),Ae.push(W0),Ae.push(Ds(c,Ie,i))}Ae.push(W0),Ae.push(Ns(o,b,s))}var Rt=i.havingBaseStyle(xe.TEXT),pt=L.makeVList({positionType:"bottom",positionData:pe,children:Ae},Rt);return So(L.makeSpan(["delimsizing","mult"],[pt],Rt),xe.TEXT,i,a)},Rs=80,Is=.08,_s=function(e,r,n,i,s){var a=A6(e,i,n),o=new Xr(e,a),l=new _r([o],{width:"400em",height:ae(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return L.makeSvgSpan(["hide-tail"],[l],s)},T5=function(e,r){var n=r.havingBaseSizing(),i=hd("\\surd",e*n.sizeMultiplier,dd,n),s=n.sizeMultiplier,a=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),o,l=0,c=0,d=0,f;return i.type==="small"?(d=1e3+1e3*a+Rs,e<1?s=1:e<1.4&&(s=.7),l=(1+a+Is)/s,c=(1+a)/s,o=_s("sqrtMain",l,d,a,r),o.style.minWidth="0.853em",f=.833/s):i.type==="large"?(d=(1e3+Rs)*l0[i.size],c=(l0[i.size]+a)/s,l=(l0[i.size]+a+Is)/s,o=_s("sqrtSize"+i.size,l,d,a,r),o.style.minWidth="1.02em",f=1/s):(l=e+a+Is,c=e+a,d=Math.floor(1e3*e+a)+Rs,o=_s("sqrtTall",l,d,a,r),o.style.minWidth="0.742em",f=1.056),o.height=c,o.style.height=ae(l),{span:o,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+a)*s}},cd=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],A5=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],ud=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],l0=[0,1.2,1.8,2.4,3],E5=function(e,r,n,i,s){if(e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle"),ye.contains(cd,e)||ye.contains(ud,e))return od(e,r,!1,n,i,s);if(ye.contains(A5,e))return ld(e,l0[r],!1,n,i,s);throw new ee("Illegal delimiter: '"+e+"'")},C5=[{type:"small",style:xe.SCRIPTSCRIPT},{type:"small",style:xe.SCRIPT},{type:"small",style:xe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],M5=[{type:"small",style:xe.SCRIPTSCRIPT},{type:"small",style:xe.SCRIPT},{type:"small",style:xe.TEXT},{type:"stack"}],dd=[{type:"small",style:xe.SCRIPTSCRIPT},{type:"small",style:xe.SCRIPT},{type:"small",style:xe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],N5=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},hd=function(e,r,n,i){for(var s=Math.min(2,3-i.style.size),a=s;ar)return n[a]}return n[n.length-1]},fd=function(e,r,n,i,s,a){e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle");var o;ye.contains(ud,e)?o=C5:ye.contains(cd,e)?o=dd:o=M5;var l=hd(e,r,o,i);return l.type==="small"?w5(e,l.style,n,i,s,a):l.type==="large"?od(e,l.size,n,i,s,a):ld(e,r,n,i,s,a)},D5=function(e,r,n,i,s,a){var o=i.fontMetrics().axisHeight*i.sizeMultiplier,l=901,c=5/i.fontMetrics().ptPerEm,d=Math.max(r-o,n+o),f=Math.max(d/500*l,2*d-c);return fd(e,f,!0,i,s,a)},Dr={sqrtImage:T5,sizedDelim:E5,sizeToMaxHeight:l0,customSizedDelim:fd,leftRightDelim:D5},lc={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},R5=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function ns(t,e){var r=ts(t);if(r&&ye.contains(R5,r.text))return r;throw r?new ee("Invalid delimiter '"+r.text+"' after '"+e.funcName+"'",t):new ee("Invalid delimiter type '"+t.type+"'",t)}oe({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,e)=>{var r=ns(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:lc[t.funcName].size,mclass:lc[t.funcName].mclass,delim:r.text}},htmlBuilder:(t,e)=>t.delim==="."?L.makeSpan([t.mclass]):Dr.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push(Zt(t.delim,t.mode));var r=new Q.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=ae(Dr.sizeToMaxHeight[t.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}});function cc(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}oe({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var r=t.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new ee("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:ns(e[0],t).text,color:r}}});oe({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var r=ns(e[0],t),n=t.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var s=Re(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:s.delim,rightColor:s.color}},htmlBuilder:(t,e)=>{cc(t);for(var r=vt(t.body,e,!0,["mopen","mclose"]),n=0,i=0,s=!1,a=0;a{cc(t);var r=zt(t.body,e);if(t.left!=="."){var n=new Q.MathNode("mo",[Zt(t.left,t.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(t.right!=="."){var i=new Q.MathNode("mo",[Zt(t.right,t.mode)]);i.setAttribute("fence","true"),t.rightColor&&i.setAttribute("mathcolor",t.rightColor),r.push(i)}return yo(r)}});oe({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var r=ns(e[0],t);if(!t.parser.leftrightDepth)throw new ee("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},htmlBuilder:(t,e)=>{var r;if(t.delim===".")r=g0(e,[]);else{r=Dr.sizedDelim(t.delim,1,e,t.mode,[]);var n={delim:t.delim,options:e};r.isMiddle=n}return r},mathmlBuilder:(t,e)=>{var r=t.delim==="\\vert"||t.delim==="|"?Zt("|","text"):Zt(t.delim,t.mode),n=new Q.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});var To=(t,e)=>{var r=L.wrapFragment(Be(t.body,e),e),n=t.label.slice(1),i=e.sizeMultiplier,s,a=0,o=ye.isCharacterBox(t.body);if(n==="sout")s=L.makeSpan(["stretchy","sout"]),s.height=e.fontMetrics().defaultRuleThickness/i,a=-.5*e.fontMetrics().xHeight;else if(n==="phase"){var l=ot({number:.6,unit:"pt"},e),c=ot({number:.35,unit:"ex"},e),d=e.havingBaseSizing();i=i/d.sizeMultiplier;var f=r.height+r.depth+l+c;r.style.paddingLeft=ae(f/2+l);var p=Math.floor(1e3*f*i),b=S6(p),v=new _r([new Xr("phase",b)],{width:"400em",height:ae(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});s=L.makeSvgSpan(["hide-tail"],[v],e),s.style.height=ae(f),a=r.depth+l+c}else{/cancel/.test(n)?o||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var k=0,w=0,M=0;/box/.test(n)?(M=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),k=e.fontMetrics().fboxsep+(n==="colorbox"?0:M),w=k):n==="angl"?(M=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),k=4*M,w=Math.max(0,.25-r.depth)):(k=o?.2:0,w=k),s=Lr.encloseSpan(r,n,k,w,e),/fbox|boxed|fcolorbox/.test(n)?(s.style.borderStyle="solid",s.style.borderWidth=ae(M)):n==="angl"&&M!==.049&&(s.style.borderTopWidth=ae(M),s.style.borderRightWidth=ae(M)),a=r.depth+w,t.backgroundColor&&(s.style.backgroundColor=t.backgroundColor,t.borderColor&&(s.style.borderColor=t.borderColor))}var x;if(t.backgroundColor)x=L.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:a},{type:"elem",elem:r,shift:0}]},e);else{var A=/cancel|phase/.test(n)?["svg-align"]:[];x=L.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:s,shift:a,wrapperClasses:A}]},e)}return/cancel/.test(n)&&(x.height=r.height,x.depth=r.depth),/cancel/.test(n)&&!o?L.makeSpan(["mord","cancel-lap"],[x],e):L.makeSpan(["mord"],[x],e)},Ao=(t,e)=>{var r=0,n=new Q.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Xe(t.body,e)]);switch(t.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),t.label==="\\fcolorbox"){var i=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);n.setAttribute("style","border: "+i+"em solid "+String(t.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&n.setAttribute("mathbackground",t.backgroundColor),n};oe({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,s=Re(e[0],"color-token").color,a=e[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,body:a}},htmlBuilder:To,mathmlBuilder:Ao});oe({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,s=Re(e[0],"color-token").color,a=Re(e[1],"color-token").color,o=e[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,borderColor:s,body:o}},htmlBuilder:To,mathmlBuilder:Ao});oe({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\fbox",body:e[0]}}});oe({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:To,mathmlBuilder:Ao});oe({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\angl",body:e[0]}}});var pd={};function gr(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:s,mathmlBuilder:a}=t,o={type:e,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},l=0;l{var e=t.parser.settings;if(!e.displayMode)throw new ee("{"+t.envName+"} can be used only in display mode.")};function Eo(t){if(t.indexOf("ed")===-1)return t.indexOf("*")===-1}function rn(t,e,r){var{hskipBeforeAndAfter:n,addJot:i,cols:s,arraystretch:a,colSeparationType:o,autoTag:l,singleRow:c,emptySingleRow:d,maxNumCols:f,leqno:p}=e;if(t.gullet.beginGroup(),c||t.gullet.macros.set("\\cr","\\\\\\relax"),!a){var b=t.gullet.expandMacroAsText("\\arraystretch");if(b==null)a=1;else if(a=parseFloat(b),!a||a<0)throw new ee("Invalid \\arraystretch: "+b)}t.gullet.beginGroup();var v=[],k=[v],w=[],M=[],x=l!=null?[]:void 0;function A(){l&&t.gullet.macros.set("\\@eqnsw","1",!0)}function N(){x&&(t.gullet.macros.get("\\df@tag")?(x.push(t.subparse([new Yt("\\df@tag")])),t.gullet.macros.set("\\df@tag",void 0,!0)):x.push(!!l&&t.gullet.macros.get("\\@eqnsw")==="1"))}for(A(),M.push(uc(t));;){var _=t.parseExpression(!1,c?"\\end":"\\\\");t.gullet.endGroup(),t.gullet.beginGroup(),_={type:"ordgroup",mode:t.mode,body:_},r&&(_={type:"styling",mode:t.mode,style:r,body:[_]}),v.push(_);var O=t.fetch().text;if(O==="&"){if(f&&v.length===f){if(c||o)throw new ee("Too many tab characters: &",t.nextToken);t.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}t.consume()}else if(O==="\\end"){N(),v.length===1&&_.type==="styling"&&_.body[0].body.length===0&&(k.length>1||!d)&&k.pop(),M.length0&&(A+=.25),c.push({pos:A,isDashed:P[Z]})}for(N(a[0]),n=0;n0&&(pe+=x,zP))for(n=0;n=o)){var te=void 0;(i>0||e.hskipBeforeAndAfter)&&(te=ye.deflt(Ie.pregap,p),te!==0&&(tt=L.makeSpan(["arraycolsep"],[]),tt.style.width=ae(te),Ze.push(tt)));var se=[];for(n=0;n0){for(var Ue=L.makeLineSpan("hline",r,d),S=L.makeLineSpan("hdashline",r,d),D=[{type:"elem",elem:l,shift:0}];c.length>0;){var F=c.pop(),K=F.pos-Ae;F.isDashed?D.push({type:"elem",elem:S,shift:K}):D.push({type:"elem",elem:Ue,shift:K})}l=L.makeVList({positionType:"individualShift",children:D},r)}if(Oe.length===0)return L.makeSpan(["mord"],[l],r);var q=L.makeVList({positionType:"individualShift",children:Oe},r);return q=L.makeSpan(["tag"],[q],r),L.makeFragment([l,q])},I5={c:"center ",l:"left ",r:"right "},br=function(e,r){for(var n=[],i=new Q.MathNode("mtd",[],["mtr-glue"]),s=new Q.MathNode("mtd",[],["mml-eqn-num"]),a=0;a0){var v=e.cols,k="",w=!1,M=0,x=v.length;v[0].type==="separator"&&(p+="top ",M=1),v[v.length-1].type==="separator"&&(p+="bottom ",x-=1);for(var A=M;A0?"left ":"",p+=Y[Y.length-1].length>0?"right ":"";for(var W=1;W-1?"alignat":"align",s=e.envName==="split",a=rn(e.parser,{cols:n,addJot:!0,autoTag:s?void 0:Eo(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:s?2:void 0,leqno:e.parser.settings.leqno},"display"),o,l=0,c={type:"ordgroup",mode:e.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var d="",f=0;f0&&b&&(w=1),n[v]={type:"align",align:k,pregap:w,postgap:0}}return a.colSeparationType=b?"align":"alignat",a};gr({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var r=ts(e[0]),n=r?[e[0]]:Re(e[0],"ordgroup").body,i=n.map(function(a){var o=xo(a),l=o.text;if("lcr".indexOf(l)!==-1)return{type:"align",align:l};if(l==="|")return{type:"separator",separator:"|"};if(l===":")return{type:"separator",separator:":"};throw new ee("Unknown column alignment: "+l,a)}),s={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return rn(t.parser,s,Co(t.envName))},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(t.envName.charAt(t.envName.length-1)==="*"){var i=t.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,"lcr".indexOf(r)===-1)throw new ee("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var s=rn(t.parser,n,Co(t.envName)),a=Math.max(0,...s.body.map(o=>o.length));return s.cols=new Array(a).fill({type:"align",align:r}),e?{type:"leftright",mode:t.mode,body:[s],left:e[0],right:e[1],rightColor:void 0}:s},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},r=rn(t.parser,e,"script");return r.colSeparationType="small",r},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var r=ts(e[0]),n=r?[e[0]]:Re(e[0],"ordgroup").body,i=n.map(function(a){var o=xo(a),l=o.text;if("lc".indexOf(l)!==-1)return{type:"align",align:l};throw new ee("Unknown column alignment: "+l,a)});if(i.length>1)throw new ee("{subarray} can contain only one column");var s={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5};if(s=rn(t.parser,s,"script"),s.body.length>0&&s.body[0].length>1)throw new ee("{subarray} can contain only one column");return s},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=rn(t.parser,e,Co(t.envName));return{type:"leftright",mode:t.mode,body:[r],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:gd,htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){ye.contains(["gather","gather*"],t.envName)&&is(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Eo(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return rn(t.parser,e,"display")},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:gd,htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){is(t);var e={autoTag:Eo(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return rn(t.parser,e,"display")},htmlBuilder:vr,mathmlBuilder:br});gr({type:"array",names:["CD"],props:{numArgs:0},handler(t){return is(t),b5(t.parser)},htmlBuilder:vr,mathmlBuilder:br});g("\\nonumber","\\gdef\\@eqnsw{0}");g("\\notag","\\nonumber");oe({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new ee(t.funcName+" valid only within array environment")}});var dc=pd;oe({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];if(i.type!=="ordgroup")throw new ee("Invalid environment name",i);for(var s="",a=0;a{var r=t.font,n=e.withFont(r);return Be(t.body,n)},bd=(t,e)=>{var r=t.font,n=e.withFont(r);return Xe(t.body,n)},hc={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};oe({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=Ri(e[0]),s=n;return s in hc&&(s=hc[s]),{type:"font",mode:r.mode,font:s.slice(1),body:i}},htmlBuilder:vd,mathmlBuilder:bd});oe({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:r}=t,n=e[0],i=ye.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:rs(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:i}}});oe({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:r,funcName:n,breakOnTokenText:i}=t,{mode:s}=r,a=r.parseExpression(!0,i),o="math"+n.slice(1);return{type:"font",mode:s,font:o,body:{type:"ordgroup",mode:r.mode,body:a}}},htmlBuilder:vd,mathmlBuilder:bd});var yd=(t,e)=>{var r=e;return t==="display"?r=r.id>=xe.SCRIPT.id?r.text():xe.DISPLAY:t==="text"&&r.size===xe.DISPLAY.size?r=xe.TEXT:t==="script"?r=xe.SCRIPT:t==="scriptscript"&&(r=xe.SCRIPTSCRIPT),r},Mo=(t,e)=>{var r=yd(t.size,e.style),n=r.fracNum(),i=r.fracDen(),s;s=e.havingStyle(n);var a=Be(t.numer,s,e);if(t.continued){var o=8.5/e.fontMetrics().ptPerEm,l=3.5/e.fontMetrics().ptPerEm;a.height=a.height0?v=3*p:v=7*p,k=e.fontMetrics().denom1):(f>0?(b=e.fontMetrics().num2,v=p):(b=e.fontMetrics().num3,v=3*p),k=e.fontMetrics().denom2);var w;if(d){var x=e.fontMetrics().axisHeight;b-a.depth-(x+.5*f){var r=new Q.MathNode("mfrac",[Xe(t.numer,e),Xe(t.denom,e)]);if(!t.hasBarLine)r.setAttribute("linethickness","0px");else if(t.barSize){var n=ot(t.barSize,e);r.setAttribute("linethickness",ae(n))}var i=yd(t.size,e.style);if(i.size!==e.style.size){r=new Q.MathNode("mstyle",[r]);var s=i.size===xe.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",s),r.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var a=[];if(t.leftDelim!=null){var o=new Q.MathNode("mo",[new Q.TextNode(t.leftDelim.replace("\\",""))]);o.setAttribute("fence","true"),a.push(o)}if(a.push(r),t.rightDelim!=null){var l=new Q.MathNode("mo",[new Q.TextNode(t.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),a.push(l)}return yo(a)}return r};oe({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0],s=e[1],a,o=null,l=null,c="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,o="(",l=")";break;case"\\\\bracefrac":a=!1,o="\\{",l="\\}";break;case"\\\\brackfrac":a=!1,o="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":c="display";break;case"\\tfrac":case"\\tbinom":c="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:i,denom:s,hasBarLine:a,leftDelim:o,rightDelim:l,size:c,barSize:null}},htmlBuilder:Mo,mathmlBuilder:No});oe({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0],s=e[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:i,denom:s,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});oe({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:r,token:n}=t,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:i,token:n}}});var fc=["display","text","script","scriptscript"],pc=function(e){var r=null;return e.length>0&&(r=e,r=r==="."?null:r),r};oe({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:r}=t,n=e[4],i=e[5],s=Ri(e[0]),a=s.type==="atom"&&s.family==="open"?pc(s.text):null,o=Ri(e[1]),l=o.type==="atom"&&o.family==="close"?pc(o.text):null,c=Re(e[2],"size"),d,f=null;c.isBlank?d=!0:(f=c.value,d=f.number>0);var p="auto",b=e[3];if(b.type==="ordgroup"){if(b.body.length>0){var v=Re(b.body[0],"textord");p=fc[Number(v.text)]}}else b=Re(b,"textord"),p=fc[Number(b.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:d,barSize:f,leftDelim:a,rightDelim:l,size:p}},htmlBuilder:Mo,mathmlBuilder:No});oe({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:r,funcName:n,token:i}=t;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Re(e[0],"size").value,token:i}}});oe({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0],s=l6(Re(e[1],"infix").size),a=e[2],o=s.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:a,continued:!1,hasBarLine:o,barSize:s,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Mo,mathmlBuilder:No});var wd=(t,e)=>{var r=e.style,n,i;t.type==="supsub"?(n=t.sup?Be(t.sup,e.havingStyle(r.sup()),e):Be(t.sub,e.havingStyle(r.sub()),e),i=Re(t.base,"horizBrace")):i=Re(t,"horizBrace");var s=Be(i.base,e.havingBaseStyle(xe.DISPLAY)),a=Lr.svgSpan(i,e),o;if(i.isOver?(o=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]},e),o.children[0].children[0].children[1].classes.push("svg-align")):(o=L.makeVList({positionType:"bottom",positionData:s.depth+.1+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]},e),o.children[0].children[0].children[0].classes.push("svg-align")),n){var l=L.makeSpan(["mord",i.isOver?"mover":"munder"],[o],e);i.isOver?o=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:n}]},e):o=L.makeVList({positionType:"bottom",positionData:l.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:l}]},e)}return L.makeSpan(["mord",i.isOver?"mover":"munder"],[o],e)},_5=(t,e)=>{var r=Lr.mathMLnode(t.label);return new Q.MathNode(t.isOver?"mover":"munder",[Xe(t.base,e),r])};oe({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:e[0]}},htmlBuilder:wd,mathmlBuilder:_5});oe({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[1],i=Re(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:ut(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var r=vt(t.body,e,!1);return L.makeAnchor(t.href,[],r,e)},mathmlBuilder:(t,e)=>{var r=Zr(t.body,e);return r instanceof Pt||(r=new Pt("mrow",[r])),r.setAttribute("href",t.href),r}});oe({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=Re(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],s=0;s{var{parser:r,funcName:n,token:i}=t,s=Re(e[0],"raw").string,a=e[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var o,l={};switch(n){case"\\htmlClass":l.class=s,o={command:"\\htmlClass",class:s};break;case"\\htmlId":l.id=s,o={command:"\\htmlId",id:s};break;case"\\htmlStyle":l.style=s,o={command:"\\htmlStyle",style:s};break;case"\\htmlData":{for(var c=s.split(","),d=0;d{var r=vt(t.body,e,!1),n=["enclosing"];t.attributes.class&&n.push(...t.attributes.class.trim().split(/\s+/));var i=L.makeSpan(n,r,e);for(var s in t.attributes)s!=="class"&&t.attributes.hasOwnProperty(s)&&i.setAttribute(s,t.attributes[s]);return i},mathmlBuilder:(t,e)=>Zr(t.body,e)});oe({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t;return{type:"htmlmathml",mode:r.mode,html:ut(e[0]),mathml:ut(e[1])}},htmlBuilder:(t,e)=>{var r=vt(t.html,e,!1);return L.makeFragment(r)},mathmlBuilder:(t,e)=>Zr(t.mathml,e)});var Os=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!r)throw new ee("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!B1(n))throw new ee("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};oe({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,r)=>{var{parser:n}=t,i={number:0,unit:"em"},s={number:.9,unit:"em"},a={number:0,unit:"em"},o="";if(r[0])for(var l=Re(r[0],"raw").string,c=l.split(","),d=0;d{var r=ot(t.height,e),n=0;t.totalheight.number>0&&(n=ot(t.totalheight,e)-r);var i=0;t.width.number>0&&(i=ot(t.width,e));var s={height:ae(r+n)};i>0&&(s.width=ae(i)),n>0&&(s.verticalAlign=ae(-n));var a=new _6(t.src,t.alt,s);return a.height=r,a.depth=n,a},mathmlBuilder:(t,e)=>{var r=new Q.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var n=ot(t.height,e),i=0;if(t.totalheight.number>0&&(i=ot(t.totalheight,e)-n,r.setAttribute("valign",ae(-i))),r.setAttribute("height",ae(n+i)),t.width.number>0){var s=ot(t.width,e);r.setAttribute("width",ae(s))}return r.setAttribute("src",t.src),r}});oe({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=Re(e[0],"size");if(r.settings.strict){var s=n[1]==="m",a=i.value.unit==="mu";s?(a||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):a&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(t,e){return L.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var r=ot(t.dimension,e);return new Q.SpaceNode(r)}});oe({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},htmlBuilder:(t,e)=>{var r;t.alignment==="clap"?(r=L.makeSpan([],[Be(t.body,e)]),r=L.makeSpan(["inner"],[r],e)):r=L.makeSpan(["inner"],[Be(t.body,e)]);var n=L.makeSpan(["fix"],[]),i=L.makeSpan([t.alignment],[r,n],e),s=L.makeSpan(["strut"]);return s.style.height=ae(i.height+i.depth),i.depth&&(s.style.verticalAlign=ae(-i.depth)),i.children.unshift(s),i=L.makeSpan(["thinbox"],[i],e),L.makeSpan(["mord","vbox"],[i],e)},mathmlBuilder:(t,e)=>{var r=new Q.MathNode("mpadded",[Xe(t.body,e)]);if(t.alignment!=="rlap"){var n=t.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}});oe({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:r,parser:n}=t,i=n.mode;n.switchMode("math");var s=r==="\\("?"\\)":"$",a=n.parseExpression(!1,s);return n.expect(s),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:a}}});oe({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new ee("Mismatched "+t.funcName)}});var mc=(t,e)=>{switch(e.style.size){case xe.DISPLAY.size:return t.display;case xe.TEXT.size:return t.text;case xe.SCRIPT.size:return t.script;case xe.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};oe({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:r}=t;return{type:"mathchoice",mode:r.mode,display:ut(e[0]),text:ut(e[1]),script:ut(e[2]),scriptscript:ut(e[3])}},htmlBuilder:(t,e)=>{var r=mc(t,e),n=vt(r,e,!1);return L.makeFragment(n)},mathmlBuilder:(t,e)=>{var r=mc(t,e);return Zr(r,e)}});var xd=(t,e,r,n,i,s,a)=>{t=L.makeSpan([],[t]);var o=r&&ye.isCharacterBox(r),l,c;if(e){var d=Be(e,n.havingStyle(i.sup()),n);c={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-d.depth)}}if(r){var f=Be(r,n.havingStyle(i.sub()),n);l={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-f.height)}}var p;if(c&&l){var b=n.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+t.depth+a;p=L.makeVList({positionType:"bottom",positionData:b,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:ae(-s)},{type:"kern",size:l.kern},{type:"elem",elem:t},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:ae(s)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(l){var v=t.height-a;p=L.makeVList({positionType:"top",positionData:v,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:ae(-s)},{type:"kern",size:l.kern},{type:"elem",elem:t}]},n)}else if(c){var k=t.depth+a;p=L.makeVList({positionType:"bottom",positionData:k,children:[{type:"elem",elem:t},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:ae(s)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else return t;var w=[p];if(l&&s!==0&&!o){var M=L.makeSpan(["mspace"],[],n);M.style.marginRight=ae(s),w.unshift(M)}return L.makeSpan(["mop","op-limits"],w,n)},kd=["\\smallint"],qn=(t,e)=>{var r,n,i=!1,s;t.type==="supsub"?(r=t.sup,n=t.sub,s=Re(t.base,"op"),i=!0):s=Re(t,"op");var a=e.style,o=!1;a.size===xe.DISPLAY.size&&s.symbol&&!ye.contains(kd,s.name)&&(o=!0);var l;if(s.symbol){var c=o?"Size2-Regular":"Size1-Regular",d="";if((s.name==="\\oiint"||s.name==="\\oiiint")&&(d=s.name.slice(1),s.name=d==="oiint"?"\\iint":"\\iiint"),l=L.makeSymbol(s.name,c,"math",e,["mop","op-symbol",o?"large-op":"small-op"]),d.length>0){var f=l.italic,p=L.staticSvg(d+"Size"+(o?"2":"1"),e);l=L.makeVList({positionType:"individualShift",children:[{type:"elem",elem:l,shift:0},{type:"elem",elem:p,shift:o?.08:0}]},e),s.name="\\"+d,l.classes.unshift("mop"),l.italic=f}}else if(s.body){var b=vt(s.body,e,!0);b.length===1&&b[0]instanceof Xt?(l=b[0],l.classes[0]="mop"):l=L.makeSpan(["mop"],b,e)}else{for(var v=[],k=1;k{var r;if(t.symbol)r=new Pt("mo",[Zt(t.name,t.mode)]),ye.contains(kd,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new Pt("mo",zt(t.body,e));else{r=new Pt("mi",[new pr(t.name.slice(1))]);var n=new Pt("mo",[Zt("⁡","text")]);t.parentIsSupSub?r=new Pt("mrow",[r,n]):r=X1([r,n])}return r},O5={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};oe({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=n;return i.length===1&&(i=O5[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},htmlBuilder:qn,mathmlBuilder:E0});oe({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:ut(n)}},htmlBuilder:qn,mathmlBuilder:E0});var L5={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};oe({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:qn,mathmlBuilder:E0});oe({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:qn,mathmlBuilder:E0});oe({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t,n=r;return n.length===1&&(n=L5[n]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:qn,mathmlBuilder:E0});var Sd=(t,e)=>{var r,n,i=!1,s;t.type==="supsub"?(r=t.sup,n=t.sub,s=Re(t.base,"operatorname"),i=!0):s=Re(t,"operatorname");var a;if(s.body.length>0){for(var o=s.body.map(f=>{var p=f.text;return typeof p=="string"?{type:"textord",mode:f.mode,text:p}:f}),l=vt(o,e.withFont("mathrm"),!0),c=0;c{for(var r=zt(t.body,e.withFont("mathrm")),n=!0,i=0;id.toText()).join("");r=[new Q.TextNode(o)]}var l=new Q.MathNode("mi",r);l.setAttribute("mathvariant","normal");var c=new Q.MathNode("mo",[Zt("⁡","text")]);return t.parentIsSupSub?new Q.MathNode("mrow",[l,c]):Q.newDocumentFragment([l,c])};oe({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"operatorname",mode:r.mode,body:ut(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:Sd,mathmlBuilder:z5});g("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");yn({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?L.makeFragment(vt(t.body,e,!1)):L.makeSpan(["mord"],vt(t.body,e,!0),e)},mathmlBuilder(t,e){return Zr(t.body,e,!0)}});oe({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:r}=t,n=e[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(t,e){var r=Be(t.body,e.havingCrampedStyle()),n=L.makeLineSpan("overline-line",e),i=e.fontMetrics().defaultRuleThickness,s=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]},e);return L.makeSpan(["mord","overline"],[s],e)},mathmlBuilder(t,e){var r=new Q.MathNode("mo",[new Q.TextNode("‾")]);r.setAttribute("stretchy","true");var n=new Q.MathNode("mover",[Xe(t.body,e),r]);return n.setAttribute("accent","true"),n}});oe({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"phantom",mode:r.mode,body:ut(n)}},htmlBuilder:(t,e)=>{var r=vt(t.body,e.withPhantom(),!1);return L.makeFragment(r)},mathmlBuilder:(t,e)=>{var r=zt(t.body,e);return new Q.MathNode("mphantom",r)}});oe({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"hphantom",mode:r.mode,body:n}},htmlBuilder:(t,e)=>{var r=L.makeSpan([],[Be(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n{var r=zt(ut(t.body),e),n=new Q.MathNode("mphantom",r),i=new Q.MathNode("mpadded",[n]);return i.setAttribute("height","0px"),i.setAttribute("depth","0px"),i}});oe({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:(t,e)=>{var r=L.makeSpan(["inner"],[Be(t.body,e.withPhantom())]),n=L.makeSpan(["fix"],[]);return L.makeSpan(["mord","rlap"],[r,n],e)},mathmlBuilder:(t,e)=>{var r=zt(ut(t.body),e),n=new Q.MathNode("mphantom",r),i=new Q.MathNode("mpadded",[n]);return i.setAttribute("width","0px"),i}});oe({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t,n=Re(e[0],"size").value,i=e[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(t,e){var r=Be(t.body,e),n=ot(t.dy,e);return L.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){var r=new Q.MathNode("mpadded",[Xe(t.body,e)]),n=t.dy.number+t.dy.unit;return r.setAttribute("voffset",n),r}});oe({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});oe({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,r){var{parser:n}=t,i=r[0],s=Re(e[0],"size"),a=Re(e[1],"size");return{type:"rule",mode:n.mode,shift:i&&Re(i,"size").value,width:s.value,height:a.value}},htmlBuilder(t,e){var r=L.makeSpan(["mord","rule"],[],e),n=ot(t.width,e),i=ot(t.height,e),s=t.shift?ot(t.shift,e):0;return r.style.borderRightWidth=ae(n),r.style.borderTopWidth=ae(i),r.style.bottom=ae(s),r.width=n,r.height=i+s,r.depth=-s,r.maxFontSize=i*1.125*e.sizeMultiplier,r},mathmlBuilder(t,e){var r=ot(t.width,e),n=ot(t.height,e),i=t.shift?ot(t.shift,e):0,s=e.color&&e.getColor()||"black",a=new Q.MathNode("mspace");a.setAttribute("mathbackground",s),a.setAttribute("width",ae(r)),a.setAttribute("height",ae(n));var o=new Q.MathNode("mpadded",[a]);return i>=0?o.setAttribute("height",ae(i)):(o.setAttribute("height",ae(i)),o.setAttribute("depth",ae(-i))),o.setAttribute("voffset",ae(i)),o}});function Td(t,e,r){for(var n=vt(t,e,!1),i=e.sizeMultiplier/r.sizeMultiplier,s=0;s{var r=e.havingSize(t.size);return Td(t.body,r,e)};oe({type:"sizing",names:gc,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:r,funcName:n,parser:i}=t,s=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:gc.indexOf(n)+1,body:s}},htmlBuilder:F5,mathmlBuilder:(t,e)=>{var r=e.havingSize(t.size),n=zt(t.body,r),i=new Q.MathNode("mstyle",n);return i.setAttribute("mathsize",ae(r.sizeMultiplier)),i}});oe({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,r)=>{var{parser:n}=t,i=!1,s=!1,a=r[0]&&Re(r[0],"ordgroup");if(a)for(var o="",l=0;l{var r=L.makeSpan([],[Be(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var n=0;n{var r=new Q.MathNode("mpadded",[Xe(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r}});oe({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n}=t,i=r[0],s=e[0];return{type:"sqrt",mode:n.mode,body:s,index:i}},htmlBuilder(t,e){var r=Be(t.body,e.havingCrampedStyle());r.height===0&&(r.height=e.fontMetrics().xHeight),r=L.wrapFragment(r,e);var n=e.fontMetrics(),i=n.defaultRuleThickness,s=i;e.style.idr.height+r.depth+a&&(a=(a+f-r.height-r.depth)/2);var p=l.height-r.height-a-c;r.style.paddingLeft=ae(d);var b=L.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:l},{type:"kern",size:c}]},e);if(t.index){var v=e.havingStyle(xe.SCRIPTSCRIPT),k=Be(t.index,v,e),w=.6*(b.height-b.depth),M=L.makeVList({positionType:"shift",positionData:-w,children:[{type:"elem",elem:k}]},e),x=L.makeSpan(["root"],[M]);return L.makeSpan(["mord","sqrt"],[x,b],e)}else return L.makeSpan(["mord","sqrt"],[b],e)},mathmlBuilder(t,e){var{body:r,index:n}=t;return n?new Q.MathNode("mroot",[Xe(r,e),Xe(n,e)]):new Q.MathNode("msqrt",[Xe(r,e)])}});var vc={display:xe.DISPLAY,text:xe.TEXT,script:xe.SCRIPT,scriptscript:xe.SCRIPTSCRIPT};oe({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:r,funcName:n,parser:i}=t,s=i.parseExpression(!0,r),a=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:a,body:s}},htmlBuilder(t,e){var r=vc[t.style],n=e.havingStyle(r).withFont("");return Td(t.body,n,e)},mathmlBuilder(t,e){var r=vc[t.style],n=e.havingStyle(r),i=zt(t.body,n),s=new Q.MathNode("mstyle",i),a={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},o=a[t.style];return s.setAttribute("scriptlevel",o[0]),s.setAttribute("displaystyle",o[1]),s}});var $5=function(e,r){var n=e.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===xe.DISPLAY.size||n.alwaysHandleSupSub);return i?qn:null}else if(n.type==="operatorname"){var s=n.alwaysHandleSupSub&&(r.style.size===xe.DISPLAY.size||n.limits);return s?Sd:null}else{if(n.type==="accent")return ye.isCharacterBox(n.base)?ko:null;if(n.type==="horizBrace"){var a=!e.sub;return a===n.isOver?wd:null}else return null}else return null};yn({type:"supsub",htmlBuilder(t,e){var r=$5(t,e);if(r)return r(t,e);var{base:n,sup:i,sub:s}=t,a=Be(n,e),o,l,c=e.fontMetrics(),d=0,f=0,p=n&&ye.isCharacterBox(n);if(i){var b=e.havingStyle(e.style.sup());o=Be(i,b,e),p||(d=a.height-b.fontMetrics().supDrop*b.sizeMultiplier/e.sizeMultiplier)}if(s){var v=e.havingStyle(e.style.sub());l=Be(s,v,e),p||(f=a.depth+v.fontMetrics().subDrop*v.sizeMultiplier/e.sizeMultiplier)}var k;e.style===xe.DISPLAY?k=c.sup1:e.style.cramped?k=c.sup3:k=c.sup2;var w=e.sizeMultiplier,M=ae(.5/c.ptPerEm/w),x=null;if(l){var A=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(a instanceof Xt||A)&&(x=ae(-a.italic))}var N;if(o&&l){d=Math.max(d,k,o.depth+.25*c.xHeight),f=Math.max(f,c.sub2);var _=c.defaultRuleThickness,O=4*_;if(d-o.depth-(l.height-f)0&&(d+=z,f-=z)}var Y=[{type:"elem",elem:l,shift:f,marginRight:M,marginLeft:x},{type:"elem",elem:o,shift:-d,marginRight:M}];N=L.makeVList({positionType:"individualShift",children:Y},e)}else if(l){f=Math.max(f,c.sub1,l.height-.8*c.xHeight);var W=[{type:"elem",elem:l,marginLeft:x,marginRight:M}];N=L.makeVList({positionType:"shift",positionData:f,children:W},e)}else if(o)d=Math.max(d,k,o.depth+.25*c.xHeight),N=L.makeVList({positionType:"shift",positionData:-d,children:[{type:"elem",elem:o,marginRight:M}]},e);else throw new Error("supsub must have either sup or sub.");var he=ma(a,"right")||"mord";return L.makeSpan([he],[a,L.makeSpan(["msupsub"],[N])],e)},mathmlBuilder(t,e){var r=!1,n,i;t.base&&t.base.type==="horizBrace"&&(i=!!t.sup,i===t.base.isOver&&(r=!0,n=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var s=[Xe(t.base,e)];t.sub&&s.push(Xe(t.sub,e)),t.sup&&s.push(Xe(t.sup,e));var a;if(r)a=n?"mover":"munder";else if(t.sub)if(t.sup){var c=t.base;c&&c.type==="op"&&c.limits&&e.style===xe.DISPLAY||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(e.style===xe.DISPLAY||c.limits)?a="munderover":a="msubsup"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===xe.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===xe.DISPLAY)?a="munder":a="msub"}else{var o=t.base;o&&o.type==="op"&&o.limits&&(e.style===xe.DISPLAY||o.alwaysHandleSupSub)||o&&o.type==="operatorname"&&o.alwaysHandleSupSub&&(o.limits||e.style===xe.DISPLAY)?a="mover":a="msup"}return new Q.MathNode(a,s)}});yn({type:"atom",htmlBuilder(t,e){return L.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var r=new Q.MathNode("mo",[Zt(t.text,t.mode)]);if(t.family==="bin"){var n=wo(t,e);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else t.family==="punct"?r.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&r.setAttribute("stretchy","false");return r}});var Ad={mi:"italic",mn:"normal",mtext:"normal"};yn({type:"mathord",htmlBuilder(t,e){return L.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var r=new Q.MathNode("mi",[Zt(t.text,t.mode,e)]),n=wo(t,e)||"italic";return n!==Ad[r.type]&&r.setAttribute("mathvariant",n),r}});yn({type:"textord",htmlBuilder(t,e){return L.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var r=Zt(t.text,t.mode,e),n=wo(t,e)||"normal",i;return t.mode==="text"?i=new Q.MathNode("mtext",[r]):/[0-9]/.test(t.text)?i=new Q.MathNode("mn",[r]):t.text==="\\prime"?i=new Q.MathNode("mo",[r]):i=new Q.MathNode("mi",[r]),n!==Ad[i.type]&&i.setAttribute("mathvariant",n),i}});var Ls={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},zs={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};yn({type:"spacing",htmlBuilder(t,e){if(zs.hasOwnProperty(t.text)){var r=zs[t.text].className||"";if(t.mode==="text"){var n=L.makeOrd(t,e,"textord");return n.classes.push(r),n}else return L.makeSpan(["mspace",r],[L.mathsym(t.text,t.mode,e)],e)}else{if(Ls.hasOwnProperty(t.text))return L.makeSpan(["mspace",Ls[t.text]],[],e);throw new ee('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var r;if(zs.hasOwnProperty(t.text))r=new Q.MathNode("mtext",[new Q.TextNode(" ")]);else{if(Ls.hasOwnProperty(t.text))return new Q.MathNode("mspace");throw new ee('Unknown type of space "'+t.text+'"')}return r}});var bc=()=>{var t=new Q.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};yn({type:"tag",mathmlBuilder(t,e){var r=new Q.MathNode("mtable",[new Q.MathNode("mtr",[bc(),new Q.MathNode("mtd",[Zr(t.body,e)]),bc(),new Q.MathNode("mtd",[Zr(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});var yc={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},wc={"\\textbf":"textbf","\\textmd":"textmd"},B5={"\\textit":"textit","\\textup":"textup"},xc=(t,e)=>{var r=t.font;if(r){if(yc[r])return e.withTextFontFamily(yc[r]);if(wc[r])return e.withTextFontWeight(wc[r]);if(r==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(B5[r])};oe({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"text",mode:r.mode,body:ut(i),font:n}},htmlBuilder(t,e){var r=xc(t,e),n=vt(t.body,r,!0);return L.makeSpan(["mord","text"],n,r)},mathmlBuilder(t,e){var r=xc(t,e);return Zr(t.body,r)}});oe({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"underline",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Be(t.body,e),n=L.makeLineSpan("underline-line",e),i=e.fontMetrics().defaultRuleThickness,s=L.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]},e);return L.makeSpan(["mord","underline"],[s],e)},mathmlBuilder(t,e){var r=new Q.MathNode("mo",[new Q.TextNode("‾")]);r.setAttribute("stretchy","true");var n=new Q.MathNode("munder",[Xe(t.body,e),r]);return n.setAttribute("accentunder","true"),n}});oe({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"vcenter",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Be(t.body,e),n=e.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return L.makeVList({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){return new Q.MathNode("mpadded",[Xe(t.body,e)],["vcenter"])}});oe({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,r){throw new ee("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var r=kc(t),n=[],i=e.havingStyle(e.style.text()),s=0;st.body.replace(/ /g,t.star?"␣":" "),Ur=K1,Ed=`[ \r - ]`,P5="\\\\[a-zA-Z@]+",H5="\\\\[^\uD800-\uDFFF]",q5="("+P5+")"+Ed+"*",j5=`\\\\( -|[ \r ]+ -?)[ \r ]*`,ya="[̀-ͯ]",U5=new RegExp(ya+"+$"),V5="("+Ed+"+)|"+(j5+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(ya+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(ya+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+q5)+("|"+H5+")");class Sc{constructor(e,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=r,this.tokenRegex=new RegExp(V5,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,r){this.catcodes[e]=r}lex(){var e=this.input,r=this.tokenRegex.lastIndex;if(r===e.length)return new Yt("EOF",new $t(this,r,r));var n=this.tokenRegex.exec(e);if(n===null||n.index!==r)throw new ee("Unexpected character: '"+e[r]+"'",new Yt(e[r],new $t(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var s=e.indexOf(` -`,this.tokenRegex.lastIndex);return s===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}return new Yt(i,new $t(this,r,this.tokenRegex.lastIndex))}}class W5{constructor(e,r){e===void 0&&(e={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new ee("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var r in e)e.hasOwnProperty(r)&&(e[r]==null?delete this.current[r]:this.current[r]=e[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][e]=r)}else{var s=this.undefStack[this.undefStack.length-1];s&&!s.hasOwnProperty(e)&&(s[e]=this.current[e])}r==null?delete this.current[e]:this.current[e]=r}}var G5=md;g("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});g("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});g("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});g("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});g("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var r=t.future();return e[0].length===1&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});g("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");g("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var Tc={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};g("\\char",function(t){var e=t.popToken(),r,n="";if(e.text==="'")r=8,e=t.popToken();else if(e.text==='"')r=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")n=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new ee("\\char` missing argument");n=e.text.charCodeAt(0)}else r=10;if(r){if(n=Tc[e.text],n==null||n>=r)throw new ee("Invalid base-"+r+" digit "+e.text);for(var i;(i=Tc[t.future().text])!=null&&i{var i=t.consumeArg().tokens;if(i.length!==1)throw new ee("\\newcommand's first argument must be a macro name");var s=i[0].text,a=t.isDefined(s);if(a&&!e)throw new ee("\\newcommand{"+s+"} attempting to redefine "+(s+"; use \\renewcommand"));if(!a&&!r)throw new ee("\\renewcommand{"+s+"} when command "+s+" does not yet exist; use \\newcommand");var o=0;if(i=t.consumeArg().tokens,i.length===1&&i[0].text==="["){for(var l="",c=t.expandNextToken();c.text!=="]"&&c.text!=="EOF";)l+=c.text,c=t.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new ee("Invalid number of arguments: "+l);o=parseInt(l),i=t.consumeArg().tokens}return a&&n||t.macros.set(s,{tokens:i,numArgs:o}),""};g("\\newcommand",t=>Do(t,!1,!0,!1));g("\\renewcommand",t=>Do(t,!0,!1,!1));g("\\providecommand",t=>Do(t,!0,!0,!0));g("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(r=>r.text).join("")),""});g("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(r=>r.text).join("")),""});g("\\show",t=>{var e=t.popToken(),r=e.text;return console.log(e,t.macros.get(r),Ur[r],Qe.math[r],Qe.text[r]),""});g("\\bgroup","{");g("\\egroup","}");g("~","\\nobreakspace");g("\\lq","`");g("\\rq","'");g("\\aa","\\r a");g("\\AA","\\r A");g("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");g("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");g("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");g("ℬ","\\mathscr{B}");g("ℰ","\\mathscr{E}");g("ℱ","\\mathscr{F}");g("ℋ","\\mathscr{H}");g("ℐ","\\mathscr{I}");g("ℒ","\\mathscr{L}");g("ℳ","\\mathscr{M}");g("ℛ","\\mathscr{R}");g("ℭ","\\mathfrak{C}");g("ℌ","\\mathfrak{H}");g("ℨ","\\mathfrak{Z}");g("\\Bbbk","\\Bbb{k}");g("·","\\cdotp");g("\\llap","\\mathllap{\\textrm{#1}}");g("\\rlap","\\mathrlap{\\textrm{#1}}");g("\\clap","\\mathclap{\\textrm{#1}}");g("\\mathstrut","\\vphantom{(}");g("\\underbar","\\underline{\\text{#1}}");g("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');g("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");g("\\ne","\\neq");g("≠","\\neq");g("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");g("∉","\\notin");g("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");g("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");g("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");g("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");g("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");g("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");g("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");g("⟂","\\perp");g("‼","\\mathclose{!\\mkern-0.8mu!}");g("∌","\\notni");g("⌜","\\ulcorner");g("⌝","\\urcorner");g("⌞","\\llcorner");g("⌟","\\lrcorner");g("©","\\copyright");g("®","\\textregistered");g("️","\\textregistered");g("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');g("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');g("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');g("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');g("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");g("⋮","\\vdots");g("\\varGamma","\\mathit{\\Gamma}");g("\\varDelta","\\mathit{\\Delta}");g("\\varTheta","\\mathit{\\Theta}");g("\\varLambda","\\mathit{\\Lambda}");g("\\varXi","\\mathit{\\Xi}");g("\\varPi","\\mathit{\\Pi}");g("\\varSigma","\\mathit{\\Sigma}");g("\\varUpsilon","\\mathit{\\Upsilon}");g("\\varPhi","\\mathit{\\Phi}");g("\\varPsi","\\mathit{\\Psi}");g("\\varOmega","\\mathit{\\Omega}");g("\\substack","\\begin{subarray}{c}#1\\end{subarray}");g("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");g("\\boxed","\\fbox{$\\displaystyle{#1}$}");g("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");g("\\implies","\\DOTSB\\;\\Longrightarrow\\;");g("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");g("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");g("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var Ac={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};g("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in Ac?e=Ac[r]:(r.slice(0,4)==="\\not"||r in Qe.math&&ye.contains(["bin","rel"],Qe.math[r].group))&&(e="\\dotsb"),e});var Ro={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};g("\\dotso",function(t){var e=t.future().text;return e in Ro?"\\ldots\\,":"\\ldots"});g("\\dotsc",function(t){var e=t.future().text;return e in Ro&&e!==","?"\\ldots\\,":"\\ldots"});g("\\cdots",function(t){var e=t.future().text;return e in Ro?"\\@cdots\\,":"\\@cdots"});g("\\dotsb","\\cdots");g("\\dotsm","\\cdots");g("\\dotsi","\\!\\cdots");g("\\dotsx","\\ldots\\,");g("\\DOTSI","\\relax");g("\\DOTSB","\\relax");g("\\DOTSX","\\relax");g("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");g("\\,","\\tmspace+{3mu}{.1667em}");g("\\thinspace","\\,");g("\\>","\\mskip{4mu}");g("\\:","\\tmspace+{4mu}{.2222em}");g("\\medspace","\\:");g("\\;","\\tmspace+{5mu}{.2777em}");g("\\thickspace","\\;");g("\\!","\\tmspace-{3mu}{.1667em}");g("\\negthinspace","\\!");g("\\negmedspace","\\tmspace-{4mu}{.2222em}");g("\\negthickspace","\\tmspace-{5mu}{.277em}");g("\\enspace","\\kern.5em ");g("\\enskip","\\hskip.5em\\relax");g("\\quad","\\hskip1em\\relax");g("\\qquad","\\hskip2em\\relax");g("\\tag","\\@ifstar\\tag@literal\\tag@paren");g("\\tag@paren","\\tag@literal{({#1})}");g("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new ee("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});g("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");g("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");g("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");g("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");g("\\newline","\\\\\\relax");g("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Cd=ae(fr["Main-Regular"]["T".charCodeAt(0)][1]-.7*fr["Main-Regular"]["A".charCodeAt(0)][1]);g("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+Cd+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");g("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+Cd+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");g("\\hspace","\\@ifstar\\@hspacer\\@hspace");g("\\@hspace","\\hskip #1\\relax");g("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");g("\\ordinarycolon",":");g("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");g("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');g("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');g("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');g("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');g("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');g("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');g("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');g("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');g("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');g("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');g("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');g("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');g("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');g("∷","\\dblcolon");g("∹","\\eqcolon");g("≔","\\coloneqq");g("≕","\\eqqcolon");g("⩴","\\Coloneqq");g("\\ratio","\\vcentcolon");g("\\coloncolon","\\dblcolon");g("\\colonequals","\\coloneqq");g("\\coloncolonequals","\\Coloneqq");g("\\equalscolon","\\eqqcolon");g("\\equalscoloncolon","\\Eqqcolon");g("\\colonminus","\\coloneq");g("\\coloncolonminus","\\Coloneq");g("\\minuscolon","\\eqcolon");g("\\minuscoloncolon","\\Eqcolon");g("\\coloncolonapprox","\\Colonapprox");g("\\coloncolonsim","\\Colonsim");g("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");g("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");g("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");g("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");g("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");g("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");g("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");g("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");g("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");g("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");g("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");g("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");g("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");g("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");g("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");g("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");g("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");g("\\nleqq","\\html@mathml{\\@nleqq}{≰}");g("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");g("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");g("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");g("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");g("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");g("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");g("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");g("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");g("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");g("\\imath","\\html@mathml{\\@imath}{ı}");g("\\jmath","\\html@mathml{\\@jmath}{ȷ}");g("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");g("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");g("⟦","\\llbracket");g("⟧","\\rrbracket");g("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");g("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");g("⦃","\\lBrace");g("⦄","\\rBrace");g("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");g("⦵","\\minuso");g("\\darr","\\downarrow");g("\\dArr","\\Downarrow");g("\\Darr","\\Downarrow");g("\\lang","\\langle");g("\\rang","\\rangle");g("\\uarr","\\uparrow");g("\\uArr","\\Uparrow");g("\\Uarr","\\Uparrow");g("\\N","\\mathbb{N}");g("\\R","\\mathbb{R}");g("\\Z","\\mathbb{Z}");g("\\alef","\\aleph");g("\\alefsym","\\aleph");g("\\Alpha","\\mathrm{A}");g("\\Beta","\\mathrm{B}");g("\\bull","\\bullet");g("\\Chi","\\mathrm{X}");g("\\clubs","\\clubsuit");g("\\cnums","\\mathbb{C}");g("\\Complex","\\mathbb{C}");g("\\Dagger","\\ddagger");g("\\diamonds","\\diamondsuit");g("\\empty","\\emptyset");g("\\Epsilon","\\mathrm{E}");g("\\Eta","\\mathrm{H}");g("\\exist","\\exists");g("\\harr","\\leftrightarrow");g("\\hArr","\\Leftrightarrow");g("\\Harr","\\Leftrightarrow");g("\\hearts","\\heartsuit");g("\\image","\\Im");g("\\infin","\\infty");g("\\Iota","\\mathrm{I}");g("\\isin","\\in");g("\\Kappa","\\mathrm{K}");g("\\larr","\\leftarrow");g("\\lArr","\\Leftarrow");g("\\Larr","\\Leftarrow");g("\\lrarr","\\leftrightarrow");g("\\lrArr","\\Leftrightarrow");g("\\Lrarr","\\Leftrightarrow");g("\\Mu","\\mathrm{M}");g("\\natnums","\\mathbb{N}");g("\\Nu","\\mathrm{N}");g("\\Omicron","\\mathrm{O}");g("\\plusmn","\\pm");g("\\rarr","\\rightarrow");g("\\rArr","\\Rightarrow");g("\\Rarr","\\Rightarrow");g("\\real","\\Re");g("\\reals","\\mathbb{R}");g("\\Reals","\\mathbb{R}");g("\\Rho","\\mathrm{P}");g("\\sdot","\\cdot");g("\\sect","\\S");g("\\spades","\\spadesuit");g("\\sub","\\subset");g("\\sube","\\subseteq");g("\\supe","\\supseteq");g("\\Tau","\\mathrm{T}");g("\\thetasym","\\vartheta");g("\\weierp","\\wp");g("\\Zeta","\\mathrm{Z}");g("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");g("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");g("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");g("\\bra","\\mathinner{\\langle{#1}|}");g("\\ket","\\mathinner{|{#1}\\rangle}");g("\\braket","\\mathinner{\\langle{#1}\\rangle}");g("\\Bra","\\left\\langle#1\\right|");g("\\Ket","\\left|#1\\right\\rangle");var Md=t=>e=>{var r=e.consumeArg().tokens,n=e.consumeArg().tokens,i=e.consumeArg().tokens,s=e.consumeArg().tokens,a=e.macros.get("|"),o=e.macros.get("\\|");e.macros.beginGroup();var l=f=>p=>{t&&(p.macros.set("|",a),i.length&&p.macros.set("\\|",o));var b=f;if(!f&&i.length){var v=p.future();v.text==="|"&&(p.popToken(),b=!0)}return{tokens:b?i:n,numArgs:0}};e.macros.set("|",l(!1)),i.length&&e.macros.set("\\|",l(!0));var c=e.consumeArg().tokens,d=e.expandTokens([...s,...c,...r]);return e.macros.endGroup(),{tokens:d.reverse(),numArgs:0}};g("\\bra@ket",Md(!1));g("\\bra@set",Md(!0));g("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");g("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");g("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");g("\\angln","{\\angl n}");g("\\blue","\\textcolor{##6495ed}{#1}");g("\\orange","\\textcolor{##ffa500}{#1}");g("\\pink","\\textcolor{##ff00af}{#1}");g("\\red","\\textcolor{##df0030}{#1}");g("\\green","\\textcolor{##28ae7b}{#1}");g("\\gray","\\textcolor{gray}{#1}");g("\\purple","\\textcolor{##9d38bd}{#1}");g("\\blueA","\\textcolor{##ccfaff}{#1}");g("\\blueB","\\textcolor{##80f6ff}{#1}");g("\\blueC","\\textcolor{##63d9ea}{#1}");g("\\blueD","\\textcolor{##11accd}{#1}");g("\\blueE","\\textcolor{##0c7f99}{#1}");g("\\tealA","\\textcolor{##94fff5}{#1}");g("\\tealB","\\textcolor{##26edd5}{#1}");g("\\tealC","\\textcolor{##01d1c1}{#1}");g("\\tealD","\\textcolor{##01a995}{#1}");g("\\tealE","\\textcolor{##208170}{#1}");g("\\greenA","\\textcolor{##b6ffb0}{#1}");g("\\greenB","\\textcolor{##8af281}{#1}");g("\\greenC","\\textcolor{##74cf70}{#1}");g("\\greenD","\\textcolor{##1fab54}{#1}");g("\\greenE","\\textcolor{##0d923f}{#1}");g("\\goldA","\\textcolor{##ffd0a9}{#1}");g("\\goldB","\\textcolor{##ffbb71}{#1}");g("\\goldC","\\textcolor{##ff9c39}{#1}");g("\\goldD","\\textcolor{##e07d10}{#1}");g("\\goldE","\\textcolor{##a75a05}{#1}");g("\\redA","\\textcolor{##fca9a9}{#1}");g("\\redB","\\textcolor{##ff8482}{#1}");g("\\redC","\\textcolor{##f9685d}{#1}");g("\\redD","\\textcolor{##e84d39}{#1}");g("\\redE","\\textcolor{##bc2612}{#1}");g("\\maroonA","\\textcolor{##ffbde0}{#1}");g("\\maroonB","\\textcolor{##ff92c6}{#1}");g("\\maroonC","\\textcolor{##ed5fa6}{#1}");g("\\maroonD","\\textcolor{##ca337c}{#1}");g("\\maroonE","\\textcolor{##9e034e}{#1}");g("\\purpleA","\\textcolor{##ddd7ff}{#1}");g("\\purpleB","\\textcolor{##c6b9fc}{#1}");g("\\purpleC","\\textcolor{##aa87ff}{#1}");g("\\purpleD","\\textcolor{##7854ab}{#1}");g("\\purpleE","\\textcolor{##543b78}{#1}");g("\\mintA","\\textcolor{##f5f9e8}{#1}");g("\\mintB","\\textcolor{##edf2df}{#1}");g("\\mintC","\\textcolor{##e0e5cc}{#1}");g("\\grayA","\\textcolor{##f6f7f7}{#1}");g("\\grayB","\\textcolor{##f0f1f2}{#1}");g("\\grayC","\\textcolor{##e3e5e6}{#1}");g("\\grayD","\\textcolor{##d6d8da}{#1}");g("\\grayE","\\textcolor{##babec2}{#1}");g("\\grayF","\\textcolor{##888d93}{#1}");g("\\grayG","\\textcolor{##626569}{#1}");g("\\grayH","\\textcolor{##3b3e40}{#1}");g("\\grayI","\\textcolor{##21242c}{#1}");g("\\kaBlue","\\textcolor{##314453}{#1}");g("\\kaGreen","\\textcolor{##71B307}{#1}");var Nd={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class K5{constructor(e,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(e),this.macros=new W5(G5,r.macros),this.mode=n,this.stack=[]}feed(e){this.lexer=new Sc(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var r,n,i;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new Yt("EOF",n.loc)),this.pushTokens(i),r.range(n,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var r=[],n=e&&e.length>0;n||this.consumeSpaces();var i=this.future(),s,a=0,o=0;do{if(s=this.popToken(),r.push(s),s.text==="{")++a;else if(s.text==="}"){if(--a,a===-1)throw new ee("Extra }",s)}else if(s.text==="EOF")throw new ee("Unexpected end of input in a macro argument, expected '"+(e&&n?e[o]:"}")+"'",s);if(e&&n)if((a===0||a===1&&e[o]==="{")&&s.text===e[o]){if(++o,o===e.length){r.splice(-o,o);break}}else o=0}while(a!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:s}}consumeArgs(e,r){if(r){if(r.length!==e+1)throw new ee("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new ee("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||e&&i.unexpandable){if(e&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new ee("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var s=i.tokens,a=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){s=s.slice();for(var o=s.length-1;o>=0;--o){var l=s[o];if(l.text==="#"){if(o===0)throw new ee("Incomplete placeholder at end of macro body",l);if(l=s[--o],l.text==="#")s.splice(o+1,1);else if(/^[1-9]$/.test(l.text))s.splice(o,2,...a[+l.text-1]);else throw new ee("Not a valid argument number",l)}}}return this.pushTokens(s),s.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Yt(e)]):void 0}expandTokens(e){var r=[],n=this.stack.length;for(this.pushTokens(e);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(e){var r=this.expandMacro(e);return r&&r.map(n=>n.text).join("")}_getExpansion(e){var r=this.macros.get(e);if(r==null)return r;if(e.length===1){var n=this.lexer.catcodes[e];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var s=0;if(i.indexOf("#")!==-1)for(var a=i.replace(/##/g,"");a.indexOf("#"+(s+1))!==-1;)++s;for(var o=new Sc(i,this.settings),l=[],c=o.lex();c.text!=="EOF";)l.push(c),c=o.lex();l.reverse();var d={tokens:l,numArgs:s};return d}return i}isDefined(e){return this.macros.has(e)||Ur.hasOwnProperty(e)||Qe.math.hasOwnProperty(e)||Qe.text.hasOwnProperty(e)||Nd.hasOwnProperty(e)}isExpandable(e){var r=this.macros.get(e);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:Ur.hasOwnProperty(e)&&!Ur[e].primitive}}var Ec=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,G0=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),Fs={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},Cc={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class ss{constructor(e,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new K5(e,r,this.mode),this.settings=r,this.leftrightDepth=0}expect(e,r){if(r===void 0&&(r=!0),this.fetch().text!==e)throw new ee("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var r=this.nextToken;this.consume(),this.gullet.pushToken(new Yt("}")),this.gullet.pushTokens(e);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(e,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(ss.endOfExpression.indexOf(i.text)!==-1||r&&i.text===r||e&&Ur[i.text]&&Ur[i.text].infix)break;var s=this.parseAtom(r);if(s){if(s.type==="internal")continue}else break;n.push(s)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(e){for(var r=-1,n,i=0;i=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',e);var o=Qe[this.mode][r].group,l=$t.range(e),c;if(z6.hasOwnProperty(o)){var d=o;c={type:"atom",mode:this.mode,family:d,loc:l,text:r}}else c={type:o,mode:this.mode,loc:l,text:r};a=c}else if(r.charCodeAt(0)>=128)this.settings.strict&&($1(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),e)),a={type:"textord",mode:"text",loc:$t.range(e),text:r};else return null;if(this.consume(),s)for(var f=0;f|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));Prism.languages.js=Prism.languages.javascript;(function(t){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;t.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+e.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},t.languages.css.atrule.inside.rest=t.languages.css;var r=t.languages.markup;r&&(r.tag.addInlined("style","css"),r.tag.addAttribute("style","css"))})(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};Prism.languages.webmanifest=Prism.languages.json;Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/};Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python;Prism.languages.py=Prism.languages.python;Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/};qe.setOptions({breaks:!0,gfm:!0,tables:!0,sanitize:!1});const wa=t=>{if(!t||typeof t!="string")return"";try{const e=e7(t),r=qe.parse(e);return t7(r)}catch(e){return console.error("Markdown渲染失败:",e),`
    渲染失败: ${e.message}
    `}},e7=t=>t.replace(/\$\$([\s\S]*?)\$\$/g,(e,r)=>{try{return`
    ${Mc.renderToString(r.trim(),{displayMode:!0,throwOnError:!1})}
    `}catch(n){return console.warn("数学公式渲染失败:",n),`
    数学公式错误: ${r}
    `}}).replace(/\$([^$\n]+?)\$/g,(e,r)=>{if(r.includes("\\")||r.includes("{")||r.includes("}")||r.includes("^")||r.includes("_")||r.includes("=")||r.includes("+")||r.includes("-")||r.includes("*")||r.includes("/")||r.includes("(")||r.includes(")"))try{return`${Mc.renderToString(r.trim(),{displayMode:!1,throwOnError:!1})}`}catch(n){return console.warn("数学公式渲染失败:",n),`数学公式错误: ${r}`}return e}),t7=t=>{let e=t.replace(//g,'
    ').replace(/
    {const s=i.className.match(/language-(\w+)/);if(s)try{i.innerHTML=Gl.highlight(i.textContent,Gl.languages[s[1]],s[1])}catch(a){console.warn("语法高亮失败:",a)}}),r.innerHTML},r7=t=>{if(!t||typeof t!="string")return!1;const e=t.split(`
    -`);let r=!1,n=!1;for(const a of e){const o=a.trim();o.includes("|")&&o.split("|").length>=3&&(r=!0),o.includes("|")&&o.includes("-")&&/^[\s\|\-\:]+$/.test(o)&&(n=!0)}const i=(t.match(/\|/g)||[]).length,s=i>=6;return r&&n||r&&s||r&&i>=4},n7=t=>!t||typeof t!="string"?!1:r7(t)?!0:[/#{1,6}\s+/,/\*\*.*?\*\*/,/\*.*?\*/,/`.*?`/,/```[\s\S]*?```/,/^\s*[-*+]\s+/m,/^\s*\d+\.\s+/m,/\[.*?\]\(.*?\)/,/!\[.*?\]\(.*?\)/,/\$\$.*?\$\$/,/\$.*?\$/].some(r=>r.test(t)),K0=t=>!t||typeof t!="string"?t||"":n7(t)||t.includes("|")?wa(t):t;const Oo=(t,e)=>{const r=t.__vccOpts||t;for(const[n,i]of e)r[n]=i;return r},i7={class:"mindmap-container"},s7={class:"zoom-level"},a7={key:0,class:"welcome-page"},o7={class:"ai-input-content"},l7=["disabled","onKeydown"],c7={class:"ai-input-actions"},u7=["disabled"],d7=["disabled"],h7={key:0},f7={key:1},p7={key:3,class:"save-controls"},m7={__name:"MindMap",setup(t,{expose:e}){const r=ze(null),n=ze(null),i=ze(null),s=ze({}),a=ze({}),o=ze(null),l=ze(1),c=ze(!0),d=ze(!1),f=ze(!1),p=ze(null),b=ze(""),v=ze(!1);ze(new Map),ze(!1),ze({x:0,y:0}),ze(null);const k=()=>{c.value=!0,r.value&&(r.value.innerHTML=""),n.value&&(n.value=null)},w=()=>{c.value=!1},M=()=>{c.value=!1},x=()=>{if(!n.value||!r.value)return null;try{const y=r.value.querySelector("canvas");if(y)return{transform:y.style.transform}}catch(y){console.warn("保存位置失败:",y)}return null},A=y=>{if(!(!y||!r.value))try{const E=r.value.querySelector("canvas");E&&y.transform&&(E.style.transform=y.transform)}catch(E){console.warn("恢复位置失败:",E)}},N=async(y,E=!1)=>{try{const I=E?x():null;console.log("🔍 loadMindmapData 被调用,数据:",y),console.log("🔍 数据字段:",Object.keys(y||{})),y&&y.id?(o.value=y.id,console.log("🔍 设置当前思维导图ID (data.id):",y.id)):y&&y.mindmapId?(o.value=y.mindmapId,console.log("🔍 设置当前思维导图ID (data.mindmapId):",y.mindmapId)):y&&y.nodeData&&y.nodeData.mindmapId?(o.value=y.nodeData.mindmapId,console.log("🔍 设置当前思维导图ID (data.nodeData.mindmapId):",y.nodeData.mindmapId)):y&&y.nodeData&&y.nodeData.mindmap_id?(o.value=y.nodeData.mindmap_id,console.log("🔍 设置当前思维导图ID (data.nodeData.mindmap_id):",y.nodeData.mindmap_id)):(console.warn("⚠️ 数据中没有找到 id 或 mindmapId 字段"),console.log("🔍 可用的字段:",Object.keys(y||{})),y&&y.nodeData&&console.log("🔍 nodeData字段:",Object.keys(y.nodeData||{}))),console.log("🔍 设置后的 currentMindmapId.value:",o.value),w(),await X0(),r.value||(console.warn("⚠️ 思维导图容器未准备好,等待DOM更新..."),await new Promise(H=>setTimeout(H,100)),r.value||console.warn("⚠️ 思维导图容器仍未准备好,尝试继续执行..."));try{if(r.value){console.log("🔍 创建Mind Elixir实例,设置markdown函数"),n.value=new bt({el:r.value,direction:bt.RIGHT,draggable:!0,contextMenu:!0,toolBar:!0,nodeMenu:!1,keypress:!0,autoCenter:!1,infinite:!0,maxScale:5,minScale:.1,markdown:(U,ne)=>{if(console.log("🔍 Mind Elixir markdown函数被调用:",U.substring(0,100)+"..."),U.includes("|")||U.includes("**")||U.includes("`")||U.includes("#")){console.log("🎨 检测到markdown内容,开始渲染:",U.substring(0,100)+"...");const B=K0(U);return console.log("🎨 渲染结果:",B.substring(0,200)+"..."),B}return console.log("🔍 内容不包含markdown语法,返回原文本"),U}}),console.log("✅ Mind Elixir实例创建完成,markdown函数已设置"),console.log("🔍 初始化Mind Elixir数据:",y);const H=n.value.init(y);console.log("✅ Mind Elixir实例创建成功,初始化结果:",H)}else{console.warn("⚠️ 容器未准备好,延迟创建Mind Elixir实例..."),setTimeout(()=>{if(r.value){n.value=new bt({el:r.value,direction:bt.RIGHT,draggable:!0,contextMenu:!0,toolBar:!0,nodeMenu:!1,keypress:!0,autoCenter:!1,infinite:!0,maxScale:5,minScale:.1,markdown:(U,ne)=>U.includes("|")||U.includes("**")||U.includes("`")||U.includes("#")?K0(U):U});const H=n.value.init(y);console.log("✅ Mind Elixir实例延迟创建成功"),setTimeout(()=>{E&&I?A(I):O(),K(),_()},300)}},200);return}}catch{setTimeout(()=>{try{if(r.value){n.value=new bt({el:r.value,direction:bt.RIGHT,draggable:!0,contextMenu:!0,toolBar:!0,nodeMenu:!1,keypress:!0,autoCenter:!1,infinite:!0,maxScale:5,minScale:.1,markdown:(ne,B)=>ne.includes("|")||ne.includes("**")||ne.includes("`")||ne.includes("#")?K0(ne):ne});const U=n.value.init(y);setTimeout(()=>{E&&I?A(I):O(),K(),_()},300)}}catch(U){console.error("❌ Mind Elixir实例重试创建失败:",U)}},500);return}setTimeout(()=>{E&&I?A(I):O(),w(),K(),setTimeout(E&&I?()=>{A(I),_()}:()=>{O(),_()},500)},100)}catch{}},_=()=>{n.value&&r.value&&setTimeout(()=>{r.value.querySelectorAll("me-tpc, .topic, [data-id]").forEach((E,I)=>{var B;const H=E.getAttribute("data-id")||E.id||E.getAttribute("nodeid")||((B=E.querySelector("[data-id]"))==null?void 0:B.getAttribute("data-id"));if(!H)return;const U=(be,ue)=>{for(const ke of be){if(ke.id===ue)return ke;if(ke.children){const Fe=U(ke.children,ue);if(Fe)return Fe}}return null},ne=U(n.value.data.nodeData,H);if(ne&&ne.data&&ne.data.des){let be=E.querySelector(".node-description");be||(be=document.createElement("div"),be.className="node-description",be.style.cssText=`
    -            font-size: 11px;
    -            color: #666;
    -            margin-top: 6px;
    -            padding: 6px 8px;
    -            background: rgba(0, 0, 0, 0.03);
    -            border-radius: 4px;
    -            max-width: 250px;
    -            word-wrap: break-word;
    -            line-height: 1.3;
    -            border-left: 3px solid #e0e0e0;
    -            display: block;
    -          `,E.appendChild(be));const ue=ne.data.des;ue.length>150?(be.textContent=ue.substring(0,150)+"...",be.title=ue):be.textContent=ue}})},1e3)},O=()=>{try{const y=r.value;if(!y)return;const E=y.querySelector(".map-canvas");if(!E)return;const I=E.querySelectorAll("me-tpc");if(I.length===0)return;let H=1/0,U=-1/0,ne=1/0,B=-1/0;I.forEach(C0=>{const wn=C0.getBoundingClientRect(),M0=y.getBoundingClientRect(),Lo=wn.left-M0.left,zo=wn.top-M0.top;H=Math.min(H,Lo),U=Math.max(U,Lo+wn.width),ne=Math.min(ne,zo),B=Math.max(B,zo+wn.height)});const be=(H+U)/2,ue=(ne+B)/2,ke=y.clientWidth/2,Fe=y.clientHeight/2,_e=ke-be,et=Fe-ue;E.style.transform=`translate(${_e}px, ${et}px)`,E.style.opacity="1",E.style.transition="opacity 0.3s ease";const mt=100,It=Math.max(_e,mt),yr=Math.max(et,mt);E.style.transform=`translate(${It}px, ${yr}px)`,E.style.opacity="1",E.style.visibility="visible"}catch{}},z=()=>{if(!i.value)return;if(n.value&&n.value.getNodeById)try{const E=n.value.getNodeById(i.value.id);if(E){const I=E.getBoundingClientRect(),H=r.value.getBoundingClientRect(),U=I.left-H.left+I.width/2,ne=I.bottom-H.top+10;s.value={left:`${U}px`,top:`${ne}px`};return}}catch{}let y=document.querySelector(`[data-id="${i.value.id}"]`);if(y||(y=document.querySelector(`.topic[data-id="${i.value.id}"]`)),y||(y=document.querySelector(`[data-node-id="${i.value.id}"]`)),y||(y=document.querySelector(`[data-nodeid="me${i.value.id}"]`)),!y){const E=document.querySelectorAll("me-tpc");for(const I of E)if(I.getAttribute("data-nodeid")===`me${i.value.id}`){y=I;break}}if(!y){const E=document.querySelectorAll(".topic");for(const I of E)if(I.textContent.trim()===i.value.topic){y=I;break}}if(!y){const E=document.querySelectorAll("*");for(const I of E)if(I.textContent&&I.textContent.trim()===i.value.topic){if(I.tagName==="ME-TPC"){y=I;break}if(I.closest("me-tpc")){y=I;break}if(I.classList.contains("topic")||I.closest(".topic")){y=I.closest(".topic")||I;break}}}if(y){const E=y.getBoundingClientRect(),I=r.value.getBoundingClientRect(),H=E.left-I.left+E.width/2,U=E.bottom-I.top+10;s.value={left:`${H}px`,top:`${U}px`}}else s.value={left:"50%",top:"50%",transform:"translate(-50%, -50%)"}},Y=async()=>{i.value&&(await Ce(i.value),i.value=null)},W=async()=>{i.value&&(await me(i.value),i.value=null)},he=async()=>{i.value&&(await de(i.value),i.value=null)},pe=async()=>{if(!i.value)return;console.log("Ask AI for node:",i.value);const y=parseFloat(s.value.left)||0,E=parseFloat(s.value.top)||0;a.value={left:`${y}px`,top:`${E+60}px`,transform:"translateX(-50%)"},f.value=!0,p.value=i.value},Ae=()=>{f.value=!1,p.value=null,b.value="",v.value=!1,i.value=null},st=y=>{if(!y)return"";const E=[];return y.parent&&y.parent.topic&&E.push(`父节点: ${y.parent.topic}`),y.parent&&y.parent.parent&&y.parent.parent.topic&&E.push(`祖父节点: ${y.parent.parent.topic}`),E.join(" | ")},Ze=y=>{y.ctrlKey||y.metaKey||(y.preventDefault(),tt())},tt=async()=>{if(!(!b.value.trim()||!p.value||v.value)){v.value=!0;try{const y="你是一个专业的思维导图分析助手。请根据用户的问题和提供的节点信息,给出专业、有用的回答。",E=`节点信息:
    -当前节点:${p.value.topic}
    -上下文:${st(p.value)}
    -
    -用户问题:${b.value}
    -
    -请给出详细的回答,回答应该:
    -1. 直接回答用户的问题
    -2. 提供具体的建议或改进方案
    -3. 保持专业和有用的语调
    -4. 回答长度适中,便于在思维导图中展示`;console.log("发送AI请求:",{systemPrompt:y,userPrompt:E});const I=await fetch("http://127.0.0.1:8000/api/ai/generate-stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({system_prompt:y,user_prompt:E,model:"glm-4.5",base_url:"https://open.bigmodel.cn/api/paas/v4/",api_key:"ce39bdd4fcf34ec0aec75072bc9ff988.hAp7HZTVUwy7vImn"})});if(!I.ok)throw new Error(`HTTP error! status: ${I.status}`);let H="";const U=I.body.getReader(),ne=new TextDecoder;let B="";for(;;){const{done:be,value:ue}=await U.read();if(be)break;B+=ne.decode(ue,{stream:!0});const ke=B.split(`
    -`);B=ke.pop()||"";for(const Fe of ke)if(Fe.startsWith("data: "))try{const _e=JSON.parse(Fe.slice(6));if(_e.type==="chunk")H+=_e.content;else if(_e.type==="error")throw new Error(_e.content)}catch(_e){console.warn("解析流式数据失败:",_e)}}await Ee(p.value,b.value,H),Ae()}catch(y){console.error("AI请求失败:",y),alert("AI请求失败,请稍后重试")}finally{v.value=!1}}},$e=y=>y.replace(/^### (.*$)/gim,"📋 $1").replace(/^## (.*$)/gim,"📌 $1").replace(/^# (.*$)/gim,"🎯 $1").replace(/\*\*(.*?)\*\*/g,(E,I)=>{if(I.includes(":")){const H=I.split(":");if(H.length>1)return`【${H[0]}】: ${H.slice(1).join(":")}`}return`【${I}】`}).replace(/\*(.*?)\*/g,"《$1》").replace(/^- (.*$)/gim,"  • $1").replace(/^\d+\. (.*$)/gim,"  $&").replace(/```(.*?)```/gims,"💻 $1").replace(/`(.*?)`/g,"「$1」").replace(/\[([^\]]+)\]\([^)]+\)/g,"🔗 $1").replace(/\n\n/g,`
    -`).replace(/\n/g,`
    -  `),Oe=(y,E,I)=>{const H=y.split(`
    -`);let U=I,ne=[];for(let B=0;B0){const It=$e(et.join(`
    -`));_e.topic=_e.topic+`
    -
    -`+It}E.children.push(_e),B=mt-1}else ue&&ne.push(ue)}if(ne.length>0){const B=ne.join(`
    -`).trim();B&&B.split(`
    -
    -`).filter(ue=>ue.trim()).forEach(ue=>{const ke=$e(ue.trim());if(ke){const Fe={id:`node_${U++}`,topic:ke,children:[],level:(E.level||0)+1,data:{}};E.children.push(Fe)}})}return{nodeCounter:U}},ve=y=>{const E=y.split(`
    -`);let I=null;const H=[];let U=0,ne=[];if(E.forEach((B,be)=>{const ue=B.trim(),ke=ue.match(/^(#{1,6})\s+(.+)$/);if(ke){if(ne.length>0&&H.length>0){const It=ne.join(`
    -`).trim();It&&(U=Oe(It,H[H.length-1],U).nodeCounter),ne=[]}const Fe=ke[1].length,_e=ke[2].trim(),et=$e(_e),mt={id:`node_${U++}`,topic:et,children:[],level:Fe,data:{}};if(Fe===1&&!I)I=mt,H.length=0,H.push(I);else{for(;H.length>1&&H[H.length-1].level>=Fe;)H.pop();H.length>0&&H[H.length-1].children.push(mt),H.push(mt)}}else ue&&ne.push(ue)}),ne.length>0&&H.length>0){const B=ne.join(`
    -`).trim();B&&(U=Oe(B,H[H.length-1],U).nodeCounter)}return I||(I={id:"root",topic:"根节点",children:[],data:{}}),I},Ee=async(y,E,I)=>{var H,U,ne;try{const be=(yr=>yr.replace(/^#+\s*/gm,"").replace(/\*\*(.*?)\*\*/g,"$1").replace(/\*(.*?)\*/g,"$1").replace(/^\s*[-*+]\s*(?![|])/gm,"• ").replace(/\n{3,}/g,`
    -
    -`).trim())(I),ue=`# ${E}
    -
    -${be}`,ke=ve(ue),Fe={title:E,des:`AI追问产生的节点 - ${new Date().toLocaleString()}`,parentId:y.id,isRoot:!1},_e=[];if(ke.children&&ke.children.length>0&&ke.children.forEach(yr=>{_e.push({title:yr.topic,des:"",parentId:null,isRoot:!1})}),console.log("当前思维导图ID:",o.value),!o.value)throw new Error("没有找到当前思维导图ID,无法创建节点");const et=await nt.addNodes(o.value,[Fe]);if(!et.data||!et.data.success)throw new Error("AI父节点创建失败");const mt=(ne=(U=(H=et.data.data)==null?void 0:H.nodes)==null?void 0:U[0])==null?void 0:ne.id;if(!mt)throw new Error("无法获取创建的父节点ID");_e.forEach(yr=>{yr.parentId=mt});let It=null;if(_e.length>0&&(It=await nt.addNodes(o.value,_e)),et.data&&et.data.success)await ge();else throw new Error("AI父节点创建失败")}catch(B){console.error("创建AI节点失败:",B),alert("创建AI回答节点失败: "+B.message)}},rt=async()=>{if(i.value){try{const y=i.value.topic||i.value.title||"无标题";if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(y),Ve();else{const E=document.createElement("textarea");E.value=y,E.style.position="fixed",E.style.left="-999999px",E.style.top="-999999px",document.body.appendChild(E),E.focus(),E.select();const I=document.execCommand("copy");document.body.removeChild(E),I?Ve():Ie()}}catch{Ie()}i.value=null}},Ve=()=>{const y=document.createElement("div");y.textContent="文本已复制到剪贴板",y.style.cssText=`
    -    position: fixed;
    -    top: 20px;
    -    right: 20px;
    -    background: #4CAF50;
    -    color: white;
    -    padding: 12px 20px;
    -    border-radius: 6px;
    -    font-size: 14px;
    -    z-index: 10000;
    -    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    -    animation: slideIn 0.3s ease;
    -  `;const E=document.createElement("style");E.textContent=`
    -    @keyframes slideIn {
    -      from { transform: translateX(100%); opacity: 0; }
    -      to { transform: translateX(0); opacity: 1; }
    -    }
    -  `,document.head.appendChild(E),document.body.appendChild(y),setTimeout(()=>{y.parentNode&&y.parentNode.removeChild(y),E.parentNode&&E.parentNode.removeChild(E)},3e3)},Ie=()=>{const y=document.createElement("div");y.textContent="复制失败,请手动复制",y.style.cssText=`
    -    position: fixed;
    -    top: 20px;
    -    right: 20px;
    -    background: #f44336;
    -    color: white;
    -    padding: 12px 20px;
    -    border-radius: 6px;
    -    font-size: 14px;
    -    z-index: 10000;
    -    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    -    animation: slideIn 0.3s ease;
    -  `,document.body.appendChild(y),setTimeout(()=>{y.parentNode&&y.parentNode.removeChild(y)},3e3)},Rt=()=>{const y=document.createElement("div");y.textContent="✅ 节点编辑已保存",y.style.cssText=`
    -    position: fixed;
    -    top: 20px;
    -    right: 20px;
    -    background: #4CAF50;
    -    color: white;
    -    padding: 12px 20px;
    -    border-radius: 6px;
    -    font-size: 14px;
    -    z-index: 10000;
    -    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    -    animation: slideIn 0.3s ease;
    -  `,document.body.appendChild(y),setTimeout(()=>{y.parentNode&&y.parentNode.removeChild(y)},2e3)},pt=()=>{const y=document.createElement("div");y.textContent="❌ 节点编辑保存失败",y.style.cssText=`
    -    position: fixed;
    -    top: 20px;
    -    right: 20px;
    -    background: #f44336;
    -    color: white;
    -    padding: 12px 20px;
    -    border-radius: 6px;
    -    font-size: 14px;
    -    z-index: 10000;
    -    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    -    animation: slideIn 0.3s ease;
    -  `,document.body.appendChild(y),setTimeout(()=>{y.parentNode&&y.parentNode.removeChild(y)},3e3)},j=async y=>{try{const E=y.obj,I=y.toObj,H=y.originParentId;if(E&&I){const U=E,ne=I.id;await se(U,ne)}}catch{}},G=async y=>{try{const E=y.obj;E?await te(E):console.error("无法解析编辑操作:",y)}catch(E){console.error("处理编辑完成失败:",E)}},te=async y=>{var E,I;try{if(!o.value){console.error("无法获取思维导图ID");return}const H=await nt.updateNode(y.id,{newTitle:y.topic,newDes:((E=y.data)==null?void 0:E.des)||"",newParentId:y.parentId||((I=y.parent)==null?void 0:I.id)});H.data&&H.data.success?Rt():(console.error("更新节点编辑失败:",H.data),pt())}catch(H){console.error("更新节点编辑失败:",H),pt()}},se=async(y,E)=>{var I;try{if(!(y.mindmapId||y.mindmap_id)){console.error("无法获取思维导图ID");return}const U=await nt.updateNode(y.id,{newTitle:y.topic,newDes:((I=y.data)==null?void 0:I.des)||"",newParentId:E});U.data&&U.data.success||console.error("更新节点父节点失败:",U.data)}catch(H){console.error("更新节点父节点失败:",H)}},Ce=async y=>{var E;try{await Ue();const I=o.value||y.mindmap_id||y.mindmapId;if(!I){console.error("无法获取思维导图ID");return}const H=await nt.addNodes(I,[{title:"新子节点",des:"子节点描述",parentId:y.id}]);if(H.data&&H.data.success){const U=((E=H.data.data)==null?void 0:E.nodes)||[];if(U.length>0){const ne=U[0];try{const B=x();await new Promise(ue=>setTimeout(ue,800));const be=await nt.getMindmap(I);if(be.data&&be.data.nodeData)await N(be.data,!0),setTimeout(async()=>{try{const ue=await nt.getMindmap(I);if(ue.data&&ue.data.nodeData){const ke=_e=>{if(_e.id===ne.id)return _e;if(_e.children)for(const et of _e.children){const mt=ke(et);if(mt)return mt}return null},Fe=ke(ue.data.nodeData);Fe&&n.value&&n.value.editText(Fe)}}catch(ue){console.error("查找新节点失败:",ue)}},1e3);else throw new Error("无法获取思维导图数据")}catch(B){console.error("刷新思维导图失败:",B)}}}}catch(I){console.error("添加子节点失败:",I)}},me=async y=>{var E;try{await Ue(),console.log("添加兄弟节点到API:",y.id),console.log("节点信息:",{id:y.id,parentId:y.parentId,parent:y.parent,mindmap_id:y.mindmap_id,mindmapId:y.mindmapId});const I=o.value||y.mindmap_id||y.mindmapId;if(!I){console.error("无法获取思维导图ID");return}let H=y.parentId;!H&&y.parent&&(H=y.parent.id);const U=await nt.addNodes(I,[{title:"新兄弟节点",des:"兄弟节点描述",parentId:H}]);if(console.log("添加兄弟节点响应:",U),U.data&&U.data.success){const ne=((E=U.data.data)==null?void 0:E.nodes)||[];if(ne.length>0){const B=ne[0];console.log("新创建的兄弟节点:",B),console.log("🎯 使用MindElixir init方法重新初始化数据...");try{const be=x(),ue=await nt.getMindmap(I);if(ue.data&&ue.data.nodeData)await N(ue.data,!0),console.log("✅ 思维导图刷新成功"),setTimeout(async()=>{try{const ke=await nt.getMindmap(I);if(ke.data&&ke.data.nodeData){const Fe=et=>{if(et.id===B.id)return et;if(et.children)for(const mt of et.children){const It=Fe(mt);if(It)return It}return null},_e=Fe(ke.data.nodeData);_e&&n.value&&(console.log("找到新节点,进入编辑模式:",_e),n.value.editText(_e))}}catch(ke){console.error("查找新节点失败:",ke)}},1e3);else throw new Error("无法获取思维导图数据")}catch(be){console.error("重新初始化失败,使用完整重新加载:",be);const ue=await nt.getMindmap(I);ue.data&&ue.data.nodeData&&await N(ue.data,!0)}}}}catch(I){console.error("添加兄弟节点失败:",I)}},de=async y=>{try{await Ue(),console.log("删除节点从API:",y.id);const E=await nt.deleteNodes([y.id]);if(console.log("删除节点响应:",E),E.data&&E.data.success){const I=o.value||y.mindmap_id||y.mindmapId;if(I){const H=await nt.getMindmap(I);H.data&&H.data.nodeData&&(await N(H.data,!0),setTimeout(async()=>{try{console.log("重新加载思维导图数据...");const U=await nt.getMindmap(I);U.data&&U.data.nodeData&&(await N(U.data,!0),console.log("思维导图数据重新加载成功"))}catch(U){console.error("重新加载思维导图失败:",U)}},1500))}}}catch(E){console.error("删除节点失败:",E)}},Ue=async()=>{const y=r.value;if(y){const E=y.querySelector("input:focus");if(E&&i.value){const I=E.value;I!==i.value.topic&&I.trim()!==""&&(console.log("保存当前编辑:",I),i.value.topic=I,await S(i.value))}}},S=async y=>{var E,I,H,U,ne;try{console.log("保存Mind Elixir编辑,节点ID:",y.id),console.log("编辑内容:",{newTitle:y.topic,newDes:((E=y.data)==null?void 0:E.des)||""});const B=String(y.id),be=await nt.updateNode(B,{newTitle:y.topic,newDes:((I=y.data)==null?void 0:I.des)||""});console.log("更新节点API响应:",be),console.log("节点编辑已保存到后端"),console.log("✅ 节点编辑已保存,无需重新加载")}catch(B){console.error("保存Mind Elixir编辑失败:",B),console.error("错误详情:",(H=B.response)==null?void 0:H.data),alert("保存编辑失败: "+(((ne=(U=B.response)==null?void 0:U.data)==null?void 0:ne.detail)||B.message))}},D=y=>{console.log("打开编辑模态框:",y),n.value.editText(y)},F=async(y,E,I)=>{var H,U,ne;try{console.log("开始创建节点:",y.topic,"父节点ID:",I);const B=await nt.addNodes(E,{title:y.topic||y.title||"无标题",des:((H=y.data)==null?void 0:H.des)||"",parentId:I});if(console.log("创建节点响应:",B),B.data&&B.data.success){const ue=(ne=(((U=B.data.data)==null?void 0:U.nodes)||[])[0])==null?void 0:ne.id;if(console.log("当前节点ID:",ue),y.children&&y.children.length>0){console.log("开始创建子节点,数量:",y.children.length);for(const ke of y.children)await F(ke,E,ue)}else console.log("节点没有子节点,创建完成")}else console.error("创建节点失败,响应:",B)}catch(B){console.error("创建节点失败:",B)}},K=()=>{if(!n.value)return;console.log("绑定事件监听器..."),r.value.addEventListener("wheel",I=>{if(I.ctrlKey||I.metaKey){I.preventDefault();const H=I.deltaY>0?.9:1.1,U=Math.max(.3,Math.min(3,l.value*H));if(n.value){const ne=r.value.querySelector(".map-container");ne&&(ne.style.transform=`scale(${U})`,l.value=U,localStorage.setItem("mindmap-zoom-level",U.toString()))}}}),n.value.bus.addListener("select",I=>{console.log("select事件触发:",I),i.value=I,setTimeout(()=>{(!s.value.left||s.value.left==="50%")&&z()},200)}),n.value.bus.addListener("selectNode",I=>{console.log("selectNode事件触发:",I),i.value=I,setTimeout(()=>{(!s.value.left||s.value.left==="50%")&&z()},200)}),n.value.bus.addListener("scale",I=>{Math.abs(I-1)<.01&&Math.abs(l.value-1)>.01&&setTimeout(()=>{re()},50)});const y=setInterval(()=>{l.value!==1&&r.value&&ie()},100);window.zoomIntervalId=y;let E=0;r.value.addEventListener("click",I=>{const H=Date.now();if(H-E<100)return;E=H;const U=I.target,ne=U.closest("me-tpc")||U.closest(".topic")||U.classList.contains("topic")||U.tagName==="ME-TPC";if(i.value&&ne){const B=r.value.getBoundingClientRect(),be=I.clientX-B.left,ue=I.clientY-B.top+50;s.value={left:`${be}px`,top:`${ue}px`}}else ne||(i.value=null,f.value&&(f.value=!1,p.value=null,b.value="",v.value=!1))}),n.value.bus.addListener("edit",I=>{console.log("edit事件触发:",I),D(I)}),n.value.bus.addListener("editFinish",I=>{console.log("editFinish事件触发:",I),G(I)}),n.value.bus.addListener("operation",I=>{console.log("Mind Elixir操作事件:",I),I.name==="moveNode"?(console.log("检测到节点移动操作:",I),j(I)):I.name==="finishEdit"&&(console.log("检测到编辑完成操作:",I),G(I))}),n.value.bus.addListener("addChild",I=>{console.log("添加子节点:",I),Ce(I)}),n.value.bus.addListener("addSibling",I=>{console.log("添加兄弟节点:",I),me(I)}),n.value.bus.addListener("removeNode",I=>{console.log("删除节点:",I),de(I)})},q=()=>{if(n.value){const y=Math.min(l.value*1.2,3),E=r.value.querySelector(".map-container");E&&(E.style.transform=`scale(${y})`,l.value=y,localStorage.setItem("mindmap-zoom-level",y.toString()))}},P=()=>{if(n.value){const y=Math.max(l.value/1.2,.3),E=r.value.querySelector(".map-container");E&&(E.style.transform=`scale(${y})`,l.value=y,localStorage.setItem("mindmap-zoom-level",y.toString()))}},Z=()=>{if(n.value){const y=r.value.querySelector(".map-container");y&&(y.style.transform="scale(1)",l.value=1,localStorage.setItem("mindmap-zoom-level","1"))}},re=()=>{if(n.value){const y=localStorage.getItem("mindmap-zoom-level");if(y){const E=parseFloat(y);if(E>=.3&&E<=3){const I=r.value.querySelector(".map-container");I&&(I.style.transform=`scale(${E})`,l.value=E)}}}},ie=()=>{if(n.value&&l.value!==1&&r.value){const y=r.value.querySelector(".map-container");y&&(y.style.transform=`scale(${l.value})`)}},J=async()=>{var y;if(console.log("🚀🚀🚀 保存函数被调用 🚀🚀🚀"),console.log("🔍 mindElixir.value:",n.value),console.log("🔍 currentMindmapId.value:",o.value),console.log("🔍 mindmapEl.value:",r.value),console.log("🔍🔍🔍 全局状态检查开始 🔍🔍🔍"),console.log("🔍 - showWelcome:",c.value),console.log("🔍 - 是否有思维导图容器:",!!r.value),console.log("🔍 - MindElixir实例状态:",!!n.value),console.log("🔍🔍🔍 全局状态检查结束 🔍🔍🔍"),n.value&&n.value.data?(console.log("🔍🔍🔍 MindElixir数据检查开始 🔍🔍🔍"),console.log("🔍 - 数据对象:",n.value.data),console.log("🔍 - 数据字段:",Object.keys(n.value.data)),console.log("🔍 - 是否有nodeData:",!!n.value.data.nodeData),console.log("🔍 - 是否有nodes:",!!n.value.data.nodes),console.log("🔍🔍🔍 MindElixir数据检查结束 🔍🔍🔍")):console.log("⚠️ MindElixir数据不存在或为空"),!n.value||!o.value){if(console.warn("⚠️ 没有可保存的思维导图数据"),console.warn("🔍 mindElixir.value 状态:",!!n.value),console.warn("🔍 currentMindmapId.value 状态:",!!o.value),n.value&&n.value.data&&(console.log("🔍 尝试从MindElixir数据中获取ID"),console.log("🔍 MindElixir数据:",n.value.data),n.value.data.mindmapId?(o.value=n.value.data.mindmapId,console.log("🔍 从MindElixir数据中获取到mindmapId:",n.value.data.mindmapId)):n.value.data.mindmap_id&&(o.value=n.value.data.mindmap_id,console.log("🔍 从MindElixir数据中获取到mindmap_id:",n.value.data.mindmap_id))),!o.value&&n.value){if(console.log("🔍 尝试重新初始化MindElixir数据..."),console.log("🔍 MindElixir实例属性:",Object.keys(n.value)),console.log("🔍 MindElixir实例方法:",Object.getOwnPropertyNames(Object.getPrototypeOf(n.value))),n.value.getData){const E=n.value.getData();console.log("🔍 通过getData()获取的数据:",E),E&&E.nodeData&&(console.log("🔍 nodeData详情:",E.nodeData),E.nodeData.mindmapId?(o.value=E.nodeData.mindmapId,console.log("🔍 从nodeData.mindmapId获取到ID:",E.nodeData.mindmapId)):E.nodeData.mindmap_id?(o.value=E.nodeData.mindmap_id,console.log("🔍 从nodeData.mindmap_id获取到ID:",E.nodeData.mindmap_id)):(console.log("🔍 nodeData中没有找到mindmapId字段"),console.log("🔍 nodeData字段:",Object.keys(E.nodeData)))),!o.value&&E&&(console.log("🔍 检查其他可能的ID字段..."),E.id?(o.value=E.id,console.log("🔍 从data.id获取到ID:",E.id)):E.mindmapId&&(o.value=E.mindmapId,console.log("🔍 从data.mindmapId获取到ID:",E.mindmapId)))}n.value.mindElixirData&&(console.log("🔍 mindElixirData:",n.value.mindElixirData),n.value.mindElixirData.id&&(o.value=n.value.mindElixirData.id,console.log("🔍 从mindElixirData获取到ID:",n.value.mindElixirData.id)))}if(!o.value){console.warn("⚠️ 仍然无法获取思维导图ID,无法保存"),console.warn("🔍 建议:请先加载一个思维导图,然后再尝试保存");return}}try{console.log("💾 开始保存思维导图..."),console.log("🔍 当前思维导图ID:",o.value),console.log("🔍 MindElixir实例:",n.value);let E=null;if(n.value&&n.value.getData?(E=n.value.getData(),console.log("🔍 通过getData()获取的数据:",E)):(E=n.value.data,console.log("🔍 通过data属性获取的数据:",E)),!E){console.warn("⚠️ MindElixir数据为空");return}let I=[];console.log("🔍 数据结构分析:"),console.log("🔍 - currentData.nodeData:",E.nodeData),console.log("🔍 - currentData.nodes:",E.nodes),console.log("🔍 - currentData.nodeData.children:",(y=E.nodeData)==null?void 0:y.children);const H=B=>{B&&B.id&&(I.push(B),console.log(`🔍 收集节点: ${B.id} - ${B.topic||B.content||"无标题"}`),B.children&&B.children.length>0&&B.children.forEach(be=>H(be)))};if(E.nodeData)H(E.nodeData),console.log("🔍 从根节点收集到节点数量:",I.length);else if(E.nodes&&Array.isArray(E.nodes))E.nodes.forEach(B=>H(B)),console.log("🔍 从nodes数组收集到节点数量:",I.length);else if(Array.isArray(E))E.forEach(B=>H(B)),console.log("🔍 从currentData数组收集到节点数量:",I.length);else{console.warn("⚠️ 无法找到节点数据"),console.log("🔍 可用的数据字段:",Object.keys(E));return}if(I.length===0){console.warn("⚠️ 没有收集到任何节点");return}console.log("🔍 找到节点数据:",I),console.log("🔍 节点数量:",I.length),console.log("🔍 节点数据类型:",Array.isArray(I)?"数组":typeof I);const U=[];if(I.forEach((B,be)=>{if(console.log(`🔍 处理节点 ${be}:`,B),B&&B.id){const ue=B.topic||B.content||B.text||"",ke=B.x||B.offsetX||0,Fe=B.y||B.offsetY||0;console.log(`🔍 节点 ${B.id} 内容:`,ue,"位置:",{x:ke,y:Fe});const _e={content:ue,position:{x:ke,y:Fe}};(B.parentId||B.parent)&&(_e.parentId=B.parentId||B.parent,console.log(`🔍 节点 ${B.id} 父节点:`,_e.parentId)),console.log(`🔍 准备保存节点 ${B.id}:`,_e),U.push(nt.updateNode(B.id,_e).then(et=>{console.log(`✅ 节点 ${B.id} 保存成功:`,et)}).catch(et=>{console.error(`❌ 节点 ${B.id} 保存失败:`,et)}))}else console.warn(`⚠️ 节点 ${be} 缺少ID:`,B)}),console.log("🔍 准备保存的节点数量:",U.length),U.length===0){console.warn("⚠️ 没有找到需要保存的节点");return}const ne=await Promise.all(U);console.log("🔍 保存结果:",ne),console.log("🎉 思维导图保存完成!"),console.log("🔄 保存完成,开始自动刷新..."),await ge()}catch(E){console.error("❌ 保存思维导图失败:",E)}},ge=async()=>{if(!o.value){console.warn("⚠️ 没有当前思维导图ID,无法刷新");return}try{console.log("🔄 开始刷新思维导图...");const y=await nt.getMindmap(o.value);y.data&&y.data.nodeData?(console.log("✅ 获取到最新数据,开始刷新显示..."),await N(y.data,!0),console.log("🎉 思维导图刷新完成!")):console.warn("⚠️ 无法获取思维导图数据")}catch(y){console.error("❌ 刷新思维导图失败:",y)}},le=async(y,E)=>{try{const I=String(o.value||"");if(n.value&&I&&I.startsWith("temp-")){console.log("🔄 检测到实时渲染的思维导图,将保存到数据库并更新ID");const ne=x();console.log("📍 保存当前位置:",ne);const B=await nt.createMindmap(E||"预览思维导图",y);if(console.log("🔄 创建思维导图响应:",B),B.data&&B.data.id){const be=B.data.id;console.log("🎉 创建思维导图成功,新思维导图的ID是:",be);const ue=o.value;if(o.value=be,n.value&&n.value.data){n.value.data.mindmapId=be,n.value.data.id=be;const ke=Fe=>{Fe&&(Fe.mindmapId=be,Fe.children&&Fe.children.forEach(_e=>ke(_e)))};n.value.data.nodeData&&ke(n.value.data.nodeData)}console.log("✅ 已更新思维导图ID,保持视图状态"),console.log("🔄 从临时ID",ue,"更新为正式ID",be),ne&&setTimeout(()=>{A(ne),console.log("📍 已恢复位置和缩放状态")},100),window.dispatchEvent(new CustomEvent("mindmap-saved",{detail:{mindmapId:be,title:E,timestamp:Date.now(),fromRealtime:!0}}));return}}console.log("🔄 没有检测到实时渲染的思维导图,使用标准保存流程");const U=await nt.createMindmap(E||"预览思维导图",y);if(console.log("🔄 创建思维导图响应:",U),U.data&&U.data.id){const ne=U.data.id;if(console.log("🎉 创建思维导图成功,新思维导图的ID是:",ne),console.log("📊 响应数据详情:",U.data),U.data.nodeData)console.log("✅ 思维导图创建时已包含节点数据,直接加载"),o.value=ne,w(),await N(U.data),window.dispatchEvent(new CustomEvent("mindmap-saved",{detail:{mindmapId:ne,title:E,timestamp:Date.now()}})),setTimeout(async()=>{try{console.log("🔄 重新加载思维导图数据...");const B=await nt.getMindmap(ne);B.data&&B.data.nodeData&&(await N(B.data),console.log("✅ 思维导图数据重新加载成功"))}catch(B){console.error("❌ 重新加载思维导图失败:",B)}},1500);else{console.log("🔧 需要递归创建节点"),await F(y,ne,null),console.log("📥 开始加载新创建的思维导图,ID:",ne);const B=await nt.getMindmap(ne);console.log("🔄 加载思维导图响应:",B),B.data&&B.data.nodeData?(console.log("✅ 成功获取思维导图数据,开始加载显示"),o.value=ne,w(),await N(B.data),window.dispatchEvent(new CustomEvent("mindmap-saved",{detail:{mindmapId:ne,title:E,timestamp:Date.now()}})),setTimeout(async()=>{try{console.log("🔄 重新加载思维导图数据...");const be=await nt.getMindmap(ne);be.data&&be.data.nodeData&&(await N(be.data),console.log("✅ 思维导图数据重新加载成功"))}catch(be){console.error("❌ 重新加载思维导图失败:",be)}},1500)):console.error("❌ 获取思维导图数据失败:",B)}}}catch(I){console.error("❌ 保存预览数据到数据库失败:",I)}},fe=async y=>{try{if(console.log("📚 开始从历史记录加载思维导图:",y.title),w(),y.mindmapId){console.log("🎯 使用思维导图ID加载:",y.mindmapId);const E=await nt.getMindmap(y.mindmapId);if(E.data&&E.data.nodeData)await N(E.data);else throw new Error("无法获取思维导图数据")}else if(y.json)console.log("📊 使用历史记录中的JSON数据"),await N(y.json);else if(y.markdown){console.log("📝 使用历史记录中的Markdown数据,尝试转换为JSON");try{const E=await convertMarkdownToJSON(y.markdown);if(E)await N(E);else throw new Error("Markdown转换失败")}catch(E){console.error("Markdown转换失败:",E)}}}catch(E){console.error("❌ 从历史记录加载思维导图失败:",E)}};La(async()=>{window.addEventListener("save-preview-to-database",y=>{console.log("🎯 收到保存到数据库事件:",y.detail),console.log("📋 事件详情 - 标题:",y.detail.title,"来源:",y.detail.source,"时间戳:",new Date(y.detail.timestamp).toLocaleString()),le(y.detail.data,y.detail.title)}),window.addEventListener("realtime-mindmap-update",y=>{console.log("🔄 收到实时思维导图更新事件:",y.detail),Le(y.detail.data,y.detail.title)}),window.addEventListener("loadMindmapFromHistory",y=>{console.log("📚 收到从历史记录加载思维导图事件:",y.detail),console.log("🔍 事件数据详情:",y.detail),fe(y.detail)}),window.addEventListener("ai-sidebar-toggle",y=>{console.log("🤖 AI侧边栏折叠状态变化:",y.detail.isCollapsed),d.value=y.detail.isCollapsed}),k()});const Se=()=>{window.zoomIntervalId&&(clearInterval(window.zoomIntervalId),window.zoomIntervalId=null)};za(()=>{Se()}),e({showMindMapPage:M,cleanupIntervals:Se});const Le=async(y,E)=>{try{if(n.value){console.log("🔄 更新现有思维导图数据");try{const I=x(),H=String(o.value||""),U=H&&H.startsWith("temp-")?H:`temp-${Date.now()}`,ne={nodeData:y,mindmapId:U,id:U,title:E||"AI生成中..."};(!H||!H.startsWith("temp-"))&&(o.value=U,console.log("🆔 更新临时思维导图ID:",U));const B=n.value.init(ne);I&&setTimeout(()=>{A(I)},100)}catch(I){console.error("❌ 更新思维导图数据失败:",I)}}else{w(),await X0();let I=0;for(;!r.value&&I<20;)await new Promise(B=>setTimeout(B,50)),await X0(),I++;if(!r.value){console.error("❌ 思维导图容器仍未准备好,跳过此次更新");return}n.value=new bt({el:r.value,direction:bt.RIGHT,draggable:!0,contextMenu:!0,toolBar:!0,nodeMenu:!1,keypress:!0,autoCenter:!1,infinite:!0,maxScale:5,minScale:.1,markdown:(B,be)=>{if(B.includes("|")||B.includes("**")||B.includes("`")||B.includes("#")||B.includes("$")){console.log("🎨 实时更新 检测到markdown内容,开始渲染:",B.substring(0,100)+"...");const ue=K0(B);return console.log("🎨 实时更新 渲染结果:",ue.substring(0,200)+"..."),ue}return console.log("🔍 实时更新 内容不包含markdown语法,返回原文本"),B}});const H=`temp-${Date.now()}`,U={nodeData:y,mindmapId:H,id:H,title:E||"AI生成中..."};o.value=H,console.log("🆔 设置临时思维导图ID:",H);const ne=n.value.init(U);console.log("✅ 实时思维导图实例创建成功"),K(),O()}}catch(I){console.error("❌ 实时更新思维导图失败:",I)}};return(y,E)=>(We(),Ke("div",i7,[V("div",{class:pn(["zoom-controls",{"welcome-mode":c.value}])},[V("button",{onClick:q,class:"zoom-btn",title:"放大"},[...E[1]||(E[1]=[I0('',1)])]),V("button",{onClick:P,class:"zoom-btn",title:"缩小"},[...E[2]||(E[2]=[V("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[V("circle",{cx:"11",cy:"11",r:"8"}),V("path",{d:"m21 21-4.35-4.35"}),V("path",{d:"M8 11h6"})],-1)])]),V("button",{onClick:Z,class:"zoom-btn",title:"重置缩放"},[...E[3]||(E[3]=[I0('',1)])]),V("span",s7,Qt(Math.round(l.value*100))+"%",1)],2),c.value?(We(),Ke("div",a7,[V("div",{class:pn(["welcome-content",{"ai-sidebar-collapsed":d.value}])},[...E[4]||(E[4]=[I0('

    🧠 思维导图工具

    可视化您的想法,构建知识体系

    🎯

    智能AI生成

    上传文档,AI自动生成思维导图结构

    ✏️

    灵活编辑

    拖拽节点,自由调整思维导图布局

    💾

    云端存储

    自动保存,多设备同步访问

    💡 提示:使用左侧AI侧边栏可以快速生成思维导图内容

    ',3)])],2)])):Sr("",!0),f.value?(We(),Ke("div",{key:1,class:"ai-input-area",style:Ln(a.value)},[V("div",{class:"ai-input-header"},[E[5]||(E[5]=V("span",{class:"ai-input-title"},"🤖 询问AI",-1)),V("button",{onClick:Ae,class:"ai-close-btn"},"×")]),V("div",o7,[hi(V("textarea",{"onUpdate:modelValue":E[0]||(E[0]=I=>b.value=I),placeholder:"请输入您的问题...",rows:"2",disabled:v.value,onKeydown:[bs(vs(Ze,["exact"]),["enter"]),bs(vs(tt,["ctrl"]),["enter"]),bs(vs(tt,["meta"]),["enter"])]},null,40,l7),[[Ha,b.value]]),V("div",c7,[V("button",{onClick:Ae,class:"btn-cancel",disabled:v.value}," 取消 ",8,u7),V("button",{onClick:tt,class:"btn-submit",disabled:!b.value.trim()||v.value},[v.value?(We(),Ke("span",h7,"AI思考中...")):(We(),Ke("span",f7,"询问AI"))],8,d7)])])],4)):Sr("",!0),c.value?Sr("",!0):(We(),Ke("div",{key:2,ref_key:"mindmapEl",ref:r,class:"mindmap-el"},null,512)),c.value?Sr("",!0):(We(),Ke("div",p7,[V("button",{onClick:J,class:"save-btn",title:"保存思维导图"},[...E[6]||(E[6]=[V("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[V("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),V("polyline",{points:"17,21 17,13 7,13 7,21"}),V("polyline",{points:"7,3 7,8 15,8"})],-1),V("span",null,"保存",-1)])]),V("button",{onClick:ge,class:"refresh-btn",title:"刷新思维导图"},[...E[7]||(E[7]=[V("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[V("path",{d:"M1 4v6h6"}),V("path",{d:"M23 20v-6h-6"}),V("path",{d:"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"})],-1),V("span",null,"刷新",-1)])])])),i.value?(We(),Ke("div",{key:4,class:"context-menu",style:Ln(s.value)},[i.value.parentId||i.value.parent?(We(),Ke("div",{key:0,class:"context-menu-item",onClick:W,title:"Add a sibling card"},[...E[8]||(E[8]=[V("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 18 18",fill:"none"},[V("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M9.9001 4.5C9.9001 5.74264 8.89274 6.75 7.6501 6.75C6.64263 6.75 5.78981 6.08785 5.5031 5.175H2.7001V11.025H5.4001V9.9C5.4001 8.90589 6.11644 8.1 7.0001 8.1H15.0501C15.9338 8.1 16.6501 8.90589 16.6501 9.9V13.95C16.6501 14.9441 15.9338 15.75 15.0501 15.75H7.0001C6.11644 15.75 5.4001 14.9441 5.4001 13.95V12.375H2.2501C1.75304 12.375 1.3501 11.7471 1.3501 11.475V4.725C1.3501 4.22794 1.75304 3.825 2.2501 3.825H5.5031C5.78981 2.91215 6.64263 2.25 7.6501 2.25C8.89274 2.25 9.9001 3.25736 9.9001 4.5ZM15.0501 9.9H7.0001V13.95H15.0501V9.9Z",fill:"currentColor","fill-opacity":"1"})],-1)])])):Sr("",!0),V("div",{class:"context-menu-item",onClick:Y,title:"Add a child card"},[...E[9]||(E[9]=[V("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 18 18",fill:"none"},[V("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M15.9501 6.63691H8.35014V11.3619H15.9501V6.63691ZM8.35014 4.83691C7.46649 4.83691 6.75014 5.6428 6.75014 6.63691V8.32441H4.84719C4.56048 7.41157 3.70766 6.74941 2.7002 6.74941C1.45755 6.74941 0.450195 7.75677 0.450195 8.99941C0.450195 10.2421 1.45755 11.2494 2.7002 11.2494C3.70766 11.2494 4.56048 10.5873 4.84719 9.67441H6.75014V11.3619C6.75014 12.356 7.46649 13.1619 8.35014 13.1619H15.9501C16.8338 13.1619 17.5501 12.356 17.5501 11.3619V6.63691C17.5501 5.6428 16.8338 4.83691 15.9501 4.83691H8.35014Z",fill:"currentColor","fill-opacity":"1"})],-1)])]),V("div",{class:"context-menu-item",onClick:rt,title:"Copy text"},[...E[10]||(E[10]=[V("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 18 18",fill:"none"},[V("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M16.4503 2.99952C16.4016 2.18908 15.7289 1.54688 14.9062 1.54688H6.46875L6.37452 1.5497C5.56408 1.5984 4.92188 2.27108 4.92188 3.09375V3.54688C4.92188 3.68495 5.0338 3.79688 5.17188 3.79688H6.35938C6.49745 3.79688 6.60938 3.68495 6.60938 3.54688V3.375L6.61309 3.34276C6.62766 3.28063 6.68343 3.23438 6.75 3.23438H14.625L14.6572 3.23809C14.7261 3.23438 14.7656 3.30029 14.7656 3.375V11.25L14.7619 11.2822C14.7473 11.3444 14.6916 11.3906 14.625 11.3906H14.4531C14.3151 11.3906 14.2031 11.5026 14.2031 11.6406V12.8281C14.2031 12.9662 14.3151 13.0781 14.4531 13.0781H14.9062L15.0005 13.0753C15.8109 13.0266 16.4531 12.3539 16.4531 11.5312V3.09375L16.4503 2.99952ZM11.5312 4.92188H3.09375C2.23943 4.92188 1.54688 5.61443 1.54688 6.46875V14.9062C1.54688 15.7606 2.23943 16.4531 3.09375 16.4531H11.5312C12.3856 16.4531 13.0781 15.7606 13.0781 14.9062V6.46875C13.0781 5.61443 12.3856 4.92188 11.5312 4.92188ZM3.37032 6.615H11.2635C11.3361 6.615 11.395 6.6739 11.395 6.74655V14.6397C11.395 14.7124 11.3361 14.7712 11.2635 14.7712H3.37032C3.29767 14.7712 3.23877 14.7124 3.23877 14.6397V6.74655C3.23877 6.6739 3.29767 6.615 3.37032 6.615ZM4.5 8.5C4.5 8.27909 4.67909 8.1 4.9 8.1H9.725C9.94591 8.1 10.125 8.27909 10.125 8.5V9.5C10.125 9.72091 9.94591 9.9 9.725 9.9H4.9C4.67909 9.9 4.5 9.72091 4.5 9.5V8.5ZM4.9 11.475C4.67909 11.475 4.5 11.6541 4.5 11.875V12.875C4.5 13.0959 4.67909 13.275 4.9 13.275H9.725C9.94591 13.275 10.125 13.0959 10.125 12.875V11.875C10.125 11.6541 9.94591 11.475 9.725 11.475H4.9Z",fill:"currentColor","fill-opacity":"1"})],-1)])]),V("div",{class:"context-menu-item ask-ai",onClick:pe,title:"Ask AI"},[...E[11]||(E[11]=[I0('',1)])]),V("div",{class:"context-menu-item delete",onClick:he,title:"Delete"},[...E[12]||(E[12]=[V("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},[V("path",{d:"M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z",fill:"currentColor"}),V("path",{"fill-rule":"evenodd",d:"M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z",fill:"currentColor"})],-1)])])],4)):Sr("",!0)]))}},g7=Oo(m7,[["__scopeId","data-v-7ae591fd"]]),v7="modulepreload",b7=function(t){return"/"+t},Nc={},Dc=function(e,r,n){if(!r||r.length===0)return e();const i=document.getElementsByTagName("link");return Promise.all(r.map(s=>{if(s=b7(s),s in Nc)return;Nc[s]=!0;const a=s.endsWith(".css"),o=a?'[rel="stylesheet"]':"";if(!!n)for(let d=i.length-1;d>=0;d--){const f=i[d];if(f.href===s&&(!a||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${o}`))return;const c=document.createElement("link");if(c.rel=a?"stylesheet":v7,a||(c.as="script",c.crossOrigin=""),c.href=s,document.head.appendChild(c),a)return new Promise((d,f)=>{c.addEventListener("load",d),c.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>e()).catch(s=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s})};const y7={class:"ai-sidebar-wrapper"},w7=["title"],x7={key:0,width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5"},k7={key:1,width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5"},S7={class:"sidebar-content"},T7={class:"section"},A7={class:"input-group"},E7={key:0,class:"file-info"},C7={class:"file-details"},M7={class:"file-info-left"},N7={class:"file-name"},D7={class:"file-size"},R7={class:"button-group file-action-buttons"},I7=["disabled"],_7={key:0},O7={key:1},L7={key:0,class:"section"},z7={class:"history-list"},F7=["onClick"],$7={class:"history-title"},B7={class:"history-time"},P7={class:"section"},H7={class:"input-group"},q7={class:"button-group"},j7=["disabled"],U7={key:0},V7={key:1},W7={class:"section"},G7={key:0,class:"processing-status"},K7={class:"result-container"},Y7={class:"json-result"},X7={class:"button-group"},Z7=["disabled"],J7={__name:"AISidebar",emits:["start-realtime-generation"],setup(t,{emit:e}){const r=e,n=ze(!1),i=ze(""),s=ze(""),a=ze(""),o=ze(!1),l=ze(!1),c=ze([]),d=ze(!1);ze(""),ze("");const f=ze(!1),p=ze(""),b=ze(null),v=ze(null),k=()=>{n.value=!n.value,window.dispatchEvent(new CustomEvent("ai-sidebar-toggle",{detail:{isCollapsed:n.value}}))},w=j=>{const G=j.target.files[0];G&&(v.value=G,Ee("文件上传成功!","success"))},M=j=>{j.preventDefault(),d.value=!1;const G=j.dataTransfer.files;if(G.length>0){const te=G[0],se=[".txt",".md",".doc",".docx",".pdf"],Ce="."+te.name.split(".").pop().toLowerCase();se.includes(Ce)?(v.value=te,Ee("文件拖拽上传成功!","success")):Ee("不支持的文件格式!请上传 .txt, .md, .doc, .docx, .pdf 格式的文件","error")}},x=j=>{j.preventDefault(),d.value=!0},A=j=>{j.preventDefault(),d.value=!1},N=()=>{v.value=null,b.value&&(b.value.value="")},_=j=>{if(j===0)return"0 Bytes";const G=1024,te=["Bytes","KB","MB","GB"],se=Math.floor(Math.log(j)/Math.log(G));return parseFloat((j/Math.pow(G,se)).toFixed(2))+" "+te[se]},O=async()=>{if(!v.value){Ee("请先上传文件","error");return}o.value=!0,r("start-realtime-generation");try{const j=await z(v.value);s.value="";const G="你是一个专业的文档分析专家。请分析上传的文档内容,生成结构化的Markdown格式思维导图。要求:1. 提取主要主题和关键概念 2. 组织成层次分明的结构 3. 使用清晰的标题和子标题 4. 保持内容的逻辑性和完整性",te=`请分析以下文档内容并生成结构化Markdown: - -${j}`;await he(G,te),await Ae(),Ve("AI生成: "+v.value.name,s.value),Ee("AI生成Markdown成功!正在自动保存...","success"),setTimeout(async()=>{try{await ve()}catch(se){console.error("自动保存失败:",se)}},1500)}catch(j){console.error("从文件生成Markdown失败:",j),Ee("生成失败: "+j.message,"error")}finally{o.value=!1}},z=j=>new Promise(async(G,te)=>{try{const se=j.type.includes("text")||j.name.endsWith(".txt")||j.name.endsWith(".md"),Ce=j.type==="application/vnd.openxmlformats-officedocument.wordprocessingml.document"||j.type==="application/msword"||j.name.endsWith(".docx")||j.name.endsWith(".doc"),me=j.type==="application/pdf"||j.name.endsWith(".pdf");if(se){const de=new FileReader;de.onload=Ue=>G(Ue.target.result),de.onerror=()=>te(new Error("文本文件读取失败")),de.readAsText(j)}else if(Ce){const de=await Y(j);G(de)}else if(me){const de=await W(j);G(de)}else{const de=new FileReader;de.onload=Ue=>G(Ue.target.result),de.onerror=()=>te(new Error("文件读取失败")),de.readAsText(j)}}catch(se){te(se)}}),Y=async j=>{try{if(j.name.endsWith(".docx")){const G=await Dc(()=>import("./index-a46c0a22.js").then(Ce=>Ce.i),[]),te=await j.arrayBuffer();return(await G.extractRawText({arrayBuffer:te})).value}else if(j.name.endsWith(".doc"))throw new Error("请将.doc文件转换为.docx格式,或安装相应的解析库")}catch(G){throw new Error(`Office文档解析失败: ${G.message}`)}},W=async j=>{try{const G=await Dc(()=>import("./pdf-e6f26e66.js"),[]);G.GlobalWorkerOptions.workerSrc="/pdf.worker.min.mjs";const te=await j.arrayBuffer(),se=await G.getDocument({data:te}).promise;let Ce="";for(let me=1;me<=se.numPages;me++){const S=(await(await se.getPage(me)).getTextContent()).items.map(D=>D.str).join(" ");Ce+=S+` -`}return Ce}catch(G){throw new Error(`PDF文件解析失败: ${G.message}`)}},he=async(j,G)=>{const se=j||`你是一位Markdown格式转换专家。你的任务是将用户提供的文章内容精确转换为结构化的Markdown格式。请遵循以下步骤: - -提取主标题: 识别文章最顶层的主标题(通常为文章题目或书名),并使用Markdown的 # 级别表示。 - -识别层级标题: 从文章内容中提取所有层级的内容标题(从主标题后的第一个标题开始,Level 1 至 Level 4)。判断层级依据: - -视觉与结构特征: 如独立成行/段、位置(行首)、格式(加粗、编号如 1., 1.1, (1), - 等)。 - -语义逻辑: 标题之间的包含和并列关系。 - -在Markdown中,使用相应标题级别: - -Level 1 标题用 ## - -Level 2 标题用 ### - -Level 3 标题用 #### - -Level 4 标题用 ##### - -精确保留原文标题文字,不得修改、概括或润色。 - -处理正文内容: 对于每个标题下的正文内容区块(从该标题后开始,直到下一个同级或更高级别标题前): - -直接保留原文文本,但根据内容结构适当格式化为Markdown。 - -如果内容是列表(如项目符号或编号列表),使用Markdown列表语法(例如 - 用于无序列表,1. 用于有序列表)。 - -保持段落和换行不变。 - -输出格式: 输出必须是纯Markdown格式的文本,不得包含任何额外说明、JSON或非Markdown元素。确保输出与示例风格一致。`,Ce=G||"请将以下内容转换为结构化的Markdown格式:";try{const me=await fetch("http://127.0.0.1:8000/api/ai/generate-stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({system_prompt:se,user_prompt:Ce,model:"glm-4.5",base_url:"https://open.bigmodel.cn/api/paas/v4/",api_key:"ce39bdd4fcf34ec0aec75072bc9ff988.hAp7HZTVUwy7vImn"})});if(!me.ok)throw new Error(`HTTP error! status: ${me.status}`);const de=me.body.getReader(),Ue=new TextDecoder;let S="",D=0;for(;;){const{done:F,value:K}=await de.read();if(F)break;S+=Ue.decode(K,{stream:!0});const q=S.split(` -`);S=q.pop()||"";for(const P of q)if(P.startsWith("data: "))try{const Z=JSON.parse(P.slice(6));if(Z.type==="start")Ee("AI开始生成内容...","info");else if(Z.type==="chunk"){D++,s.value+=Z.content;try{const re=st(s.value);a.value=JSON.stringify(re,null,2),window.dispatchEvent(new CustomEvent("realtime-mindmap-update",{detail:{data:re,title:re.topic||"AI生成中...",source:"ai-streaming",chunkCount:D}}))}catch(re){console.warn("⚠️ 实时转换JSON失败:",re),console.warn("⚠️ 当前Markdown内容:",s.value)}}else if(Z.type==="end")Ee("AI内容生成完成!","success");else if(Z.type==="error")throw new Error(Z.content)}catch(Z){console.warn("解析流式数据失败:",Z)}}}catch(me){throw console.error("流式AI API调用失败:",me),me}},pe=j=>{if(j.includes("|")&&j.includes("-")){const G=j.split(` -`);let te=!1,se=!1;for(const Ce of G){const me=Ce.trim();me.includes("|")&&me.split("|").length>=3&&(te=!0),me.includes("|")&&me.includes("-")&&/^[\s\|\-\:]+$/.test(me)&&(se=!0)}if(te&&se)return console.log("🚫 formatMarkdownToText: 检测到表格内容,跳过转换"),j}return j.replace(/^### (.*$)/gim,"📋 $1").replace(/^## (.*$)/gim,"📌 $1").replace(/^# (.*$)/gim,"🎯 $1").replace(/\*\*(.*?)\*\*/g,(G,te)=>{if(te.includes(":")){const se=te.split(":");if(se.length>1)return`【${se[0]}】: ${se.slice(1).join(":")}`}return`【${te}】`}).replace(/\*(.*?)\*/g,"《$1》").replace(/^- (.*$)/gim," • $1").replace(/^\d+\. (.*$)/gim," $&").replace(/```(.*?)```/gims,"💻 $1").replace(/`(.*?)`/g,"「$1」").replace(/\[([^\]]+)\]\([^)]+\)/g,"🔗 $1").replace(/\n\n/g,` -`).replace(/\n/g,` - `)},Ae=async()=>{if(!s.value.trim()){Ee("请输入Markdown内容","error");return}l.value=!0;try{const j=st(s.value);a.value=JSON.stringify(j,null,2)}catch(j){console.error("转换失败:",j),Ee("转换失败,请检查Markdown格式","error")}finally{l.value=!1}},st=j=>{const G=j.split(` -`);let te=null;const se=[];let Ce=0,me=[];if(G.forEach((de,Ue)=>{const S=de.trim(),D=S.match(/^(#{1,6})\s+(.+)$/);if(D){if(me.length>0&&se.length>0){const Z=me.join(` -`).trim();Z&&(Ce=Ze(Z,se[se.length-1],Ce).nodeCounter),me=[]}const F=D[1].length,K=D[2].trim(),q=pe(K),P={id:`node_${Ce++}`,topic:q,children:[],level:F,data:{}};if(F===1&&!te)te=P,se.length=0,se.push(te);else{for(;se.length>1&&se[se.length-1].level>=F;)se.pop();se.length>0&&se[se.length-1].children.push(P),se.push(P)}}else S&&me.push(S)}),me.length>0&&se.length>0){const de=me.join(` -`).trim();de&&(de.includes("|")&&console.log("🔍 处理最后的内容(包含表格):",de.substring(0,200)+"..."),Ce=Ze(de,se[se.length-1],Ce).nodeCounter)}return te||(te={id:"root",topic:"根节点",children:[],data:{}}),te},Ze=(j,G,te)=>{if(tt(j)){console.log("🎯 检测到表格内容,创建表格节点");const de={id:`node_${te++}`,topic:j,children:[],level:(G.level||0)+1,data:{}};return G.children.push(de),{nodeCounter:te}}const se=j.split(` -`);let Ce=te,me=[];for(let de=0;de0){const Z=pe(q.join(` -`));K.topic=K.topic+` - -`+Z}G.children.push(K),de=P-1}else S&&me.push(S)}if(me.length>0){const de=me.join(` -`).trim();if(de)if(tt(de)){console.log("🎯 检测到表格内容,创建表格节点");const Ue={id:`node_${Ce++}`,topic:de,children:[],level:(G.level||0)+1,data:{}};G.children.push(Ue)}else de.split(` - -`).filter(S=>S.trim()).forEach(S=>{const D=pe(S.trim());if(D){const F={id:`node_${Ce++}`,topic:D,children:[],level:(G.level||0)+1,data:{}};G.children.push(F)}})}return{nodeCounter:Ce}},tt=j=>{if(!j||typeof j!="string")return!1;j.includes("|")&&console.log("🔍 检查表格内容:",j.substring(0,200)+"...");const G=j.split(` -`);let te=!1,se=!1;for(const Ue of G){const S=Ue.trim();S.includes("|")&&S.split("|").length>=3&&(te=!0,console.log("✅ 找到表格行:",S)),S.includes("|")&&S.includes("-")&&/^[\s\|\-\:]+$/.test(S)&&(se=!0,console.log("✅ 找到分隔符行:",S))}const Ce=(j.match(/\|/g)||[]).length,me=Ce>=4,de=te&&se||te&&me;return console.log("🔍 表格检测结果:",{hasTableRow:te,hasSeparator:se,pipeCount:Ce,hasMultiplePipes:me,result:de}),de},$e=async()=>{if(!s.value){Ee("没有Markdown内容可复制","error");return}try{await navigator.clipboard.writeText(s.value),Ee("Markdown已复制到剪贴板","success")}catch{const G=document.createElement("textarea");G.value=s.value,document.body.appendChild(G),G.select(),document.execCommand("copy"),G.remove(),Ee("Markdown已复制到剪贴板","success")}},Oe=async()=>{try{await navigator.clipboard.writeText(a.value),Ee("JSON已复制到剪贴板","success")}catch(j){console.error("复制失败:",j),Ee("复制失败","error")}},ve=async()=>{if(!a.value){Ee("请先生成或转换JSON数据","error");return}f.value=!0,p.value="正在保存思维导图...";try{const j=JSON.parse(a.value),G=j.topic||j.title||`AI生成的思维导图_${new Date().toLocaleString()}`,te=new CustomEvent("save-preview-to-database",{detail:{data:j,title:G,source:"ai-generated",timestamp:Date.now()}});window.dispatchEvent(te),setTimeout(()=>{f.value=!1,p.value="",Ee("思维导图已保存成功!","success"),v.value=null,b.value&&(b.value.value="")},2e3)}catch(j){f.value=!1,p.value="",console.error("JSON解析失败:",j),Ee("JSON格式错误,请检查数据","error")}},Ee=(j,G="info")=>{const te=document.createElement("div");switch(te.className=`notification notification-${G}`,te.textContent=j,te.style.cssText=` - position: fixed; - top: 20px; - right: 20px; - padding: 12px 20px; - border-radius: 8px; - font-size: 14px; - font-weight: 500; - z-index: 10000; - box-shadow: 0 4px 12px rgba(0,0,0,0.15); - animation: slideIn 0.3s ease; - max-width: 300px; - word-wrap: break-word; - `,G){case"success":te.style.background="#4CAF50",te.style.color="white";break;case"error":te.style.background="#f44336",te.style.color="white";break;case"info":default:te.style.background="#2196F3",te.style.color="white";break}if(!document.querySelector("#notification-styles")){const se=document.createElement("style");se.id="notification-styles",se.textContent=` - @keyframes slideIn { - from { transform: translateX(100%); opacity: 0; } - to { transform: translateX(0); opacity: 1; } - } - @keyframes slideOut { - from { transform: translateX(0); opacity: 1; } - to { transform: translateX(100%); opacity: 0; } - } - `,document.head.appendChild(se)}document.body.appendChild(te),setTimeout(()=>{te.style.animation="slideOut 0.3s ease",setTimeout(()=>{te.parentNode&&te.parentNode.removeChild(te)},300)},3e3)},rt=()=>{s.value="",a.value="",Ee("内容已清空","info")},Ve=(j,G,te=null)=>{const se={title:j,content:G,mindmapId:te,timestamp:new Date};c.value.unshift(se),c.value.length>10&&(c.value=c.value.slice(0,10)),localStorage.setItem("ai-sidebar-history",JSON.stringify(c.value))},Ie=async j=>{j.mindmapId?(window.dispatchEvent(new CustomEvent("loadMindmapFromHistory",{detail:{mindmapId:j.mindmapId,title:j.title}})),Ee(`正在加载: ${j.title}`,"info")):(s.value=j.content,await Ae(),window.dispatchEvent(new CustomEvent("loadMindmapFromHistory",{detail:{markdown:j.content,json:a.value,title:j.title}})),Ee(`正在加载: ${j.title}`,"info"))},Rt=j=>new Date(j).toLocaleString("zh-CN");La(()=>{const j=localStorage.getItem("ai-sidebar-history");if(j)try{c.value=JSON.parse(j)}catch(G){console.error("加载历史记录失败:",G)}window.addEventListener("add-to-history",G=>{const{title:te,content:se,timestamp:Ce}=G.detail;Ve(te,se,null)}),window.addEventListener("mindmap-saved",G=>{const{mindmapId:te,title:se,timestamp:Ce}=G.detail,me=c.value.find(de=>de.title===se||de.timestamp&&Math.abs(de.timestamp-Ce)<5e3);me?(me.mindmapId=te,localStorage.setItem("ai-sidebar-history",JSON.stringify(c.value))):Ve(se,"",te)}),s0(i,(G,te)=>{}),s0(s,(G,te)=>{})});const pt=async()=>{try{const j=await fetch("http://127.0.0.1:8000/api/ai/test-stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({test:"data"})});if(!j.ok)throw new Error(`HTTP error! status: ${j.status}`);const G=j.body.getReader(),te=new TextDecoder;let se="";for(;;){const{done:Ce,value:me}=await G.read();if(Ce)break;se+=te.decode(me,{stream:!0});const de=se.split(` -`);se=de.pop()||"";for(const Ue of de)if(Ue.startsWith("data: "))try{const S=JSON.parse(Ue.slice(6))}catch(S){console.warn("解析测试数据失败:",S)}}}catch(j){console.error("❌ 测试流式API失败:",j)}};return window.testStreamAPI=pt,(j,G)=>(We(),Ke("div",y7,[V("div",{class:"sidebar-toggle",onClick:k,title:n.value?"展开AI助手":"折叠AI助手",style:Ln({left:n.value?"10px":"420px"})},[n.value?(We(),Ke("svg",x7,[...G[1]||(G[1]=[V("path",{d:"M9 18l6-6-6-6"},null,-1)])])):(We(),Ke("svg",k7,[...G[2]||(G[2]=[V("path",{d:"M15 18l-6-6 6-6"},null,-1)])]))],12,w7),V("div",{class:pn(["ai-sidebar",{"sidebar-collapsed":n.value}])},[hi(V("div",S7,[G[12]||(G[12]=V("div",{class:"sidebar-header"},[V("h3",null,"🤖 AI 助手"),V("p",null,"文档转思维导图工具"),V("div",{class:"collapse-hint"},[V("small",null,"💡 点击右侧按钮可折叠侧边栏")])],-1)),V("div",T7,[G[6]||(G[6]=V("h4",null,"📁 生成思维导图",-1)),V("div",A7,[G[4]||(G[4]=V("label",null,"上传文件:",-1)),V("div",{class:"file-upload-area",onDrop:M,onDragover:x,onDragleave:A},[V("input",{type:"file",ref_key:"fileInput",ref:b,onChange:w,accept:".txt,.md,.doc,.docx,.pdf",class:"file-input"},null,544),V("div",{class:pn(["file-upload-placeholder",{"drag-over":d.value}])},[...G[3]||(G[3]=[V("span",{class:"upload-icon"},"📎",-1),V("span",{class:"upload-text"},"点击选择文件或拖拽文件到此处",-1),V("span",{class:"upload-hint"},"支持 .txt, .md, .doc, .docx, .pdf 格式",-1)])],2)],32)]),v.value?(We(),Ke("div",E7,[V("div",C7,[V("div",M7,[V("span",N7,"📄 "+Qt(v.value.name),1),V("span",D7,"("+Qt(_(v.value.size))+")",1)]),V("button",{onClick:N,class:"btn-remove",title:"删除文件"},[...G[5]||(G[5]=[V("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[V("path",{d:"M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M10 11v6M14 11v6"})],-1)])])])])):Sr("",!0),V("div",R7,[V("button",{onClick:O,disabled:!v.value||o.value,class:"btn-primary"},[o.value?(We(),Ke("span",_7,"AI生成中...")):(We(),Ke("span",O7,"AI生成思维导图"))],8,I7)])]),c.value.length>0?(We(),Ke("div",L7,[G[7]||(G[7]=V("h4",null,"📚 历史记录",-1)),V("div",z7,[(We(!0),Ke(tr,null,du(c.value,(te,se)=>(We(),Ke("div",{key:se,class:"history-item",onClick:Ce=>Ie(te)},[V("div",$7,Qt(te.title),1),V("div",B7,Qt(Rt(te.timestamp)),1)],8,F7))),128))])])):Sr("",!0),V("div",P7,[G[9]||(G[9]=V("h4",null,"📝 AI生成的Markdown结果",-1)),V("div",H7,[G[8]||(G[8]=V("label",null,"Markdown内容:",-1)),hi(V("textarea",{"onUpdate:modelValue":G[0]||(G[0]=te=>s.value=te),placeholder:"AI生成的Markdown内容将显示在这里",rows:"6",readonly:"",class:"markdown-result"},null,512),[[Ha,s.value]])]),V("div",q7,[V("button",{onClick:Ae,disabled:l.value,class:"btn-secondary"},[l.value?(We(),Ke("span",U7,"转换中...")):(We(),Ke("span",V7,"🔄 转换为JSON"))],8,j7),V("button",{onClick:rt,class:"btn-clear"},"清空"),V("button",{onClick:$e,class:"btn-copy"},"📋 复制Markdown")])]),V("div",W7,[G[11]||(G[11]=V("h4",null,"📊 Markdown转JSON结果",-1)),f.value?(We(),Ke("div",G7,[G[10]||(G[10]=V("div",{class:"spinner"},null,-1)),V("span",null,Qt(p.value),1)])):Sr("",!0),V("div",K7,[V("pre",Y7,Qt(a.value||"JSON转换结果将显示在这里"),1),V("div",X7,[V("button",{onClick:Oe,class:"btn-copy"},"📋 复制JSON"),V("button",{onClick:ve,disabled:f.value,class:"btn-copy"},Qt(f.value?"处理中...":"👁️ 预览"),9,Z7)])])])],512),[[Lf,!n.value]])],2)]))}},Q7=Oo(J7,[["__scopeId","data-v-9bdaf8f5"]]);const e8={class:"markdown-test"},t8={class:"test-section"},r8={class:"test-section"},n8=["innerHTML"],i8={class:"test-section"},s8={class:"test-cases"},a8=["onClick"],o8={__name:"MarkdownTest",setup(t){const e=ze(`# 测试标题 - -这是一个**粗体**和*斜体*的测试。 - -## 表格测试 - -| 产品 | 价格 | 库存 | -|------|------|------| -| 苹果 | 4元 | 100个 | -| 香蕉 | 2元 | 50个 | - -## 代码测试 - -\`\`\`javascript -function hello() { - console.log('Hello World!'); -} -\`\`\` - -行内代码:\`const name = 'test'\` - -## 列表测试 - -- 项目1 -- 项目2 - - 子项目2.1 - - 子项目2.2 -- 项目3 - -## 链接测试 - -- [GitHub](https://github.com) -- [Vue.js](https://vuejs.org)`),r=ze([{name:"基础表格",content:`# 产品价格表 - -| 产品 | 价格 | -|------|------| -| 苹果 | 4元 | -| 香蕉 | 2元 |`},{name:"复杂表格",content:`# 技术栈对比 - -| 技术 | 前端 | 后端 | 数据库 | -|------|------|------|--------| -| Vue.js | ✅ | ❌ | ❌ | -| Django | ❌ | ✅ | ❌ | -| PostgreSQL | ❌ | ❌ | ✅ |`},{name:"代码块",content:`# 代码示例 - -\`\`\`javascript -function markdownToJSON(markdown) { - const lines = markdown.split('\\n'); - // 处理逻辑... - return result; -} -\`\`\``},{name:"混合内容",content:`# 混合内容测试 - -这是一个包含**粗体**、*斜体*和\`行内代码\`的段落。 - -## 表格 - -| 功能 | 状态 | 说明 | -|------|------|------| -| 表格渲染 | ✅ | 支持markdown表格 | -| 代码高亮 | ✅ | 支持代码块 | - -## 代码 - -\`\`\`python -def hello_world(): - print("Hello, World!") -\`\`\``}]),n=Ou(()=>{if(!e.value)return"";try{return wa(e.value)}catch(a){return`
    渲染失败: ${a.message}
    `}}),i=()=>{},s=a=>{e.value=a.content};return(a,o)=>(We(),Ke("div",e8,[o[4]||(o[4]=V("h2",null,"Markdown渲染测试",-1)),V("div",t8,[o[1]||(o[1]=V("h3",null,"输入Markdown内容",-1)),hi(V("textarea",{"onUpdate:modelValue":o[0]||(o[0]=l=>e.value=l),placeholder:"输入markdown内容...",rows:"10",class:"markdown-input"},null,512),[[Ha,e.value]])]),V("div",r8,[o[2]||(o[2]=V("h3",null,"渲染结果",-1)),V("div",{class:"rendered-content",innerHTML:n.value},null,8,n8)]),V("div",i8,[o[3]||(o[3]=V("h3",null,"测试用例",-1)),V("button",{onClick:i,class:"test-btn"},"加载测试用例"),V("div",s8,[(We(!0),Ke(tr,null,du(r.value,(l,c)=>(We(),Ke("button",{key:c,onClick:d=>s(l),class:"test-case-btn"},Qt(l.name),9,a8))),128))])])]))}},l8=Oo(o8,[["__scopeId","data-v-68a00828"]]);const c8={id:"app"},u8={class:"test-mode-toggle"},d8={key:0,class:"test-mode"},h8={key:1},f8={class:"main-content"},p8={__name:"App",setup(t){const e=ze(null),r=ze(!1),n=()=>{r.value=!r.value},i=()=>{e.value&&e.value.showMindMapPage()};return(s,a)=>(We(),Ke("div",c8,[a[0]||(a[0]=Ru("« ",-1)),V("div",u8,[V("button",{onClick:n,class:"test-btn"},Qt(r.value?"切换到思维导图":"测试Markdown渲染"),1)]),r.value?(We(),Ke("div",d8,[qt(l8)])):(We(),Ke("div",h8,[qt(Q7,{onStartRealtimeGeneration:i}),V("div",f8,[qt(g7,{ref_key:"mindMapRef",ref:e},null,512)])]))]))}};tp(p8).mount("#app");export{Dc as _,Wl as c,b8 as g}; diff --git a/frontend/dist/assets/index-a46c0a22.js b/frontend/dist/assets/index-c6bfb612.js similarity index 99% rename from frontend/dist/assets/index-a46c0a22.js rename to frontend/dist/assets/index-c6bfb612.js index c959a45..b1c39e6 100644 --- a/frontend/dist/assets/index-a46c0a22.js +++ b/frontend/dist/assets/index-c6bfb612.js @@ -1,4 +1,4 @@ -import{g as jl,c as he}from"./index-a09f7810.js";function Xl(e,n){for(var t=0;ti[r]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var en={},la="1.13.7",Wo=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||Function("return this")()||{},oi=Array.prototype,fa=Object.prototype,Ro=typeof Symbol<"u"?Symbol.prototype:null,Vl=oi.push,Ft=oi.slice,gt=fa.toString,Hl=fa.hasOwnProperty,Su=typeof ArrayBuffer<"u",$l=typeof DataView<"u",Gl=Array.isArray,No=Object.keys,Oo=Object.create,Io=Su&&ArrayBuffer.isView,Zl=isNaN,Yl=isFinite,Bu=!{toString:null}.propertyIsEnumerable("toString"),Lo=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],Kl=Math.pow(2,53)-1;function Ie(e,n){return n=n==null?e.length-1:+n,function(){for(var t=Math.max(arguments.length-n,0),i=Array(t),r=0;r=0&&t<=Kl}}function zu(e){return function(n){return n==null?void 0:n[e]}}const Gt=zu("byteLength"),nf=Pu(Gt);var tf=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;function rf(e){return Io?Io(e)&&!mt(e):nf(e)&&tf.test(gt.call(e))}const xa=Su?rf:va(!1),qe=zu("length");function af(e){for(var n={},t=e.length,i=0;i":">",'"':""","'":"'","`":"`"},fs=ds(ls),sf=Ea(ls),hs=ds(sf),ps=ye.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var Gi=/(.)^/,df={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},lf=/\\|'|\r|\n|\u2028|\u2029/g;function ff(e){return"\\"+df[e]}var hf=/^\s*(\w|\$)+\s*$/;function gs(e,n,t){!n&&t&&(n=t),n=Ca({},n,ye.templateSettings);var i=RegExp([(n.escape||Gi).source,(n.interpolate||Gi).source,(n.evaluate||Gi).source].join("|")+"|$","g"),r=0,a="__p+='";e.replace(i,function(s,d,g,b,m){return a+=e.slice(r,m).replace(lf,ff),r=m+s.length,d?a+=`'+ +import{g as jl,c as he}from"./index-7802977e.js";function Xl(e,n){for(var t=0;ti[r]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var en={},la="1.13.7",Wo=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||Function("return this")()||{},oi=Array.prototype,fa=Object.prototype,Ro=typeof Symbol<"u"?Symbol.prototype:null,Vl=oi.push,Ft=oi.slice,gt=fa.toString,Hl=fa.hasOwnProperty,Su=typeof ArrayBuffer<"u",$l=typeof DataView<"u",Gl=Array.isArray,No=Object.keys,Oo=Object.create,Io=Su&&ArrayBuffer.isView,Zl=isNaN,Yl=isFinite,Bu=!{toString:null}.propertyIsEnumerable("toString"),Lo=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],Kl=Math.pow(2,53)-1;function Ie(e,n){return n=n==null?e.length-1:+n,function(){for(var t=Math.max(arguments.length-n,0),i=Array(t),r=0;r=0&&t<=Kl}}function zu(e){return function(n){return n==null?void 0:n[e]}}const Gt=zu("byteLength"),nf=Pu(Gt);var tf=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;function rf(e){return Io?Io(e)&&!mt(e):nf(e)&&tf.test(gt.call(e))}const xa=Su?rf:va(!1),qe=zu("length");function af(e){for(var n={},t=e.length,i=0;i":">",'"':""","'":"'","`":"`"},fs=ds(ls),sf=Ea(ls),hs=ds(sf),ps=ye.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var Gi=/(.)^/,df={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},lf=/\\|'|\r|\n|\u2028|\u2029/g;function ff(e){return"\\"+df[e]}var hf=/^\s*(\w|\$)+\s*$/;function gs(e,n,t){!n&&t&&(n=t),n=Ca({},n,ye.templateSettings);var i=RegExp([(n.escape||Gi).source,(n.interpolate||Gi).source,(n.evaluate||Gi).source].join("|")+"|$","g"),r=0,a="__p+='";e.replace(i,function(s,d,g,b,m){return a+=e.slice(r,m).replace(lf,ff),r=m+s.length,d?a+=`'+ ((__t=(`+d+`))==null?'':_.escape(__t))+ '`:g?a+=`'+ ((__t=(`+g+`))==null?'':__t)+ diff --git a/frontend/dist/assets/pdf-e6f26e66.js b/frontend/dist/assets/pdf-869d0c0b.js similarity index 99% rename from frontend/dist/assets/pdf-e6f26e66.js rename to frontend/dist/assets/pdf-869d0c0b.js index 031aad4..30af7de 100644 --- a/frontend/dist/assets/pdf-e6f26e66.js +++ b/frontend/dist/assets/pdf-869d0c0b.js @@ -1,4 +1,4 @@ -var FA=Object.defineProperty;var NA=(u,t,e)=>t in u?FA(u,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):u[t]=e;var k=(u,t,e)=>(NA(u,typeof t!="symbol"?t+"":t,e),e),dp=(u,t,e)=>{if(!t.has(u))throw TypeError("Cannot "+e)};var n=(u,t,e)=>(dp(u,t,"read from private field"),e?e.call(u):t.get(u)),d=(u,t,e)=>{if(t.has(u))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(u):t.set(u,e)},p=(u,t,e,s)=>(dp(u,t,"write to private field"),s?s.call(u,e):t.set(u,e),e);var St=(u,t,e,s)=>({set _(i){p(u,t,i,e)},get _(){return n(u,t,s)}}),b=(u,t,e)=>(dp(u,t,"access private method"),e);import{_ as OA}from"./index-a09f7810.js";const ie=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),wp=[.001,0,0,.001,0,0],up=1.35,Pe={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},ki={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},Em="pdfjs_internal_editor_",$={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,POPUP:16,SIGNATURE:101,COMMENT:102},X={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,HIGHLIGHT_COLOR:31,HIGHLIGHT_THICKNESS:32,HIGHLIGHT_FREE:33,HIGHLIGHT_SHOW_ALL:34,DRAW_STEP:41},BA={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},Ot={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},wd={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},wt={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},da={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},ep={ERRORS:0,WARNINGS:1,INFOS:5},Fl={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93,rawFillPath:94},ud={moveTo:0,lineTo:1,curveTo:2,closePath:3},HA={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let sp=ep.WARNINGS;function $A(u){Number.isInteger(u)&&(sp=u)}function zA(){return sp}function ip(u){sp>=ep.INFOS&&console.log(`Info: ${u}`)}function z(u){sp>=ep.WARNINGS&&console.log(`Warning: ${u}`)}function st(u){throw new Error(u)}function _t(u,t){u||st(t)}function GA(u){switch(u==null?void 0:u.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function Cm(u,t=null,e=null){if(!u)return null;if(e&&typeof u=="string"){if(e.addDefaultProtocol&&u.startsWith("www.")){const i=u.match(/\./g);(i==null?void 0:i.length)>=2&&(u=`http://${u}`)}if(e.tryConvertEncoding)try{u=XA(u)}catch{}}const s=t?URL.parse(u,t):URL.parse(u);return GA(s)?s:null}function Tm(u,t,e=!1){const s=URL.parse(u);return s?(s.hash=t,s.href):e&&Cm(u,"http://example.com")?u.split("#",1)[0]+`${t?`#${t}`:""}`:""}function V(u,t,e,s=!1){return Object.defineProperty(u,t,{value:e,enumerable:!s,configurable:!0,writable:!1}),e}const la=function(){function t(e,s){this.message=e,this.name=s}return t.prototype=new Error,t.constructor=t,t}();class sm extends la{constructor(t,e){super(t,"PasswordException"),this.code=e}}class fp extends la{constructor(t,e){super(t,"UnknownErrorException"),this.details=e}}class vp extends la{constructor(t){super(t,"InvalidPDFException")}}class Kd extends la{constructor(t,e,s){super(t,"ResponseException"),this.status=e,this.missing=s}}class UA extends la{constructor(t){super(t,"FormatError")}}class kn extends la{constructor(t){super(t,"AbortException")}}function xm(u){(typeof u!="object"||(u==null?void 0:u.length)===void 0)&&st("Invalid argument for bytesToString");const t=u.length,e=8192;if(t>24&255,u>>16&255,u>>8&255,u&255)}function VA(){const u=new Uint8Array(4);return u[0]=1,new Uint32Array(u.buffer,0,1)[0]===1}function WA(){try{return new Function(""),!0}catch{return!1}}class Wt{static get isLittleEndian(){return V(this,"isLittleEndian",VA())}static get isEvalSupported(){return V(this,"isEvalSupported",WA())}static get isOffscreenCanvasSupported(){return V(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get isImageDecoderSupported(){return V(this,"isImageDecoderSupported",typeof ImageDecoder<"u")}static get platform(){const{platform:t,userAgent:e}=navigator;return V(this,"platform",{isAndroid:e.includes("Android"),isLinux:t.includes("Linux"),isMac:t.includes("Mac"),isWindows:t.includes("Win"),isFirefox:e.includes("Firefox")})}static get isCSSRoundSupported(){var t,e;return V(this,"isCSSRoundSupported",(e=(t=globalThis.CSS)==null?void 0:t.supports)==null?void 0:e.call(t,"width: round(1.5px, 1px)"))}}const pp=Array.from(Array(256).keys(),u=>u.toString(16).padStart(2,"0"));var Sa,vd,Hl,_p;class I{static makeHexColor(t,e,s){return`#${pp[t]}${pp[e]}${pp[s]}`}static domMatrixToTransform(t){return[t.a,t.b,t.c,t.d,t.e,t.f]}static scaleMinMax(t,e){let s;t[0]?(t[0]<0&&(s=e[0],e[0]=e[2],e[2]=s),e[0]*=t[0],e[2]*=t[0],t[3]<0&&(s=e[1],e[1]=e[3],e[3]=s),e[1]*=t[3],e[3]*=t[3]):(s=e[0],e[0]=e[1],e[1]=s,s=e[2],e[2]=e[3],e[3]=s,t[1]<0&&(s=e[1],e[1]=e[3],e[3]=s),e[1]*=t[1],e[3]*=t[1],t[2]<0&&(s=e[0],e[0]=e[2],e[2]=s),e[0]*=t[2],e[2]*=t[2]),e[0]+=t[4],e[1]+=t[5],e[2]+=t[4],e[3]+=t[5]}static transform(t,e){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],t[0]*e[4]+t[2]*e[5]+t[4],t[1]*e[4]+t[3]*e[5]+t[5]]}static multiplyByDOMMatrix(t,e){return[t[0]*e.a+t[2]*e.b,t[1]*e.a+t[3]*e.b,t[0]*e.c+t[2]*e.d,t[1]*e.c+t[3]*e.d,t[0]*e.e+t[2]*e.f+t[4],t[1]*e.e+t[3]*e.f+t[5]]}static applyTransform(t,e,s=0){const i=t[s],r=t[s+1];t[s]=i*e[0]+r*e[2]+e[4],t[s+1]=i*e[1]+r*e[3]+e[5]}static applyTransformToBezier(t,e,s=0){const i=e[0],r=e[1],a=e[2],o=e[3],l=e[4],h=e[5];for(let c=0;c<6;c+=2){const f=t[s+c],g=t[s+c+1];t[s+c]=f*i+g*a+l,t[s+c+1]=f*r+g*o+h}}static applyInverseTransform(t,e){const s=t[0],i=t[1],r=e[0]*e[3]-e[1]*e[2];t[0]=(s*e[3]-i*e[2]+e[2]*e[5]-e[4]*e[3])/r,t[1]=(-s*e[1]+i*e[0]+e[4]*e[1]-e[5]*e[0])/r}static axialAlignedBoundingBox(t,e,s){const i=e[0],r=e[1],a=e[2],o=e[3],l=e[4],h=e[5],c=t[0],f=t[1],g=t[2],m=t[3];let A=i*c+l,y=A,v=i*g+l,w=v,S=o*f+h,_=S,E=o*m+h,C=E;if(r!==0||a!==0){const T=r*c,x=r*g,P=a*f,M=a*m;A+=P,w+=P,v+=M,y+=M,S+=T,C+=T,E+=x,_+=x}s[0]=Math.min(s[0],A,v,y,w),s[1]=Math.min(s[1],S,E,_,C),s[2]=Math.max(s[2],A,v,y,w),s[3]=Math.max(s[3],S,E,_,C)}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}static singularValueDecompose2dScale(t,e){const s=t[0],i=t[1],r=t[2],a=t[3],o=s**2+i**2,l=s*r+i*a,h=r**2+a**2,c=(o+h)/2,f=Math.sqrt(c**2-(o*h-l**2));e[0]=Math.sqrt(c+f||1),e[1]=Math.sqrt(c-f||1)}static normalizeRect(t){const e=t.slice(0);return t[0]>t[2]&&(e[0]=t[2],e[2]=t[0]),t[1]>t[3]&&(e[1]=t[3],e[3]=t[1]),e}static intersect(t,e){const s=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),i=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(s>i)return null;const r=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),a=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return r>a?null:[s,r,i,a]}static pointBoundingBox(t,e,s){s[0]=Math.min(s[0],t),s[1]=Math.min(s[1],e),s[2]=Math.max(s[2],t),s[3]=Math.max(s[3],e)}static rectBoundingBox(t,e,s,i,r){r[0]=Math.min(r[0],t,s),r[1]=Math.min(r[1],e,i),r[2]=Math.max(r[2],t,s),r[3]=Math.max(r[3],e,i)}static bezierBoundingBox(t,e,s,i,r,a,o,l,h){h[0]=Math.min(h[0],t,o),h[1]=Math.min(h[1],e,l),h[2]=Math.max(h[2],t,o),h[3]=Math.max(h[3],e,l),b(this,Hl,_p).call(this,t,s,r,o,e,i,a,l,3*(-t+3*(s-r)+o),6*(t-2*s+r),3*(s-t),h),b(this,Hl,_p).call(this,t,s,r,o,e,i,a,l,3*(-e+3*(i-a)+l),6*(e-2*i+a),3*(i-e),h)}}Sa=new WeakSet,vd=function(t,e,s,i,r,a,o,l,h,c){if(h<=0||h>=1)return;const f=1-h,g=h*h,m=g*h,A=f*(f*(f*t+3*h*e)+3*g*s)+m*i,y=f*(f*(f*r+3*h*a)+3*g*o)+m*l;c[0]=Math.min(c[0],A),c[1]=Math.min(c[1],y),c[2]=Math.max(c[2],A),c[3]=Math.max(c[3],y)},Hl=new WeakSet,_p=function(t,e,s,i,r,a,o,l,h,c,f,g){if(Math.abs(h)<1e-12){Math.abs(c)>=1e-12&&b(this,Sa,vd).call(this,t,e,s,i,r,a,o,l,-f/c,g);return}const m=c**2-4*f*h;if(m<0)return;const A=Math.sqrt(m),y=2*h;b(this,Sa,vd).call(this,t,e,s,i,r,a,o,l,(-c+A)/y,g),b(this,Sa,vd).call(this,t,e,s,i,r,a,o,l,(-c-A)/y,g)},d(I,Sa),d(I,Hl);function XA(u){return decodeURIComponent(escape(u))}let gp=null,im=null;function qA(u){return gp||(gp=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,im=new Map([["ſt","ſt"]])),u.replaceAll(gp,(t,e,s)=>e?e.normalize("NFKC"):im.get(s))}function km(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();const u=new Uint8Array(32);return crypto.getRandomValues(u),xm(u)}const Hg="pdfjs_internal_id_";function YA(u,t,e){if(!Array.isArray(e)||e.length<2)return!1;const[s,i,...r]=e;if(!u(s)&&!Number.isInteger(s)||!t(i))return!1;const a=r.length;let o=!0;switch(i.name){case"XYZ":if(a<2||a>3)return!1;break;case"Fit":case"FitB":return a===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(a>1)return!1;break;case"FitR":if(a!==4)return!1;o=!1;break;default:return!1}for(const l of r)if(!(typeof l=="number"||o&&l===null))return!1;return!0}function ne(u,t,e){return Math.min(Math.max(u,t),e)}function Pm(u){return Uint8Array.prototype.toBase64?u.toBase64():btoa(xm(u))}function KA(u){return Uint8Array.fromBase64?Uint8Array.fromBase64(u):ad(atob(u))}typeof Promise.try!="function"&&(Promise.try=function(u,...t){return new Promise(e=>{e(u(...t))})});typeof Math.sumPrecise!="function"&&(Math.sumPrecise=function(u){return u.reduce((t,e)=>t+e,0)});const Is="http://www.w3.org/2000/svg",Fn=class Fn{};k(Fn,"CSS",96),k(Fn,"PDF",72),k(Fn,"PDF_TO_CSS_UNITS",Fn.CSS/Fn.PDF);let Pn=Fn;async function od(u,t="text"){if(gl(u,document.baseURI)){const e=await fetch(u);if(!e.ok)throw new Error(e.statusText);switch(t){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"json":return e.json()}return e.text()}return new Promise((e,s)=>{const i=new XMLHttpRequest;i.open("GET",u,!0),i.responseType=t,i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE){if(i.status===200||i.status===0){switch(t){case"arraybuffer":case"blob":case"json":e(i.response);return}e(i.responseText);return}s(new Error(i.statusText))}},i.send(null)})}class ld{constructor({viewBox:t,userUnit:e,scale:s,rotation:i,offsetX:r=0,offsetY:a=0,dontFlip:o=!1}){this.viewBox=t,this.userUnit=e,this.scale=s,this.rotation=i,this.offsetX=r,this.offsetY=a,s*=e;const l=(t[2]+t[0])/2,h=(t[3]+t[1])/2;let c,f,g,m;switch(i%=360,i<0&&(i+=360),i){case 180:c=-1,f=0,g=0,m=1;break;case 90:c=0,f=1,g=1,m=0;break;case 270:c=0,f=-1,g=-1,m=0;break;case 0:c=1,f=0,g=0,m=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}o&&(g=-g,m=-m);let A,y,v,w;c===0?(A=Math.abs(h-t[1])*s+r,y=Math.abs(l-t[0])*s+a,v=(t[3]-t[1])*s,w=(t[2]-t[0])*s):(A=Math.abs(l-t[0])*s+r,y=Math.abs(h-t[1])*s+a,v=(t[2]-t[0])*s,w=(t[3]-t[1])*s),this.transform=[c*s,f*s,g*s,m*s,A-c*s*l-g*s*h,y-f*s*l-m*s*h],this.width=v,this.height=w}get rawDims(){const t=this.viewBox;return V(this,"rawDims",{pageWidth:t[2]-t[0],pageHeight:t[3]-t[1],pageX:t[0],pageY:t[1]})}clone({scale:t=this.scale,rotation:e=this.rotation,offsetX:s=this.offsetX,offsetY:i=this.offsetY,dontFlip:r=!1}={}){return new ld({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:t,rotation:e,offsetX:s,offsetY:i,dontFlip:r})}convertToViewportPoint(t,e){const s=[t,e];return I.applyTransform(s,this.transform),s}convertToViewportRectangle(t){const e=[t[0],t[1]];I.applyTransform(e,this.transform);const s=[t[2],t[3]];return I.applyTransform(s,this.transform),[e[0],e[1],s[0],s[1]]}convertToPdfPoint(t,e){const s=[t,e];return I.applyInverseTransform(s,this.transform),s}}class $g extends la{constructor(t,e=0){super(t,"RenderingCancelledException"),this.extraDelay=e}}function np(u){const t=u.length;let e=0;for(;e{try{return new URL(o)}catch{try{return new URL(decodeURIComponent(o))}catch{try{return new URL(o,"https://foo.bar")}catch{try{return new URL(decodeURIComponent(o),"https://foo.bar")}catch{return null}}}}})(u);if(!s)return t;const i=o=>{try{let l=decodeURIComponent(o);return l.includes("/")?(l=l.split("/").at(-1),l.test(/^\.pdf$/i)?l:o):l}catch{return o}},r=/\.pdf$/i,a=s.pathname.split("/").at(-1);if(r.test(a))return i(a);if(s.searchParams.size>0){const o=Array.from(s.searchParams.values()).reverse();for(const h of o)if(r.test(h))return i(h);const l=Array.from(s.searchParams.keys()).reverse();for(const h of l)if(r.test(h))return i(h)}if(s.hash){const l=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i.exec(s.hash);if(l)return i(l[0])}return t}class nm{constructor(){k(this,"started",Object.create(null));k(this,"times",[])}time(t){t in this.started&&z(`Timer is already running for ${t}`),this.started[t]=Date.now()}timeEnd(t){t in this.started||z(`Timer has not been started for ${t}`),this.times.push({name:t,start:this.started[t],end:Date.now()}),delete this.started[t]}toString(){const t=[];let e=0;for(const{name:s}of this.times)e=Math.max(s.length,e);for(const{name:s,start:i,end:r}of this.times)t.push(`${s.padEnd(e)} ${r-i}ms +var FA=Object.defineProperty;var NA=(u,t,e)=>t in u?FA(u,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):u[t]=e;var k=(u,t,e)=>(NA(u,typeof t!="symbol"?t+"":t,e),e),dp=(u,t,e)=>{if(!t.has(u))throw TypeError("Cannot "+e)};var n=(u,t,e)=>(dp(u,t,"read from private field"),e?e.call(u):t.get(u)),d=(u,t,e)=>{if(t.has(u))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(u):t.set(u,e)},p=(u,t,e,s)=>(dp(u,t,"write to private field"),s?s.call(u,e):t.set(u,e),e);var St=(u,t,e,s)=>({set _(i){p(u,t,i,e)},get _(){return n(u,t,s)}}),b=(u,t,e)=>(dp(u,t,"access private method"),e);import{_ as OA}from"./index-7802977e.js";const ie=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),wp=[.001,0,0,.001,0,0],up=1.35,Pe={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},ki={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},Em="pdfjs_internal_editor_",$={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,POPUP:16,SIGNATURE:101,COMMENT:102},X={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,HIGHLIGHT_COLOR:31,HIGHLIGHT_THICKNESS:32,HIGHLIGHT_FREE:33,HIGHLIGHT_SHOW_ALL:34,DRAW_STEP:41},BA={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},Ot={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},wd={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},wt={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},da={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},ep={ERRORS:0,WARNINGS:1,INFOS:5},Fl={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93,rawFillPath:94},ud={moveTo:0,lineTo:1,curveTo:2,closePath:3},HA={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let sp=ep.WARNINGS;function $A(u){Number.isInteger(u)&&(sp=u)}function zA(){return sp}function ip(u){sp>=ep.INFOS&&console.log(`Info: ${u}`)}function z(u){sp>=ep.WARNINGS&&console.log(`Warning: ${u}`)}function st(u){throw new Error(u)}function _t(u,t){u||st(t)}function GA(u){switch(u==null?void 0:u.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function Cm(u,t=null,e=null){if(!u)return null;if(e&&typeof u=="string"){if(e.addDefaultProtocol&&u.startsWith("www.")){const i=u.match(/\./g);(i==null?void 0:i.length)>=2&&(u=`http://${u}`)}if(e.tryConvertEncoding)try{u=XA(u)}catch{}}const s=t?URL.parse(u,t):URL.parse(u);return GA(s)?s:null}function Tm(u,t,e=!1){const s=URL.parse(u);return s?(s.hash=t,s.href):e&&Cm(u,"http://example.com")?u.split("#",1)[0]+`${t?`#${t}`:""}`:""}function V(u,t,e,s=!1){return Object.defineProperty(u,t,{value:e,enumerable:!s,configurable:!0,writable:!1}),e}const la=function(){function t(e,s){this.message=e,this.name=s}return t.prototype=new Error,t.constructor=t,t}();class sm extends la{constructor(t,e){super(t,"PasswordException"),this.code=e}}class fp extends la{constructor(t,e){super(t,"UnknownErrorException"),this.details=e}}class vp extends la{constructor(t){super(t,"InvalidPDFException")}}class Kd extends la{constructor(t,e,s){super(t,"ResponseException"),this.status=e,this.missing=s}}class UA extends la{constructor(t){super(t,"FormatError")}}class kn extends la{constructor(t){super(t,"AbortException")}}function xm(u){(typeof u!="object"||(u==null?void 0:u.length)===void 0)&&st("Invalid argument for bytesToString");const t=u.length,e=8192;if(t>24&255,u>>16&255,u>>8&255,u&255)}function VA(){const u=new Uint8Array(4);return u[0]=1,new Uint32Array(u.buffer,0,1)[0]===1}function WA(){try{return new Function(""),!0}catch{return!1}}class Wt{static get isLittleEndian(){return V(this,"isLittleEndian",VA())}static get isEvalSupported(){return V(this,"isEvalSupported",WA())}static get isOffscreenCanvasSupported(){return V(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get isImageDecoderSupported(){return V(this,"isImageDecoderSupported",typeof ImageDecoder<"u")}static get platform(){const{platform:t,userAgent:e}=navigator;return V(this,"platform",{isAndroid:e.includes("Android"),isLinux:t.includes("Linux"),isMac:t.includes("Mac"),isWindows:t.includes("Win"),isFirefox:e.includes("Firefox")})}static get isCSSRoundSupported(){var t,e;return V(this,"isCSSRoundSupported",(e=(t=globalThis.CSS)==null?void 0:t.supports)==null?void 0:e.call(t,"width: round(1.5px, 1px)"))}}const pp=Array.from(Array(256).keys(),u=>u.toString(16).padStart(2,"0"));var Sa,vd,Hl,_p;class I{static makeHexColor(t,e,s){return`#${pp[t]}${pp[e]}${pp[s]}`}static domMatrixToTransform(t){return[t.a,t.b,t.c,t.d,t.e,t.f]}static scaleMinMax(t,e){let s;t[0]?(t[0]<0&&(s=e[0],e[0]=e[2],e[2]=s),e[0]*=t[0],e[2]*=t[0],t[3]<0&&(s=e[1],e[1]=e[3],e[3]=s),e[1]*=t[3],e[3]*=t[3]):(s=e[0],e[0]=e[1],e[1]=s,s=e[2],e[2]=e[3],e[3]=s,t[1]<0&&(s=e[1],e[1]=e[3],e[3]=s),e[1]*=t[1],e[3]*=t[1],t[2]<0&&(s=e[0],e[0]=e[2],e[2]=s),e[0]*=t[2],e[2]*=t[2]),e[0]+=t[4],e[1]+=t[5],e[2]+=t[4],e[3]+=t[5]}static transform(t,e){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],t[0]*e[4]+t[2]*e[5]+t[4],t[1]*e[4]+t[3]*e[5]+t[5]]}static multiplyByDOMMatrix(t,e){return[t[0]*e.a+t[2]*e.b,t[1]*e.a+t[3]*e.b,t[0]*e.c+t[2]*e.d,t[1]*e.c+t[3]*e.d,t[0]*e.e+t[2]*e.f+t[4],t[1]*e.e+t[3]*e.f+t[5]]}static applyTransform(t,e,s=0){const i=t[s],r=t[s+1];t[s]=i*e[0]+r*e[2]+e[4],t[s+1]=i*e[1]+r*e[3]+e[5]}static applyTransformToBezier(t,e,s=0){const i=e[0],r=e[1],a=e[2],o=e[3],l=e[4],h=e[5];for(let c=0;c<6;c+=2){const f=t[s+c],g=t[s+c+1];t[s+c]=f*i+g*a+l,t[s+c+1]=f*r+g*o+h}}static applyInverseTransform(t,e){const s=t[0],i=t[1],r=e[0]*e[3]-e[1]*e[2];t[0]=(s*e[3]-i*e[2]+e[2]*e[5]-e[4]*e[3])/r,t[1]=(-s*e[1]+i*e[0]+e[4]*e[1]-e[5]*e[0])/r}static axialAlignedBoundingBox(t,e,s){const i=e[0],r=e[1],a=e[2],o=e[3],l=e[4],h=e[5],c=t[0],f=t[1],g=t[2],m=t[3];let A=i*c+l,y=A,v=i*g+l,w=v,S=o*f+h,_=S,E=o*m+h,C=E;if(r!==0||a!==0){const T=r*c,x=r*g,P=a*f,M=a*m;A+=P,w+=P,v+=M,y+=M,S+=T,C+=T,E+=x,_+=x}s[0]=Math.min(s[0],A,v,y,w),s[1]=Math.min(s[1],S,E,_,C),s[2]=Math.max(s[2],A,v,y,w),s[3]=Math.max(s[3],S,E,_,C)}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}static singularValueDecompose2dScale(t,e){const s=t[0],i=t[1],r=t[2],a=t[3],o=s**2+i**2,l=s*r+i*a,h=r**2+a**2,c=(o+h)/2,f=Math.sqrt(c**2-(o*h-l**2));e[0]=Math.sqrt(c+f||1),e[1]=Math.sqrt(c-f||1)}static normalizeRect(t){const e=t.slice(0);return t[0]>t[2]&&(e[0]=t[2],e[2]=t[0]),t[1]>t[3]&&(e[1]=t[3],e[3]=t[1]),e}static intersect(t,e){const s=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),i=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(s>i)return null;const r=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),a=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return r>a?null:[s,r,i,a]}static pointBoundingBox(t,e,s){s[0]=Math.min(s[0],t),s[1]=Math.min(s[1],e),s[2]=Math.max(s[2],t),s[3]=Math.max(s[3],e)}static rectBoundingBox(t,e,s,i,r){r[0]=Math.min(r[0],t,s),r[1]=Math.min(r[1],e,i),r[2]=Math.max(r[2],t,s),r[3]=Math.max(r[3],e,i)}static bezierBoundingBox(t,e,s,i,r,a,o,l,h){h[0]=Math.min(h[0],t,o),h[1]=Math.min(h[1],e,l),h[2]=Math.max(h[2],t,o),h[3]=Math.max(h[3],e,l),b(this,Hl,_p).call(this,t,s,r,o,e,i,a,l,3*(-t+3*(s-r)+o),6*(t-2*s+r),3*(s-t),h),b(this,Hl,_p).call(this,t,s,r,o,e,i,a,l,3*(-e+3*(i-a)+l),6*(e-2*i+a),3*(i-e),h)}}Sa=new WeakSet,vd=function(t,e,s,i,r,a,o,l,h,c){if(h<=0||h>=1)return;const f=1-h,g=h*h,m=g*h,A=f*(f*(f*t+3*h*e)+3*g*s)+m*i,y=f*(f*(f*r+3*h*a)+3*g*o)+m*l;c[0]=Math.min(c[0],A),c[1]=Math.min(c[1],y),c[2]=Math.max(c[2],A),c[3]=Math.max(c[3],y)},Hl=new WeakSet,_p=function(t,e,s,i,r,a,o,l,h,c,f,g){if(Math.abs(h)<1e-12){Math.abs(c)>=1e-12&&b(this,Sa,vd).call(this,t,e,s,i,r,a,o,l,-f/c,g);return}const m=c**2-4*f*h;if(m<0)return;const A=Math.sqrt(m),y=2*h;b(this,Sa,vd).call(this,t,e,s,i,r,a,o,l,(-c+A)/y,g),b(this,Sa,vd).call(this,t,e,s,i,r,a,o,l,(-c-A)/y,g)},d(I,Sa),d(I,Hl);function XA(u){return decodeURIComponent(escape(u))}let gp=null,im=null;function qA(u){return gp||(gp=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,im=new Map([["ſt","ſt"]])),u.replaceAll(gp,(t,e,s)=>e?e.normalize("NFKC"):im.get(s))}function km(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();const u=new Uint8Array(32);return crypto.getRandomValues(u),xm(u)}const Hg="pdfjs_internal_id_";function YA(u,t,e){if(!Array.isArray(e)||e.length<2)return!1;const[s,i,...r]=e;if(!u(s)&&!Number.isInteger(s)||!t(i))return!1;const a=r.length;let o=!0;switch(i.name){case"XYZ":if(a<2||a>3)return!1;break;case"Fit":case"FitB":return a===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(a>1)return!1;break;case"FitR":if(a!==4)return!1;o=!1;break;default:return!1}for(const l of r)if(!(typeof l=="number"||o&&l===null))return!1;return!0}function ne(u,t,e){return Math.min(Math.max(u,t),e)}function Pm(u){return Uint8Array.prototype.toBase64?u.toBase64():btoa(xm(u))}function KA(u){return Uint8Array.fromBase64?Uint8Array.fromBase64(u):ad(atob(u))}typeof Promise.try!="function"&&(Promise.try=function(u,...t){return new Promise(e=>{e(u(...t))})});typeof Math.sumPrecise!="function"&&(Math.sumPrecise=function(u){return u.reduce((t,e)=>t+e,0)});const Is="http://www.w3.org/2000/svg",Fn=class Fn{};k(Fn,"CSS",96),k(Fn,"PDF",72),k(Fn,"PDF_TO_CSS_UNITS",Fn.CSS/Fn.PDF);let Pn=Fn;async function od(u,t="text"){if(gl(u,document.baseURI)){const e=await fetch(u);if(!e.ok)throw new Error(e.statusText);switch(t){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"json":return e.json()}return e.text()}return new Promise((e,s)=>{const i=new XMLHttpRequest;i.open("GET",u,!0),i.responseType=t,i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE){if(i.status===200||i.status===0){switch(t){case"arraybuffer":case"blob":case"json":e(i.response);return}e(i.responseText);return}s(new Error(i.statusText))}},i.send(null)})}class ld{constructor({viewBox:t,userUnit:e,scale:s,rotation:i,offsetX:r=0,offsetY:a=0,dontFlip:o=!1}){this.viewBox=t,this.userUnit=e,this.scale=s,this.rotation=i,this.offsetX=r,this.offsetY=a,s*=e;const l=(t[2]+t[0])/2,h=(t[3]+t[1])/2;let c,f,g,m;switch(i%=360,i<0&&(i+=360),i){case 180:c=-1,f=0,g=0,m=1;break;case 90:c=0,f=1,g=1,m=0;break;case 270:c=0,f=-1,g=-1,m=0;break;case 0:c=1,f=0,g=0,m=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}o&&(g=-g,m=-m);let A,y,v,w;c===0?(A=Math.abs(h-t[1])*s+r,y=Math.abs(l-t[0])*s+a,v=(t[3]-t[1])*s,w=(t[2]-t[0])*s):(A=Math.abs(l-t[0])*s+r,y=Math.abs(h-t[1])*s+a,v=(t[2]-t[0])*s,w=(t[3]-t[1])*s),this.transform=[c*s,f*s,g*s,m*s,A-c*s*l-g*s*h,y-f*s*l-m*s*h],this.width=v,this.height=w}get rawDims(){const t=this.viewBox;return V(this,"rawDims",{pageWidth:t[2]-t[0],pageHeight:t[3]-t[1],pageX:t[0],pageY:t[1]})}clone({scale:t=this.scale,rotation:e=this.rotation,offsetX:s=this.offsetX,offsetY:i=this.offsetY,dontFlip:r=!1}={}){return new ld({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:t,rotation:e,offsetX:s,offsetY:i,dontFlip:r})}convertToViewportPoint(t,e){const s=[t,e];return I.applyTransform(s,this.transform),s}convertToViewportRectangle(t){const e=[t[0],t[1]];I.applyTransform(e,this.transform);const s=[t[2],t[3]];return I.applyTransform(s,this.transform),[e[0],e[1],s[0],s[1]]}convertToPdfPoint(t,e){const s=[t,e];return I.applyInverseTransform(s,this.transform),s}}class $g extends la{constructor(t,e=0){super(t,"RenderingCancelledException"),this.extraDelay=e}}function np(u){const t=u.length;let e=0;for(;e{try{return new URL(o)}catch{try{return new URL(decodeURIComponent(o))}catch{try{return new URL(o,"https://foo.bar")}catch{try{return new URL(decodeURIComponent(o),"https://foo.bar")}catch{return null}}}}})(u);if(!s)return t;const i=o=>{try{let l=decodeURIComponent(o);return l.includes("/")?(l=l.split("/").at(-1),l.test(/^\.pdf$/i)?l:o):l}catch{return o}},r=/\.pdf$/i,a=s.pathname.split("/").at(-1);if(r.test(a))return i(a);if(s.searchParams.size>0){const o=Array.from(s.searchParams.values()).reverse();for(const h of o)if(r.test(h))return i(h);const l=Array.from(s.searchParams.keys()).reverse();for(const h of l)if(r.test(h))return i(h)}if(s.hash){const l=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i.exec(s.hash);if(l)return i(l[0])}return t}class nm{constructor(){k(this,"started",Object.create(null));k(this,"times",[])}time(t){t in this.started&&z(`Timer is already running for ${t}`),this.started[t]=Date.now()}timeEnd(t){t in this.started||z(`Timer has not been started for ${t}`),this.times.push({name:t,start:this.started[t],end:Date.now()}),delete this.started[t]}toString(){const t=[];let e=0;for(const{name:s}of this.times)e=Math.max(s.length,e);for(const{name:s,start:i,end:r}of this.times)t.push(`${s.padEnd(e)} ${r-i}ms `);return t.join("")}}function gl(u,t){const e=t?URL.parse(u,t):URL.parse(u);return(e==null?void 0:e.protocol)==="http:"||(e==null?void 0:e.protocol)==="https:"}function je(u){u.preventDefault()}function vt(u){u.preventDefault(),u.stopPropagation()}function ZA(u){console.log("Deprecated API usage: "+u)}var $l;class Qd{static toDateObject(t){if(t instanceof Date)return t;if(!t||typeof t!="string")return null;n(this,$l)||p(this,$l,new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"));const e=n(this,$l).exec(t);if(!e)return null;const s=parseInt(e[1],10);let i=parseInt(e[2],10);i=i>=1&&i<=12?i-1:0;let r=parseInt(e[3],10);r=r>=1&&r<=31?r:1;let a=parseInt(e[4],10);a=a>=0&&a<=23?a:0;let o=parseInt(e[5],10);o=o>=0&&o<=59?o:0;let l=parseInt(e[6],10);l=l>=0&&l<=59?l:0;const h=e[7]||"Z";let c=parseInt(e[8],10);c=c>=0&&c<=23?c:0;let f=parseInt(e[9],10)||0;return f=f>=0&&f<=59?f:0,h==="-"?(a+=c,o+=f):h==="+"&&(a-=c,o-=f),new Date(Date.UTC(s,i,r,a,o,l))}}$l=new WeakMap,d(Qd,$l,void 0);function ty(u,{scale:t=1,rotation:e=0}){const{width:s,height:i}=u.attributes.style,r=[0,0,parseInt(s),parseInt(i)];return new ld({viewBox:r,userUnit:1,scale:t,rotation:e})}function rp(u){if(u.startsWith("#")){const t=parseInt(u.slice(1),16);return[(t&16711680)>>16,(t&65280)>>8,t&255]}return u.startsWith("rgb(")?u.slice(4,-1).split(",").map(t=>parseInt(t)):u.startsWith("rgba(")?u.slice(5,-1).split(",").map(t=>parseInt(t)).slice(0,3):(z(`Not a valid color format: "${u}"`),[0,0,0])}function ey(u){const t=document.createElement("span");t.style.visibility="hidden",t.style.colorScheme="only light",document.body.append(t);for(const e of u.keys()){t.style.color=e;const s=window.getComputedStyle(t).color;u.set(e,rp(s))}t.remove()}function dt(u){const{a:t,b:e,c:s,d:i,e:r,f:a}=u.getTransform();return[t,e,s,i,r,a]}function os(u){const{a:t,b:e,c:s,d:i,e:r,f:a}=u.getTransform().invertSelf();return[t,e,s,i,r,a]}function ra(u,t,e=!1,s=!0){if(t instanceof ld){const{pageWidth:i,pageHeight:r}=t.rawDims,{style:a}=u,o=Wt.isCSSRoundSupported,l=`var(--total-scale-factor) * ${i}px`,h=`var(--total-scale-factor) * ${r}px`,c=o?`round(down, ${l}, var(--scale-round-x))`:`calc(${l})`,f=o?`round(down, ${h}, var(--scale-round-y))`:`calc(${h})`;!e||t.rotation%180===0?(a.width=c,a.height=f):(a.width=f,a.height=c)}s&&u.setAttribute("data-main-rotation",t.rotation)}class Ds{constructor(){const{pixelRatio:t}=Ds;this.sx=t,this.sy=t}get scaled(){return this.sx!==1||this.sy!==1}get symmetric(){return this.sx===this.sy}limitCanvas(t,e,s,i,r=-1){let a=1/0,o=1/0,l=1/0;s=Ds.capPixels(s,r),s>0&&(a=Math.sqrt(s/(t*e))),i!==-1&&(o=i/t,l=i/e);const h=Math.min(a,o,l);return this.sx>h||this.sy>h?(this.sx=h,this.sy=h,!0):!1}static get pixelRatio(){return globalThis.devicePixelRatio||1}static capPixels(t,e){if(e>=0){const s=Math.ceil(window.screen.availWidth*window.screen.availHeight*this.pixelRatio**2*(1+e/100));return t>0?Math.min(t,s):s}return t}}const Sp=["image/apng","image/avif","image/bmp","image/gif","image/jpeg","image/png","image/svg+xml","image/webp","image/x-icon"];var Pi,Mi,Ie,Hs,zl,Ea,Ca,Gl,ou,Mm,lu,Rm,hu,Dm,Ri,ua,Bn,ml;const Os=class Os{constructor(t){d(this,lu);d(this,hu);d(this,Ri);d(this,Bn);d(this,Pi,null);d(this,Mi,null);d(this,Ie,void 0);d(this,Hs,null);d(this,zl,null);d(this,Ea,null);d(this,Ca,null);p(this,Ie,t),n(Os,Gl)||p(Os,Gl,Object.freeze({freetext:"pdfjs-editor-remove-freetext-button",highlight:"pdfjs-editor-remove-highlight-button",ink:"pdfjs-editor-remove-ink-button",stamp:"pdfjs-editor-remove-stamp-button",signature:"pdfjs-editor-remove-signature-button"}))}render(){const t=p(this,Pi,document.createElement("div"));t.classList.add("editToolbar","hidden"),t.setAttribute("role","toolbar");const e=n(this,Ie)._uiManager._signal;e instanceof AbortSignal&&!e.aborted&&(t.addEventListener("contextmenu",je,{signal:e}),t.addEventListener("pointerdown",b(Os,ou,Mm),{signal:e}));const s=p(this,Hs,document.createElement("div"));s.className="buttons",t.append(s);const i=n(this,Ie).toolbarPosition;if(i){const{style:r}=t,a=n(this,Ie)._uiManager.direction==="ltr"?1-i[0]:i[0];r.insetInlineEnd=`${100*a}%`,r.top=`calc(${100*i[1]}% + var(--editor-toolbar-vert-offset))`}return t}get div(){return n(this,Pi)}hide(){var t;n(this,Pi).classList.add("hidden"),(t=n(this,Mi))==null||t.hideDropdown()}show(){var t,e;n(this,Pi).classList.remove("hidden"),(t=n(this,zl))==null||t.shown(),(e=n(this,Ea))==null||e.shown()}addDeleteButton(){const{editorType:t,_uiManager:e}=n(this,Ie),s=document.createElement("button");s.classList.add("basic","deleteButton"),s.tabIndex=0,s.setAttribute("data-l10n-id",n(Os,Gl)[t]),b(this,Ri,ua).call(this,s)&&s.addEventListener("click",i=>{e.delete()},{signal:e._signal}),n(this,Hs).append(s)}async addAltText(t){const e=await t.render();b(this,Ri,ua).call(this,e),n(this,Hs).append(e,n(this,Bn,ml)),p(this,zl,t)}addComment(t){if(n(this,Ea))return;const e=t.render();e&&(b(this,Ri,ua).call(this,e),n(this,Hs).append(e,n(this,Bn,ml)),p(this,Ea,t),t.toolbar=this)}addColorPicker(t){if(n(this,Mi))return;p(this,Mi,t);const e=t.renderButton();b(this,Ri,ua).call(this,e),n(this,Hs).append(e,n(this,Bn,ml))}async addEditSignatureButton(t){const e=p(this,Ca,await t.renderEditButton(n(this,Ie)));b(this,Ri,ua).call(this,e),n(this,Hs).append(e,n(this,Bn,ml))}async addButton(t,e){switch(t){case"colorPicker":this.addColorPicker(e);break;case"altText":await this.addAltText(e);break;case"editSignature":await this.addEditSignatureButton(e);break;case"delete":this.addDeleteButton();break;case"comment":this.addComment(e);break}}updateEditSignatureButton(t){n(this,Ca)&&(n(this,Ca).title=t)}remove(){var t;n(this,Pi).remove(),(t=n(this,Mi))==null||t.destroy(),p(this,Mi,null)}};Pi=new WeakMap,Mi=new WeakMap,Ie=new WeakMap,Hs=new WeakMap,zl=new WeakMap,Ea=new WeakMap,Ca=new WeakMap,Gl=new WeakMap,ou=new WeakSet,Mm=function(t){t.stopPropagation()},lu=new WeakSet,Rm=function(t){n(this,Ie)._focusEventsAllowed=!1,vt(t)},hu=new WeakSet,Dm=function(t){n(this,Ie)._focusEventsAllowed=!0,vt(t)},Ri=new WeakSet,ua=function(t){const e=n(this,Ie)._uiManager._signal;return!(e instanceof AbortSignal)||e.aborted?!1:(t.addEventListener("focusin",b(this,lu,Rm).bind(this),{capture:!0,signal:e}),t.addEventListener("focusout",b(this,hu,Dm).bind(this),{capture:!0,signal:e}),t.addEventListener("contextmenu",je,{signal:e}),!0)},Bn=new WeakSet,ml=function(){const t=document.createElement("div");return t.className="divider",t},d(Os,ou),d(Os,Gl,null);let Ep=Os;var Ul,Hn,$s,cu,Lm,du,Im,jl,Cp;class sy{constructor(t){d(this,cu);d(this,du);d(this,jl);d(this,Ul,null);d(this,Hn,null);d(this,$s,void 0);p(this,$s,t)}show(t,e,s){const[i,r]=b(this,du,Im).call(this,e,s),{style:a}=n(this,Hn)||p(this,Hn,b(this,cu,Lm).call(this));t.append(n(this,Hn)),a.insetInlineEnd=`${100*i}%`,a.top=`calc(${100*r}% + var(--editor-toolbar-vert-offset))`}hide(){n(this,Hn).remove()}}Ul=new WeakMap,Hn=new WeakMap,$s=new WeakMap,cu=new WeakSet,Lm=function(){const t=p(this,Hn,document.createElement("div"));t.className="editToolbar",t.setAttribute("role","toolbar");const e=n(this,$s)._signal;e instanceof AbortSignal&&!e.aborted&&t.addEventListener("contextmenu",je,{signal:e});const s=p(this,Ul,document.createElement("div"));return s.className="buttons",t.append(s),n(this,$s).hasCommentManager()&&b(this,jl,Cp).call(this,"commentButton","pdfjs-comment-floating-button","pdfjs-comment-floating-button-label",()=>{n(this,$s).commentSelection("floating_button")}),b(this,jl,Cp).call(this,"highlightButton","pdfjs-highlight-floating-button1","pdfjs-highlight-floating-button-label",()=>{n(this,$s).highlightSelection("floating_button")}),t},du=new WeakSet,Im=function(t,e){let s=0,i=0;for(const r of t){const a=r.y+r.height;if(as){i=o,s=a;continue}e?o>i&&(i=o):o(s.drawImage(i,0,0,1,1,0,0,1,3),new Uint32Array(s.getImageData(0,0,1,1).data.buffer)[0]===0));return V(this,"_isSVGFittingCanvas",r)}async getFromFile(t){const{lastModified:e,name:s,size:i,type:r}=t;return b(this,xa,_d).call(this,`${e}_${s}_${i}_${r}`,t)}async getFromUrl(t){return b(this,xa,_d).call(this,t,t)}async getFromBlob(t,e){const s=await e;return b(this,xa,_d).call(this,t,s)}async getFromId(t){n(this,qt)||p(this,qt,new Map);const e=n(this,qt).get(t);if(!e)return null;if(e.bitmap)return e.refCounter+=1,e;if(e.file)return this.getFromFile(e.file);if(e.blobPromise){const{blobPromise:s}=e;return delete e.blobPromise,this.getFromBlob(e.id,s)}return this.getFromUrl(e.url)}getFromCanvas(t,e){n(this,qt)||p(this,qt,new Map);let s=n(this,qt).get(t);if(s!=null&&s.bitmap)return s.refCounter+=1,s;const i=new OffscreenCanvas(e.width,e.height);return i.getContext("2d").drawImage(e,0,0),s={bitmap:i.transferToImageBitmap(),id:`image_${n(this,Ta)}_${St(this,Vl)._++}`,refCounter:1,isSvg:!1},n(this,qt).set(t,s),n(this,qt).set(s.id,s),s}getSvgUrl(t){const e=n(this,qt).get(t);return e!=null&&e.isSvg?e.svgUrl:null}deleteId(t){var i;n(this,qt)||p(this,qt,new Map);const e=n(this,qt).get(t);if(!e||(e.refCounter-=1,e.refCounter!==0))return;const{bitmap:s}=e;if(!e.url&&!e.file){const r=new OffscreenCanvas(s.width,s.height);r.getContext("bitmaprenderer").transferFromImageBitmap(s),e.blobPromise=r.convertToBlob()}(i=s.close)==null||i.call(s),e.bitmap=null}isValidId(t){return t.startsWith(`image_${n(this,Ta)}_`)}};Ta=new WeakMap,Vl=new WeakMap,qt=new WeakMap,xa=new WeakSet,_d=async function(t,e){n(this,qt)||p(this,qt,new Map);let s=n(this,qt).get(t);if(s===null)return null;if(s!=null&&s.bitmap)return s.refCounter+=1,s;try{s||(s={bitmap:null,id:`image_${n(this,Ta)}_${St(this,Vl)._++}`,refCounter:0,isSvg:!1});let i;if(typeof e=="string"?(s.url=e,i=await od(e,"blob")):e instanceof File?i=s.file=e:e instanceof Blob&&(i=e),i.type==="image/svg+xml"){const r=Yg._isSVGFittingCanvas,a=new FileReader,o=new Image,l=new Promise((h,c)=>{o.onload=()=>{s.bitmap=o,s.isSvg=!0,h()},a.onload=async()=>{const f=s.svgUrl=a.result;o.src=await r?`${f}#svgView(preserveAspectRatio(none))`:f},o.onerror=a.onerror=c});a.readAsDataURL(i),await l}else s.bitmap=await createImageBitmap(i);s.refCounter=1}catch(i){z(i),s=null}return n(this,qt).set(t,s),s&&n(this,qt).set(s.id,s),s};let Tp=Yg;var gt,Di,Wl,ht;class ny{constructor(t=128){d(this,gt,[]);d(this,Di,!1);d(this,Wl,void 0);d(this,ht,-1);p(this,Wl,t)}add({cmd:t,undo:e,post:s,mustExec:i,type:r=NaN,overwriteIfSameType:a=!1,keepUndo:o=!1}){if(i&&t(),n(this,Di))return;const l={cmd:t,undo:e,post:s,type:r};if(n(this,ht)===-1){n(this,gt).length>0&&(n(this,gt).length=0),p(this,ht,0),n(this,gt).push(l);return}if(a&&n(this,gt)[n(this,ht)].type===r){o&&(l.undo=n(this,gt)[n(this,ht)].undo),n(this,gt)[n(this,ht)]=l;return}const h=n(this,ht)+1;h===n(this,Wl)?n(this,gt).splice(0,1):(p(this,ht,h),h=0;e--)if(n(this,gt)[e].type!==t){n(this,gt).splice(e+1,n(this,ht)-e),p(this,ht,e);return}n(this,gt).length=0,p(this,ht,-1)}}destroy(){p(this,gt,null)}}gt=new WeakMap,Di=new WeakMap,Wl=new WeakMap,ht=new WeakMap;var fu,Nm;class hd{constructor(t){d(this,fu);this.buffer=[],this.callbacks=new Map,this.allKeys=new Set;const{isMac:e}=Wt.platform;for(const[s,i,r={}]of t)for(const a of s){const o=a.startsWith("mac+");e&&o?(this.callbacks.set(a.slice(4),{callback:i,options:r}),this.allKeys.add(a.split("+").at(-1))):!e&&!o&&(this.callbacks.set(a,{callback:i,options:r}),this.allKeys.add(a.split("+").at(-1)))}}exec(t,e){if(!this.allKeys.has(e.key))return;const s=this.callbacks.get(b(this,fu,Nm).call(this,e));if(!s)return;const{callback:i,options:{bubbles:r=!1,args:a=[],checker:o=null}}=s;o&&!o(t,e)||(i.bind(t,...a,e)(),r||vt(e))}}fu=new WeakSet,Nm=function(t){t.altKey&&this.buffer.push("alt"),t.ctrlKey&&this.buffer.push("ctrl"),t.metaKey&&this.buffer.push("meta"),t.shiftKey&&this.buffer.push("shift"),this.buffer.push(t.key);const e=this.buffer.join("+");return this.buffer.length=0,e};const pu=class pu{get _colors(){const t=new Map([["CanvasText",null],["Canvas",null]]);return ey(t),V(this,"_colors",t)}convert(t){const e=rp(t);if(!window.matchMedia("(forced-colors: active)").matches)return e;for(const[s,i]of this._colors)if(i.every((r,a)=>r===e[a]))return pu._colorsMapping.get(s);return e}getHexCode(t){const e=this._colors.get(t);return e?I.makeHexColor(...e):t}};k(pu,"_colorsMapping",new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]));let xp=pu;var ka,ue,Pa,Ct,Bt,Ma,zs,Ra,Fe,Gs,Li,Ii,Da,$n,cs,Ne,zn,Xl,ql,La,Yl,ds,Fi,Ia,Ni,us,gu,Oi,Fa,Kl,Bi,Gn,Na,Hi,Ql,Tt,Q,Us,$i,zi,Jl,Oa,Zl,Gi,fs,js,th,eh,Oe,Ba,Sd,sh,kp,mu,Om,bu,Bm,Un,bl,Au,Hm,yu,$m,wu,zm,ih,Pp,vu,Gm,nh,Mp,rh,Rp,_u,Um,Ht,Qt,qe,Fs,Su,jm,Eu,Vm,ah,Dp,Cu,Wm,jn,Al,oh,Lp;const wa=class wa{constructor(t,e,s,i,r,a,o,l,h,c,f,g,m,A,y,v){d(this,Ba);d(this,sh);d(this,mu);d(this,bu);d(this,Un);d(this,Au);d(this,yu);d(this,wu);d(this,ih);d(this,vu);d(this,nh);d(this,rh);d(this,_u);d(this,Ht);d(this,qe);d(this,Su);d(this,Eu);d(this,ah);d(this,Cu);d(this,jn);d(this,oh);d(this,ka,new AbortController);d(this,ue,null);d(this,Pa,null);d(this,Ct,new Map);d(this,Bt,new Map);d(this,Ma,null);d(this,zs,null);d(this,Ra,null);d(this,Fe,new ny);d(this,Gs,null);d(this,Li,null);d(this,Ii,null);d(this,Da,0);d(this,$n,new Set);d(this,cs,null);d(this,Ne,null);d(this,zn,new Set);k(this,"_editorUndoBar",null);d(this,Xl,!1);d(this,ql,!1);d(this,La,!1);d(this,Yl,null);d(this,ds,null);d(this,Fi,null);d(this,Ia,null);d(this,Ni,!1);d(this,us,null);d(this,gu,new iy);d(this,Oi,!1);d(this,Fa,!1);d(this,Kl,!1);d(this,Bi,null);d(this,Gn,null);d(this,Na,null);d(this,Hi,null);d(this,Ql,null);d(this,Tt,$.NONE);d(this,Q,new Set);d(this,Us,null);d(this,$i,null);d(this,zi,null);d(this,Jl,null);d(this,Oa,null);d(this,Zl,{isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1});d(this,Gi,[0,0]);d(this,fs,null);d(this,js,null);d(this,th,null);d(this,eh,null);d(this,Oe,null);const w=this._signal=n(this,ka).signal;p(this,js,t),p(this,th,e),p(this,eh,s),p(this,Ma,i),p(this,Gs,r),p(this,$i,a),p(this,Oa,l),this._eventBus=o,o._on("editingaction",this.onEditingAction.bind(this),{signal:w}),o._on("pagechanging",this.onPageChanging.bind(this),{signal:w}),o._on("scalechanging",this.onScaleChanging.bind(this),{signal:w}),o._on("rotationchanging",this.onRotationChanging.bind(this),{signal:w}),o._on("setpreference",this.onSetPreference.bind(this),{signal:w}),o._on("switchannotationeditorparams",S=>this.updateParams(S.type,S.value),{signal:w}),window.addEventListener("pointerdown",()=>{p(this,Fa,!0)},{capture:!0,signal:w}),window.addEventListener("pointerup",()=>{p(this,Fa,!1)},{capture:!0,signal:w}),b(this,Au,Hm).call(this),b(this,_u,Um).call(this),b(this,ih,Pp).call(this),p(this,zs,l.annotationStorage),p(this,Yl,l.filterFactory),p(this,zi,h),p(this,Ia,c||null),p(this,Xl,f),p(this,ql,g),p(this,La,m),p(this,Ql,A||null),this.viewParameters={realScale:Pn.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1,this._editorUndoBar=y||null,this._supportsPinchToZoom=v!==!1}static get _keyboardManager(){const t=wa.prototype,e=a=>n(a,js).contains(document.activeElement)&&document.activeElement.tagName!=="BUTTON"&&a.hasSomethingToControl(),s=(a,{target:o})=>{if(o instanceof HTMLInputElement){const{type:l}=o;return l!=="text"&&l!=="number"}return!0},i=this.TRANSLATE_SMALL,r=this.TRANSLATE_BIG;return V(this,"_keyboardManager",new hd([[["ctrl+a","mac+meta+a"],t.selectAll,{checker:s}],[["ctrl+z","mac+meta+z"],t.undo,{checker:s}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],t.redo,{checker:s}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],t.delete,{checker:s}],[["Enter","mac+Enter"],t.addNewEditorFromKeyboard,{checker:(a,{target:o})=>!(o instanceof HTMLButtonElement)&&n(a,js).contains(o)&&!a.isEnterHandled}],[[" ","mac+ "],t.addNewEditorFromKeyboard,{checker:(a,{target:o})=>!(o instanceof HTMLButtonElement)&&n(a,js).contains(document.activeElement)}],[["Escape","mac+Escape"],t.unselectAll],[["ArrowLeft","mac+ArrowLeft"],t.translateSelectedEditors,{args:[-i,0],checker:e}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t.translateSelectedEditors,{args:[-r,0],checker:e}],[["ArrowRight","mac+ArrowRight"],t.translateSelectedEditors,{args:[i,0],checker:e}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t.translateSelectedEditors,{args:[r,0],checker:e}],[["ArrowUp","mac+ArrowUp"],t.translateSelectedEditors,{args:[0,-i],checker:e}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t.translateSelectedEditors,{args:[0,-r],checker:e}],[["ArrowDown","mac+ArrowDown"],t.translateSelectedEditors,{args:[0,i],checker:e}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t.translateSelectedEditors,{args:[0,r],checker:e}]]))}destroy(){var t,e,s,i,r,a,o,l,h;(t=n(this,Oe))==null||t.resolve(),p(this,Oe,null),(e=n(this,ka))==null||e.abort(),p(this,ka,null),this._signal=null;for(const c of n(this,Bt).values())c.destroy();n(this,Bt).clear(),n(this,Ct).clear(),n(this,zn).clear(),(s=n(this,Hi))==null||s.clear(),p(this,ue,null),n(this,Q).clear(),n(this,Fe).destroy(),(i=n(this,Ma))==null||i.destroy(),(r=n(this,Gs))==null||r.destroy(),(a=n(this,$i))==null||a.destroy(),(o=n(this,us))==null||o.hide(),p(this,us,null),(l=n(this,Na))==null||l.destroy(),p(this,Na,null),p(this,Pa,null),n(this,ds)&&(clearTimeout(n(this,ds)),p(this,ds,null)),n(this,fs)&&(clearTimeout(n(this,fs)),p(this,fs,null)),(h=this._editorUndoBar)==null||h.destroy(),p(this,Oa,null)}combinedSignal(t){return AbortSignal.any([this._signal,t.signal])}get mlManager(){return n(this,Ql)}get useNewAltTextFlow(){return n(this,ql)}get useNewAltTextWhenAddingImage(){return n(this,La)}get hcmFilter(){return V(this,"hcmFilter",n(this,zi)?n(this,Yl).addHCMFilter(n(this,zi).foreground,n(this,zi).background):"none")}get direction(){return V(this,"direction",getComputedStyle(n(this,js)).direction)}get _highlightColors(){return V(this,"_highlightColors",n(this,Ia)?new Map(n(this,Ia).split(",").map(t=>(t=t.split("=").map(e=>e.trim()),t[1]=t[1].toUpperCase(),t))):null)}get highlightColors(){const{_highlightColors:t}=this;if(!t)return V(this,"highlightColors",null);const e=new Map,s=!!n(this,zi);for(const[i,r]of t){const a=i.endsWith("_HCM");if(s&&a){e.set(i.replace("_HCM",""),r);continue}!s&&!a&&e.set(i,r)}return V(this,"highlightColors",e)}get highlightColorNames(){return V(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,t=>t.reverse())):null)}getNonHCMColor(t){if(!this._highlightColors)return t;const e=this.highlightColorNames.get(t);return this._highlightColors.get(e)||t}getNonHCMColorName(t){return this.highlightColorNames.get(t)||t}setCurrentDrawingSession(t){t?(this.unselectAll(),this.disableUserSelect(!0)):this.disableUserSelect(!1),p(this,Ii,t)}setMainHighlightColorPicker(t){p(this,Na,t)}editAltText(t,e=!1){var s;(s=n(this,Ma))==null||s.editAltText(this,t,e)}hasCommentManager(){return!!n(this,Gs)}editComment(t,e){var s;(s=n(this,Gs))==null||s.open(this,t,e)}getSignature(t){var e;(e=n(this,$i))==null||e.getSignature({uiManager:this,editor:t})}get signatureManager(){return n(this,$i)}switchToMode(t,e){this._eventBus.on("annotationeditormodechanged",e,{once:!0,signal:this._signal}),this._eventBus.dispatch("showannotationeditorui",{source:this,mode:t})}setPreference(t,e){this._eventBus.dispatch("setpreference",{source:this,name:t,value:e})}onSetPreference({name:t,value:e}){switch(t){case"enableNewAltTextWhenAddingImage":p(this,La,e);break}}onPageChanging({pageNumber:t}){p(this,Da,t-1)}focusMainContainer(){n(this,js).focus()}findParent(t,e){for(const s of n(this,Bt).values()){const{x:i,y:r,width:a,height:o}=s.div.getBoundingClientRect();if(t>=i&&t<=i+a&&e>=r&&e<=r+o)return s}return null}disableUserSelect(t=!1){n(this,th).classList.toggle("noUserSelect",t)}addShouldRescale(t){n(this,zn).add(t)}removeShouldRescale(t){n(this,zn).delete(t)}onScaleChanging({scale:t}){var e;this.commitOrRemove(),this.viewParameters.realScale=t*Pn.PDF_TO_CSS_UNITS;for(const s of n(this,zn))s.onScaleChanging();(e=n(this,Ii))==null||e.onScaleChanging()}onRotationChanging({pagesRotation:t}){this.commitOrRemove(),this.viewParameters.rotation=t}highlightSelection(t="",e=!1){const s=document.getSelection();if(!s||s.isCollapsed)return;const{anchorNode:i,anchorOffset:r,focusNode:a,focusOffset:o}=s,l=s.toString(),c=b(this,Ba,Sd).call(this,s).closest(".textLayer"),f=this.getSelectionBoxes(c);if(!f)return;s.empty();const g=b(this,sh,kp).call(this,c),m=n(this,Tt)===$.NONE,A=()=>{const y=g==null?void 0:g.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:t,boxes:f,anchorNode:i,anchorOffset:r,focusNode:a,focusOffset:o,text:l});m&&this.showAllEditors("highlight",!0,!0),e&&(y==null||y.editComment())};if(m){this.switchToMode($.HIGHLIGHT,A);return}A()}commentSelection(t=""){this.highlightSelection(t,!0)}addToAnnotationStorage(t){!t.isEmpty()&&n(this,zs)&&!n(this,zs).has(t.id)&&n(this,zs).setValue(t.id,t)}a11yAlert(t,e=null){const s=n(this,eh);s&&(s.setAttribute("data-l10n-id",t),e?s.setAttribute("data-l10n-args",JSON.stringify(e)):s.removeAttribute("data-l10n-args"))}blur(){if(this.isShiftKeyDown=!1,n(this,Ni)&&(p(this,Ni,!1),b(this,Un,bl).call(this,"main_toolbar")),!this.hasSelection)return;const{activeElement:t}=document;for(const e of n(this,Q))if(e.div.contains(t)){p(this,Gn,[e,t]),e._focusEventsAllowed=!1;break}}focus(){if(!n(this,Gn))return;const[t,e]=n(this,Gn);p(this,Gn,null),e.addEventListener("focusin",()=>{t._focusEventsAllowed=!0},{once:!0,signal:this._signal}),e.focus()}addEditListeners(){b(this,ih,Pp).call(this),b(this,nh,Mp).call(this)}removeEditListeners(){b(this,vu,Gm).call(this),b(this,rh,Rp).call(this)}dragOver(t){for(const{type:e}of t.dataTransfer.items)for(const s of n(this,Ne))if(s.isHandlingMimeForPasting(e)){t.dataTransfer.dropEffect="copy",t.preventDefault();return}}drop(t){for(const e of t.dataTransfer.items)for(const s of n(this,Ne))if(s.isHandlingMimeForPasting(e.type)){s.paste(e,this.currentLayer),t.preventDefault();return}}copy(t){var s;if(t.preventDefault(),(s=n(this,ue))==null||s.commitOrRemove(),!this.hasSelection)return;const e=[];for(const i of n(this,Q)){const r=i.serialize(!0);r&&e.push(r)}e.length!==0&&t.clipboardData.setData("application/pdfjs",JSON.stringify(e))}cut(t){this.copy(t),this.delete()}async paste(t){t.preventDefault();const{clipboardData:e}=t;for(const r of e.items)for(const a of n(this,Ne))if(a.isHandlingMimeForPasting(r.type)){a.paste(r,this.currentLayer);return}let s=e.getData("application/pdfjs");if(!s)return;try{s=JSON.parse(s)}catch(r){z(`paste: "${r.message}".`);return}if(!Array.isArray(s))return;this.unselectAll();const i=this.currentLayer;try{const r=[];for(const l of s){const h=await i.deserialize(l);if(!h)return;r.push(h)}const a=()=>{for(const l of r)b(this,ah,Dp).call(this,l);b(this,oh,Lp).call(this,r)},o=()=>{for(const l of r)l.remove()};this.addCommands({cmd:a,undo:o,mustExec:!0})}catch(r){z(`paste: "${r.message}".`)}}keydown(t){!this.isShiftKeyDown&&t.key==="Shift"&&(this.isShiftKeyDown=!0),n(this,Tt)!==$.NONE&&!this.isEditorHandlingKeyboard&&wa._keyboardManager.exec(this,t)}keyup(t){this.isShiftKeyDown&&t.key==="Shift"&&(this.isShiftKeyDown=!1,n(this,Ni)&&(p(this,Ni,!1),b(this,Un,bl).call(this,"main_toolbar")))}onEditingAction({name:t}){switch(t){case"undo":case"redo":case"delete":case"selectAll":this[t]();break;case"highlightSelection":this.highlightSelection("context_menu");break;case"commentSelection":this.commentSelection("context_menu");break}}setEditingState(t){t?(b(this,yu,$m).call(this),b(this,nh,Mp).call(this),b(this,Ht,Qt).call(this,{isEditing:n(this,Tt)!==$.NONE,isEmpty:b(this,jn,Al).call(this),hasSomethingToUndo:n(this,Fe).hasSomethingToUndo(),hasSomethingToRedo:n(this,Fe).hasSomethingToRedo(),hasSelectedEditor:!1})):(b(this,wu,zm).call(this),b(this,rh,Rp).call(this),b(this,Ht,Qt).call(this,{isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(t){if(!n(this,Ne)){p(this,Ne,t);for(const e of n(this,Ne))b(this,qe,Fs).call(this,e.defaultPropertiesToUpdate)}}getId(){return n(this,gu).id}get currentLayer(){return n(this,Bt).get(n(this,Da))}getLayer(t){return n(this,Bt).get(t)}get currentPageIndex(){return n(this,Da)}addLayer(t){n(this,Bt).set(t.pageIndex,t),n(this,Oi)?t.enable():t.disable()}removeLayer(t){n(this,Bt).delete(t.pageIndex)}async updateMode(t,e=null,s=!1,i=!1,r=!1){var a,o,l,h,c;if(n(this,Tt)!==t&&!(n(this,Oe)&&(await n(this,Oe).promise,!n(this,Oe)))){if(p(this,Oe,Promise.withResolvers()),(a=n(this,Ii))==null||a.commitOrRemove(),n(this,Tt)===$.POPUP&&((o=n(this,Gs))==null||o.hideSidebar()),p(this,Tt,t),t===$.NONE){this.setEditingState(!1),b(this,Eu,Vm).call(this),(l=this._editorUndoBar)==null||l.hide(),n(this,Oe).resolve();return}t===$.SIGNATURE&&await((h=n(this,$i))==null?void 0:h.loadSignatures()),t===$.POPUP&&(n(this,Pa)||p(this,Pa,await n(this,Oa).getAnnotationsByType(new Set(n(this,Ne).map(f=>f._editorType)))),(c=n(this,Gs))==null||c.showSidebar(n(this,Pa))),this.setEditingState(!0),await b(this,Su,jm).call(this),this.unselectAll();for(const f of n(this,Bt).values())f.updateMode(t);if(!e){s&&this.addNewEditorFromKeyboard(),n(this,Oe).resolve();return}for(const f of n(this,Ct).values())f.annotationElementId===e||f.id===e?(this.setSelected(f),r?f.editComment():i&&f.enterInEditMode()):f.unselect();n(this,Oe).resolve()}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(t){t.mode!==n(this,Tt)&&this._eventBus.dispatch("switchannotationeditormode",{source:this,...t})}updateParams(t,e){if(n(this,Ne)){switch(t){case X.CREATE:this.currentLayer.addNewEditor(e);return;case X.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),(n(this,Jl)||p(this,Jl,new Map)).set(t,e),this.showAllEditors("highlight",e);break}if(this.hasSelection)for(const s of n(this,Q))s.updateParams(t,e);else for(const s of n(this,Ne))s.updateDefaultParams(t,e)}}showAllEditors(t,e,s=!1){var r;for(const a of n(this,Ct).values())a.editorType===t&&a.show(e);(((r=n(this,Jl))==null?void 0:r.get(X.HIGHLIGHT_SHOW_ALL))??!0)!==e&&b(this,qe,Fs).call(this,[[X.HIGHLIGHT_SHOW_ALL,e]])}enableWaiting(t=!1){if(n(this,Kl)!==t){p(this,Kl,t);for(const e of n(this,Bt).values())t?e.disableClick():e.enableClick(),e.div.classList.toggle("waiting",t)}}getEditors(t){const e=[];for(const s of n(this,Ct).values())s.pageIndex===t&&e.push(s);return e}getEditor(t){return n(this,Ct).get(t)}addEditor(t){n(this,Ct).set(t.id,t)}removeEditor(t){var e,s;t.div.contains(document.activeElement)&&(n(this,ds)&&clearTimeout(n(this,ds)),p(this,ds,setTimeout(()=>{this.focusMainContainer(),p(this,ds,null)},0))),n(this,Ct).delete(t.id),t.annotationElementId&&((e=n(this,Hi))==null||e.delete(t.annotationElementId)),this.unselect(t),(!t.annotationElementId||!n(this,$n).has(t.annotationElementId))&&((s=n(this,zs))==null||s.remove(t.id))}addDeletedAnnotationElement(t){n(this,$n).add(t.annotationElementId),this.addChangedExistingAnnotation(t),t.deleted=!0}isDeletedAnnotationElement(t){return n(this,$n).has(t)}removeDeletedAnnotationElement(t){n(this,$n).delete(t.annotationElementId),this.removeChangedExistingAnnotation(t),t.deleted=!1}setActiveEditor(t){n(this,ue)!==t&&(p(this,ue,t),t&&b(this,qe,Fs).call(this,t.propertiesToUpdate))}updateUI(t){n(this,Cu,Wm)===t&&b(this,qe,Fs).call(this,t.propertiesToUpdate)}updateUIForDefaultProperties(t){b(this,qe,Fs).call(this,t.defaultPropertiesToUpdate)}toggleSelected(t){if(n(this,Q).has(t)){n(this,Q).delete(t),t.unselect(),b(this,Ht,Qt).call(this,{hasSelectedEditor:this.hasSelection});return}n(this,Q).add(t),t.select(),b(this,qe,Fs).call(this,t.propertiesToUpdate),b(this,Ht,Qt).call(this,{hasSelectedEditor:!0})}setSelected(t){var e;this.updateToolbar({mode:t.mode,editId:t.id}),(e=n(this,Ii))==null||e.commitOrRemove();for(const s of n(this,Q))s!==t&&s.unselect();n(this,Q).clear(),n(this,Q).add(t),t.select(),b(this,qe,Fs).call(this,t.propertiesToUpdate),b(this,Ht,Qt).call(this,{hasSelectedEditor:!0})}isSelected(t){return n(this,Q).has(t)}get firstSelectedEditor(){return n(this,Q).values().next().value}unselect(t){t.unselect(),n(this,Q).delete(t),b(this,Ht,Qt).call(this,{hasSelectedEditor:this.hasSelection})}get hasSelection(){return n(this,Q).size!==0}get isEnterHandled(){return n(this,Q).size===1&&this.firstSelectedEditor.isEnterHandled}undo(){var t;n(this,Fe).undo(),b(this,Ht,Qt).call(this,{hasSomethingToUndo:n(this,Fe).hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:b(this,jn,Al).call(this)}),(t=this._editorUndoBar)==null||t.hide()}redo(){n(this,Fe).redo(),b(this,Ht,Qt).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:n(this,Fe).hasSomethingToRedo(),isEmpty:b(this,jn,Al).call(this)})}addCommands(t){n(this,Fe).add(t),b(this,Ht,Qt).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:b(this,jn,Al).call(this)})}cleanUndoStack(t){n(this,Fe).cleanType(t)}delete(){var r;this.commitOrRemove();const t=(r=this.currentLayer)==null?void 0:r.endDrawingSession(!0);if(!this.hasSelection&&!t)return;const e=t?[t]:[...n(this,Q)],s=()=>{var a;(a=this._editorUndoBar)==null||a.show(i,e.length===1?e[0].editorType:e.length);for(const o of e)o.remove()},i=()=>{for(const a of e)b(this,ah,Dp).call(this,a)};this.addCommands({cmd:s,undo:i,mustExec:!0})}commitOrRemove(){var t;(t=n(this,ue))==null||t.commitOrRemove()}hasSomethingToControl(){return n(this,ue)||this.hasSelection}selectAll(){for(const t of n(this,Q))t.commit();b(this,oh,Lp).call(this,n(this,Ct).values())}unselectAll(){var t;if(!(n(this,ue)&&(n(this,ue).commitOrRemove(),n(this,Tt)!==$.NONE))&&!((t=n(this,Ii))!=null&&t.commitOrRemove())&&this.hasSelection){for(const e of n(this,Q))e.unselect();n(this,Q).clear(),b(this,Ht,Qt).call(this,{hasSelectedEditor:!1})}}translateSelectedEditors(t,e,s=!1){if(s||this.commitOrRemove(),!this.hasSelection)return;n(this,Gi)[0]+=t,n(this,Gi)[1]+=e;const[i,r]=n(this,Gi),a=[...n(this,Q)],o=1e3;n(this,fs)&&clearTimeout(n(this,fs)),p(this,fs,setTimeout(()=>{p(this,fs,null),n(this,Gi)[0]=n(this,Gi)[1]=0,this.addCommands({cmd:()=>{for(const l of a)n(this,Ct).has(l.id)&&(l.translateInPage(i,r),l.translationDone())},undo:()=>{for(const l of a)n(this,Ct).has(l.id)&&(l.translateInPage(-i,-r),l.translationDone())},mustExec:!1})},o));for(const l of a)l.translateInPage(t,e),l.translationDone()}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),p(this,cs,new Map);for(const t of n(this,Q))n(this,cs).set(t,{savedX:t.x,savedY:t.y,savedPageIndex:t.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!n(this,cs))return!1;this.disableUserSelect(!1);const t=n(this,cs);p(this,cs,null);let e=!1;for(const[{x:i,y:r,pageIndex:a},o]of t)o.newX=i,o.newY=r,o.newPageIndex=a,e||(e=i!==o.savedX||r!==o.savedY||a!==o.savedPageIndex);if(!e)return!1;const s=(i,r,a,o)=>{if(n(this,Ct).has(i.id)){const l=n(this,Bt).get(o);l?i._setParentAndPosition(l,r,a):(i.pageIndex=o,i.x=r,i.y=a)}};return this.addCommands({cmd:()=>{for(const[i,{newX:r,newY:a,newPageIndex:o}]of t)s(i,r,a,o)},undo:()=>{for(const[i,{savedX:r,savedY:a,savedPageIndex:o}]of t)s(i,r,a,o)},mustExec:!0}),!0}dragSelectedEditors(t,e){if(n(this,cs))for(const s of n(this,cs).keys())s.drag(t,e)}rebuild(t){if(t.parent===null){const e=this.getLayer(t.pageIndex);e?(e.changeParent(t),e.addOrRebuild(t)):(this.addEditor(t),this.addToAnnotationStorage(t),t.rebuild())}else t.parent.addOrRebuild(t)}get isEditorHandlingKeyboard(){var t;return((t=this.getActive())==null?void 0:t.shouldGetKeyboardEvents())||n(this,Q).size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(t){return n(this,ue)===t}getActive(){return n(this,ue)}getMode(){return n(this,Tt)}get imageManager(){return V(this,"imageManager",new Tp)}getSelectionBoxes(t){if(!t)return null;const e=document.getSelection();for(let h=0,c=e.rangeCount;h({x:(c-i)/a,y:1-(h+f-s)/r,width:g/a,height:f/r});break;case"180":o=(h,c,f,g)=>({x:1-(h+f-s)/r,y:1-(c+g-i)/a,width:f/r,height:g/a});break;case"270":o=(h,c,f,g)=>({x:1-(c+g-i)/a,y:(h-s)/r,width:g/a,height:f/r});break;default:o=(h,c,f,g)=>({x:(h-s)/r,y:(c-i)/a,width:f/r,height:g/a});break}const l=[];for(let h=0,c=e.rangeCount;h{g.type==="pointerup"&&g.button!==0||(h.abort(),l==null||l.toggleDrawing(!0),g.type==="pointerup"&&b(this,Un,bl).call(this,"main_toolbar"))};window.addEventListener("pointerup",f,{signal:c}),window.addEventListener("blur",f,{signal:c})}else l==null||l.toggleDrawing(!0),b(this,Un,bl).call(this,"main_toolbar")}},Un=new WeakSet,bl=function(t=""){n(this,Tt)===$.HIGHLIGHT?this.highlightSelection(t):n(this,Xl)&&b(this,mu,Om).call(this)},Au=new WeakSet,Hm=function(){document.addEventListener("selectionchange",b(this,bu,Bm).bind(this),{signal:this._signal})},yu=new WeakSet,$m=function(){if(n(this,Fi))return;p(this,Fi,new AbortController);const t=this.combinedSignal(n(this,Fi));window.addEventListener("focus",this.focus.bind(this),{signal:t}),window.addEventListener("blur",this.blur.bind(this),{signal:t})},wu=new WeakSet,zm=function(){var t;(t=n(this,Fi))==null||t.abort(),p(this,Fi,null)},ih=new WeakSet,Pp=function(){if(n(this,Bi))return;p(this,Bi,new AbortController);const t=this.combinedSignal(n(this,Bi));window.addEventListener("keydown",this.keydown.bind(this),{signal:t}),window.addEventListener("keyup",this.keyup.bind(this),{signal:t})},vu=new WeakSet,Gm=function(){var t;(t=n(this,Bi))==null||t.abort(),p(this,Bi,null)},nh=new WeakSet,Mp=function(){if(n(this,Li))return;p(this,Li,new AbortController);const t=this.combinedSignal(n(this,Li));document.addEventListener("copy",this.copy.bind(this),{signal:t}),document.addEventListener("cut",this.cut.bind(this),{signal:t}),document.addEventListener("paste",this.paste.bind(this),{signal:t})},rh=new WeakSet,Rp=function(){var t;(t=n(this,Li))==null||t.abort(),p(this,Li,null)},_u=new WeakSet,Um=function(){const t=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:t}),document.addEventListener("drop",this.drop.bind(this),{signal:t})},Ht=new WeakSet,Qt=function(t){Object.entries(t).some(([s,i])=>n(this,Zl)[s]!==i)&&(this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(n(this,Zl),t)}),n(this,Tt)===$.HIGHLIGHT&&t.hasSelectedEditor===!1&&b(this,qe,Fs).call(this,[[X.HIGHLIGHT_FREE,!0]]))},qe=new WeakSet,Fs=function(t){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:t})},Su=new WeakSet,jm=async function(){if(!n(this,Oi)){p(this,Oi,!0);const t=[];for(const e of n(this,Bt).values())t.push(e.enable());await Promise.all(t);for(const e of n(this,Ct).values())e.enable()}},Eu=new WeakSet,Vm=function(){if(this.unselectAll(),n(this,Oi)){p(this,Oi,!1);for(const t of n(this,Bt).values())t.disable();for(const t of n(this,Ct).values())t.disable()}},ah=new WeakSet,Dp=function(t){const e=n(this,Bt).get(t.pageIndex);e?e.addOrRebuild(t):(this.addEditor(t),this.addToAnnotationStorage(t))},Cu=new WeakSet,Wm=function(){let t=null;for(t of n(this,Q));return t},jn=new WeakSet,Al=function(){if(n(this,Ct).size===0)return!0;if(n(this,Ct).size===1)for(const t of n(this,Ct).values())return t.isEmpty();return!1},oh=new WeakSet,Lp=function(t){for(const e of n(this,Q))e.unselect();n(this,Q).clear();for(const e of t)e.isEmpty()||(n(this,Q).add(e),e.select());b(this,Ht,Qt).call(this,{hasSelectedEditor:this.hasSelection})},k(wa,"TRANSLATE_SMALL",1),k(wa,"TRANSLATE_BIG",10);let aa=wa;var Mt,ps,Ye,Ha,gs,fe,$a,ms,oe,Vs,Vn,bs,Ui,Wn,yl,za,Ed;const Jt=class Jt{constructor(t){d(this,Wn);d(this,za);d(this,Mt,null);d(this,ps,!1);d(this,Ye,null);d(this,Ha,null);d(this,gs,null);d(this,fe,null);d(this,$a,!1);d(this,ms,null);d(this,oe,null);d(this,Vs,null);d(this,Vn,null);d(this,bs,!1);p(this,oe,t),p(this,bs,t._uiManager.useNewAltTextFlow),n(Jt,Ui)||p(Jt,Ui,Object.freeze({added:"pdfjs-editor-new-alt-text-added-button","added-label":"pdfjs-editor-new-alt-text-added-button-label",missing:"pdfjs-editor-new-alt-text-missing-button","missing-label":"pdfjs-editor-new-alt-text-missing-button-label",review:"pdfjs-editor-new-alt-text-to-review-button","review-label":"pdfjs-editor-new-alt-text-to-review-button-label"}))}static initialize(t){Jt._l10n??(Jt._l10n=t)}async render(){const t=p(this,Ye,document.createElement("button"));t.className="altText",t.tabIndex="0";const e=p(this,Ha,document.createElement("span"));t.append(e),n(this,bs)?(t.classList.add("new"),t.setAttribute("data-l10n-id",n(Jt,Ui).missing),e.setAttribute("data-l10n-id",n(Jt,Ui)["missing-label"])):(t.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button"),e.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button-label"));const s=n(this,oe)._uiManager._signal;t.addEventListener("contextmenu",je,{signal:s}),t.addEventListener("pointerdown",r=>r.stopPropagation(),{signal:s});const i=r=>{r.preventDefault(),n(this,oe)._uiManager.editAltText(n(this,oe)),n(this,bs)&&n(this,oe)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_clicked",data:{label:n(this,Wn,yl)}})};return t.addEventListener("click",i,{capture:!0,signal:s}),t.addEventListener("keydown",r=>{r.target===t&&r.key==="Enter"&&(p(this,$a,!0),i(r))},{signal:s}),await b(this,za,Ed).call(this),t}finish(){n(this,Ye)&&(n(this,Ye).focus({focusVisible:n(this,$a)}),p(this,$a,!1))}isEmpty(){return n(this,bs)?n(this,Mt)===null:!n(this,Mt)&&!n(this,ps)}hasData(){return n(this,bs)?n(this,Mt)!==null||!!n(this,Vs):this.isEmpty()}get guessedText(){return n(this,Vs)}async setGuessedText(t){n(this,Mt)===null&&(p(this,Vs,t),p(this,Vn,await Jt._l10n.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer",{generatedAltText:t})),b(this,za,Ed).call(this))}toggleAltTextBadge(t=!1){var e;if(!n(this,bs)||n(this,Mt)){(e=n(this,ms))==null||e.remove(),p(this,ms,null);return}if(!n(this,ms)){const s=p(this,ms,document.createElement("div"));s.className="noAltTextBadge",n(this,oe).div.append(s)}n(this,ms).classList.toggle("hidden",!t)}serialize(t){let e=n(this,Mt);return!t&&n(this,Vs)===e&&(e=n(this,Vn)),{altText:e,decorative:n(this,ps),guessedText:n(this,Vs),textWithDisclaimer:n(this,Vn)}}get data(){return{altText:n(this,Mt),decorative:n(this,ps)}}set data({altText:t,decorative:e,guessedText:s,textWithDisclaimer:i,cancel:r=!1}){s&&(p(this,Vs,s),p(this,Vn,i)),!(n(this,Mt)===t&&n(this,ps)===e)&&(r||(p(this,Mt,t),p(this,ps,e)),b(this,za,Ed).call(this))}toggle(t=!1){n(this,Ye)&&(!t&&n(this,fe)&&(clearTimeout(n(this,fe)),p(this,fe,null)),n(this,Ye).disabled=!t)}shown(){n(this,oe)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_displayed",data:{label:n(this,Wn,yl)}})}destroy(){var t,e;(t=n(this,Ye))==null||t.remove(),p(this,Ye,null),p(this,Ha,null),p(this,gs,null),(e=n(this,ms))==null||e.remove(),p(this,ms,null)}};Mt=new WeakMap,ps=new WeakMap,Ye=new WeakMap,Ha=new WeakMap,gs=new WeakMap,fe=new WeakMap,$a=new WeakMap,ms=new WeakMap,oe=new WeakMap,Vs=new WeakMap,Vn=new WeakMap,bs=new WeakMap,Ui=new WeakMap,Wn=new WeakSet,yl=function(){return n(this,Mt)&&"added"||n(this,Mt)===null&&this.guessedText&&"review"||"missing"},za=new WeakSet,Ed=async function(){var i,r,a;const t=n(this,Ye);if(!t)return;if(n(this,bs)){if(t.classList.toggle("done",!!n(this,Mt)),t.setAttribute("data-l10n-id",n(Jt,Ui)[n(this,Wn,yl)]),(i=n(this,Ha))==null||i.setAttribute("data-l10n-id",n(Jt,Ui)[`${n(this,Wn,yl)}-label`]),!n(this,Mt)){(r=n(this,gs))==null||r.remove();return}}else{if(!n(this,Mt)&&!n(this,ps)){t.classList.remove("done"),(a=n(this,gs))==null||a.remove();return}t.classList.add("done"),t.setAttribute("data-l10n-id","pdfjs-editor-alt-text-edit-button")}let e=n(this,gs);if(!e){p(this,gs,e=document.createElement("span")),e.className="tooltip",e.setAttribute("role","tooltip"),e.id=`alt-text-tooltip-${n(this,oe).id}`;const o=100,l=n(this,oe)._uiManager._signal;l.addEventListener("abort",()=>{clearTimeout(n(this,fe)),p(this,fe,null)},{once:!0}),t.addEventListener("mouseenter",()=>{p(this,fe,setTimeout(()=>{p(this,fe,null),n(this,gs).classList.add("show"),n(this,oe)._reportTelemetry({action:"alt_text_tooltip"})},o))},{signal:l}),t.addEventListener("mouseleave",()=>{var h;n(this,fe)&&(clearTimeout(n(this,fe)),p(this,fe,null)),(h=n(this,gs))==null||h.classList.remove("show")},{signal:l})}n(this,ps)?e.setAttribute("data-l10n-id","pdfjs-editor-alt-text-decorative-tooltip"):(e.removeAttribute("data-l10n-id"),e.textContent=n(this,Mt)),e.parentNode||t.append(e);const s=n(this,oe).getElementForAltText();s==null||s.setAttribute("aria-describedby",e.id)},d(Jt,Ui,null),k(Jt,"_l10n",null);let Jd=Jt;var As,Xn,Ke,lh,Ws,Ga,ji;class fd{constructor(t){d(this,As,null);d(this,Xn,!1);d(this,Ke,null);d(this,lh,null);d(this,Ws,null);d(this,Ga,null);d(this,ji,!1);p(this,Ke,t),this.toolbar=null}render(){if(!n(this,Ke)._uiManager.hasCommentManager())return null;const t=p(this,As,document.createElement("button"));t.className="comment",t.tabIndex="0",t.setAttribute("data-l10n-id","pdfjs-editor-edit-comment-button");const e=n(this,Ke)._uiManager._signal;if(!(e instanceof AbortSignal)||e.aborted)return t;t.addEventListener("contextmenu",je,{signal:e}),t.addEventListener("pointerdown",i=>i.stopPropagation(),{signal:e});const s=i=>{i.preventDefault(),this.edit()};return t.addEventListener("click",s,{capture:!0,signal:e}),t.addEventListener("keydown",i=>{i.target===t&&i.key==="Enter"&&(p(this,Xn,!0),s(i))},{signal:e}),t}edit(){const{bottom:t,left:e,right:s}=n(this,Ke).getClientDimensions(),i={top:t};n(this,Ke)._uiManager.direction==="ltr"?i.right=s:i.left=e,n(this,Ke)._uiManager.editComment(n(this,Ke),i)}finish(){n(this,As)&&(n(this,As).focus({focusVisible:n(this,Xn)}),p(this,Xn,!1))}isDeleted(){return n(this,ji)||n(this,Ws)===""}hasBeenEdited(){return this.isDeleted()||n(this,Ws)!==n(this,lh)}serialize(){return this.data}get data(){return{text:n(this,Ws),date:n(this,Ga),deleted:n(this,ji)}}set data(t){if(t===null){p(this,Ws,""),p(this,ji,!0);return}p(this,Ws,t),p(this,Ga,new Date),p(this,ji,!1)}setInitialText(t){p(this,lh,t),this.data=t}toggle(t=!1){n(this,As)&&(n(this,As).disabled=!t)}shown(){}destroy(){var t;(t=n(this,As))==null||t.remove(),p(this,As,null),p(this,Ws,""),p(this,Ga,null),p(this,Ke,null),p(this,Xn,!1),p(this,ji,!1)}}As=new WeakMap,Xn=new WeakMap,Ke=new WeakMap,lh=new WeakMap,Ws=new WeakMap,Ga=new WeakMap,ji=new WeakMap;var Ua,qn,hh,ch,dh,uh,fh,Xs,Yn,qs,Kn,Ys,Tu,Xm,xu,qm,ku,Ym;const Kg=class Kg{constructor({container:t,isPinchingDisabled:e=null,isPinchingStopped:s=null,onPinchStart:i=null,onPinching:r=null,onPinchEnd:a=null,signal:o}){d(this,Tu);d(this,xu);d(this,ku);d(this,Ua,void 0);d(this,qn,!1);d(this,hh,null);d(this,ch,void 0);d(this,dh,void 0);d(this,uh,void 0);d(this,fh,void 0);d(this,Xs,null);d(this,Yn,void 0);d(this,qs,null);d(this,Kn,void 0);d(this,Ys,null);p(this,Ua,t),p(this,hh,s),p(this,ch,e),p(this,dh,i),p(this,uh,r),p(this,fh,a),p(this,Kn,new AbortController),p(this,Yn,AbortSignal.any([o,n(this,Kn).signal])),t.addEventListener("touchstart",b(this,Tu,Xm).bind(this),{passive:!1,signal:n(this,Yn)})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return 35/Ds.pixelRatio}destroy(){var t,e;(t=n(this,Kn))==null||t.abort(),p(this,Kn,null),(e=n(this,Xs))==null||e.abort(),p(this,Xs,null)}};Ua=new WeakMap,qn=new WeakMap,hh=new WeakMap,ch=new WeakMap,dh=new WeakMap,uh=new WeakMap,fh=new WeakMap,Xs=new WeakMap,Yn=new WeakMap,qs=new WeakMap,Kn=new WeakMap,Ys=new WeakMap,Tu=new WeakSet,Xm=function(t){var i,r,a;if((i=n(this,ch))!=null&&i.call(this))return;if(t.touches.length===1){if(n(this,Xs))return;const o=p(this,Xs,new AbortController),l=AbortSignal.any([n(this,Yn),o.signal]),h=n(this,Ua),c={capture:!0,signal:l,passive:!1},f=g=>{var m;g.pointerType==="touch"&&((m=n(this,Xs))==null||m.abort(),p(this,Xs,null))};h.addEventListener("pointerdown",g=>{g.pointerType==="touch"&&(vt(g),f(g))},c),h.addEventListener("pointerup",f,c),h.addEventListener("pointercancel",f,c);return}if(!n(this,Ys)){p(this,Ys,new AbortController);const o=AbortSignal.any([n(this,Yn),n(this,Ys).signal]),l=n(this,Ua),h={signal:o,capture:!1,passive:!1};l.addEventListener("touchmove",b(this,xu,qm).bind(this),h);const c=b(this,ku,Ym).bind(this);l.addEventListener("touchend",c,h),l.addEventListener("touchcancel",c,h),h.capture=!0,l.addEventListener("pointerdown",vt,h),l.addEventListener("pointermove",vt,h),l.addEventListener("pointercancel",vt,h),l.addEventListener("pointerup",vt,h),(r=n(this,dh))==null||r.call(this)}if(vt(t),t.touches.length!==2||(a=n(this,hh))!=null&&a.call(this)){p(this,qs,null);return}let[e,s]=t.touches;e.identifier>s.identifier&&([e,s]=[s,e]),p(this,qs,{touch0X:e.screenX,touch0Y:e.screenY,touch1X:s.screenX,touch1Y:s.screenY})},xu=new WeakSet,qm=function(t){var E;if(!n(this,qs)||t.touches.length!==2)return;vt(t);let[e,s]=t.touches;e.identifier>s.identifier&&([e,s]=[s,e]);const{screenX:i,screenY:r}=e,{screenX:a,screenY:o}=s,l=n(this,qs),{touch0X:h,touch0Y:c,touch1X:f,touch1Y:g}=l,m=f-h,A=g-c,y=a-i,v=o-r,w=Math.hypot(y,v)||1,S=Math.hypot(m,A)||1;if(!n(this,qn)&&Math.abs(S-w)<=Kg.MIN_TOUCH_DISTANCE_TO_PINCH)return;if(l.touch0X=i,l.touch0Y=r,l.touch1X=a,l.touch1Y=o,!n(this,qn)){p(this,qn,!0);return}const _=[(i+a)/2,(r+o)/2];(E=n(this,uh))==null||E.call(this,_,S,w)},ku=new WeakSet,Ym=function(t){var e;t.touches.length>=2||(n(this,Ys)&&(n(this,Ys).abort(),p(this,Ys,null),(e=n(this,fh))==null||e.call(this)),n(this,qs)&&(vt(t),p(this,qs,null),p(this,qn,!1)))};let Zd=Kg;var Qn,Qe,ot,$t,ja,Vi,ph,Jn,zt,Zn,Ks,Wi,gh,tr,pe,mh,er,Qs,ys,Va,Wa,Be,sr,bh,Pu,Ah,Ip,yh,Fp,Xa,Cd,Mu,Km,Ru,Qm,wh,Np,qa,Td,vh,Op,Du,Jm,Lu,Zm,Iu,tb,_h,Bp,Fu,eb,Sh,Hp,Nu,sb,Ou,ib,Bu,nb,Eh,$p,ir,wl;const G=class G{constructor(t){d(this,Ah);d(this,Xa);d(this,Mu);d(this,Ru);d(this,wh);d(this,qa);d(this,vh);d(this,Du);d(this,Lu);d(this,Iu);d(this,_h);d(this,Fu);d(this,Sh);d(this,Nu);d(this,Ou);d(this,Bu);d(this,Eh);d(this,ir);d(this,Qn,null);d(this,Qe,null);d(this,ot,null);d(this,$t,null);d(this,ja,!1);d(this,Vi,null);d(this,ph,"");d(this,Jn,!1);d(this,zt,null);d(this,Zn,null);d(this,Ks,null);d(this,Wi,null);d(this,gh,"");d(this,tr,!1);d(this,pe,null);d(this,mh,!1);d(this,er,!1);d(this,Qs,!1);d(this,ys,null);d(this,Va,0);d(this,Wa,0);d(this,Be,null);d(this,sr,null);k(this,"isSelected",!1);k(this,"_isCopy",!1);k(this,"_editToolbar",null);k(this,"_initialOptions",Object.create(null));k(this,"_initialData",null);k(this,"_isVisible",!0);k(this,"_uiManager",null);k(this,"_focusEventsAllowed",!0);d(this,bh,!1);d(this,Pu,G._zIndex++);this.parent=t.parent,this.id=t.id,this.width=this.height=null,this.pageIndex=t.parent.pageIndex,this.name=t.name,this.div=null,this._uiManager=t.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=t.isCentered,this._structTreeParentId=null,this.annotationElementId=t.annotationElementId||null;const{rotation:e,rawDims:{pageWidth:s,pageHeight:i,pageX:r,pageY:a}}=this.parent.viewport;this.rotation=e,this.pageRotation=(360+e-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[s,i],this.pageTranslation=[r,a];const[o,l]=this.parentDimensions;this.x=t.x/o,this.y=t.y/l,this.isAttachedToDOM=!1,this.deleted=!1}static get _resizerKeyboardManager(){const t=G.prototype._resizeWithKeyboard,e=aa.TRANSLATE_SMALL,s=aa.TRANSLATE_BIG;return V(this,"_resizerKeyboardManager",new hd([[["ArrowLeft","mac+ArrowLeft"],t,{args:[-e,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t,{args:[-s,0]}],[["ArrowRight","mac+ArrowRight"],t,{args:[e,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t,{args:[s,0]}],[["ArrowUp","mac+ArrowUp"],t,{args:[0,-e]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t,{args:[0,-s]}],[["ArrowDown","mac+ArrowDown"],t,{args:[0,e]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t,{args:[0,s]}],[["Escape","mac+Escape"],G.prototype._stopResizingWithKeyboard]]))}get editorType(){return Object.getPrototypeOf(this).constructor._type}get mode(){return Object.getPrototypeOf(this).constructor._editorType}static get isDrawer(){return!1}static get _defaultLineColor(){return V(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(t){const e=new ry({id:t.parent.getNextId(),parent:t.parent,uiManager:t._uiManager});e.annotationElementId=t.annotationElementId,e.deleted=!0,e._uiManager.addToAnnotationStorage(e)}static initialize(t,e){if(G._l10n??(G._l10n=t),G._l10nResizer||(G._l10nResizer=Object.freeze({topLeft:"pdfjs-editor-resizer-top-left",topMiddle:"pdfjs-editor-resizer-top-middle",topRight:"pdfjs-editor-resizer-top-right",middleRight:"pdfjs-editor-resizer-middle-right",bottomRight:"pdfjs-editor-resizer-bottom-right",bottomMiddle:"pdfjs-editor-resizer-bottom-middle",bottomLeft:"pdfjs-editor-resizer-bottom-left",middleLeft:"pdfjs-editor-resizer-middle-left"})),G._borderLineWidth!==-1)return;const s=getComputedStyle(document.documentElement);G._borderLineWidth=parseFloat(s.getPropertyValue("--outline-width"))||0}static updateDefaultParams(t,e){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(t){return!1}static paste(t,e){st("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return n(this,bh)}set _isDraggable(t){var e;p(this,bh,t),(e=this.div)==null||e.classList.toggle("draggable",t)}get isEnterHandled(){return!0}center(){const[t,e]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*e/(t*2),this.y+=this.width*t/(e*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*e/(t*2),this.y-=this.width*t/(e*2);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(t){this._uiManager.addCommands(t)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=n(this,Pu)}setParent(t){t!==null?(this.pageIndex=t.pageIndex,this.pageDimensions=t.pageDimensions):b(this,ir,wl).call(this),this.parent=t}focusin(t){this._focusEventsAllowed&&(n(this,tr)?p(this,tr,!1):this.parent.setSelected(this))}focusout(t){var s;if(!this._focusEventsAllowed||!this.isAttachedToDOM)return;const e=t.relatedTarget;e!=null&&e.closest(`#${this.id}`)||(t.preventDefault(),(s=this.parent)!=null&&s.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.isInEditMode()&&this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(t,e,s,i){const[r,a]=this.parentDimensions;[s,i]=this.screenToPageTranslation(s,i),this.x=(t+s)/r,this.y=(e+i)/a,this.fixAndSetPosition()}_moveAfterPaste(t,e){const[s,i]=this.parentDimensions;this.setAt(t*s,e*i,this.width*s,this.height*i),this._onTranslated()}translate(t,e){b(this,Ah,Ip).call(this,this.parentDimensions,t,e)}translateInPage(t,e){n(this,pe)||p(this,pe,[this.x,this.y,this.width,this.height]),b(this,Ah,Ip).call(this,this.pageDimensions,t,e),this.div.scrollIntoView({block:"nearest"})}translationDone(){this._onTranslated(this.x,this.y)}drag(t,e){n(this,pe)||p(this,pe,[this.x,this.y,this.width,this.height]);const{div:s,parentDimensions:[i,r]}=this;if(this.x+=t/i,this.y+=e/r,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:f,y:g}=this.div.getBoundingClientRect();this.parent.findNewParent(this,f,g)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:a,y:o}=this;const[l,h]=this.getBaseTranslation();a+=l,o+=h;const{style:c}=s;c.left=`${(100*a).toFixed(2)}%`,c.top=`${(100*o).toFixed(2)}%`,this._onTranslating(a,o),s.scrollIntoView({block:"nearest"})}_onTranslating(t,e){}_onTranslated(t,e){}get _hasBeenMoved(){return!!n(this,pe)&&(n(this,pe)[0]!==this.x||n(this,pe)[1]!==this.y)}get _hasBeenResized(){return!!n(this,pe)&&(n(this,pe)[2]!==this.width||n(this,pe)[3]!==this.height)}getBaseTranslation(){const[t,e]=this.parentDimensions,{_borderLineWidth:s}=G,i=s/t,r=s/e;switch(this.rotation){case 90:return[-i,r];case 180:return[i,r];case 270:return[i,-r];default:return[-i,-r]}}get _mustFixPosition(){return!0}fixAndSetPosition(t=this.rotation){const{div:{style:e},pageDimensions:[s,i]}=this;let{x:r,y:a,width:o,height:l}=this;if(o*=s,l*=i,r*=s,a*=i,this._mustFixPosition)switch(t){case 0:r=ne(r,0,s-o),a=ne(a,0,i-l);break;case 90:r=ne(r,0,s-l),a=ne(a,o,i);break;case 180:r=ne(r,o,s),a=ne(a,l,i);break;case 270:r=ne(r,l,s),a=ne(a,0,i-o);break}this.x=r/=s,this.y=a/=i;const[h,c]=this.getBaseTranslation();r+=h,a+=c,e.left=`${(100*r).toFixed(2)}%`,e.top=`${(100*a).toFixed(2)}%`,this.moveInDOM()}screenToPageTranslation(t,e){var s;return b(s=G,yh,Fp).call(s,t,e,this.parentRotation)}pageTranslationToScreen(t,e){var s;return b(s=G,yh,Fp).call(s,t,e,360-this.parentRotation)}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:t,pageDimensions:[e,s]}=this;return[e*t,s*t]}setDims(t,e){const[s,i]=this.parentDimensions,{style:r}=this.div;r.width=`${(100*t/s).toFixed(2)}%`,n(this,Jn)||(r.height=`${(100*e/i).toFixed(2)}%`)}fixDims(){const{style:t}=this.div,{height:e,width:s}=t,i=s.endsWith("%"),r=!n(this,Jn)&&e.endsWith("%");if(i&&r)return;const[a,o]=this.parentDimensions;i||(t.width=`${(100*parseFloat(s)/a).toFixed(2)}%`),!n(this,Jn)&&!r&&(t.height=`${(100*parseFloat(e)/o).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}_onResized(){}static _round(t){return Math.round(t*1e4)/1e4}_onResizing(){}altTextFinish(){var t;(t=n(this,ot))==null||t.finish()}get toolbarButtons(){return null}async addEditToolbar(){if(this._editToolbar||n(this,er))return this._editToolbar;this._editToolbar=new Ep(this),this.div.append(this._editToolbar.render());const{toolbarButtons:t}=this;if(t)for(const[e,s]of t)await this._editToolbar.addButton(e,s);return this._editToolbar.addButton("comment",this.addCommentButton()),this._editToolbar.addButton("delete"),this._editToolbar}removeEditToolbar(){var t;this._editToolbar&&(this._editToolbar.remove(),this._editToolbar=null,(t=n(this,ot))==null||t.destroy())}addContainer(t){var s;const e=(s=this._editToolbar)==null?void 0:s.div;e?e.before(t):this.div.append(t)}getClientDimensions(){return this.div.getBoundingClientRect()}createAltText(){return n(this,ot)||(Jd.initialize(G._l10n),p(this,ot,new Jd(this)),n(this,Qn)&&(n(this,ot).data=n(this,Qn),p(this,Qn,null))),n(this,ot)}get altTextData(){var t;return(t=n(this,ot))==null?void 0:t.data}set altTextData(t){n(this,ot)&&(n(this,ot).data=t)}get guessedAltText(){var t;return(t=n(this,ot))==null?void 0:t.guessedText}async setGuessedAltText(t){var e;await((e=n(this,ot))==null?void 0:e.setGuessedText(t))}serializeAltText(t){var e;return(e=n(this,ot))==null?void 0:e.serialize(t)}hasAltText(){return!!n(this,ot)&&!n(this,ot).isEmpty()}hasAltTextData(){var t;return((t=n(this,ot))==null?void 0:t.hasData())??!1}addCommentButton(){return n(this,$t)?n(this,$t):p(this,$t,new fd(this))}get commentColor(){return null}get comment(){const t=n(this,$t);return{text:t.data.text,date:t.data.date,deleted:t.isDeleted(),color:this.commentColor}}set comment(t){n(this,$t)||p(this,$t,new fd(this)),n(this,$t).data=t}setCommentData(t){n(this,$t)||p(this,$t,new fd(this)),n(this,$t).setInitialText(t)}get hasEditedComment(){var t;return(t=n(this,$t))==null?void 0:t.hasBeenEdited()}async editComment(){n(this,$t)||p(this,$t,new fd(this)),n(this,$t).edit()}addComment(t){if(this.hasEditedComment){const[,,,i]=t.rect,[r]=this.pageDimensions,[a]=this.pageTranslation,o=a+r+1,l=i-100,h=o+180;t.popup={contents:this.comment.text,deleted:this.comment.deleted,rect:[o,l,h,i]}}}render(){var a;const t=this.div=document.createElement("div");t.setAttribute("data-editor-rotation",(360-this.rotation)%360),t.className=this.name,t.setAttribute("id",this.id),t.tabIndex=n(this,ja)?-1:0,t.setAttribute("role","application"),this.defaultL10nId&&t.setAttribute("data-l10n-id",this.defaultL10nId),this._isVisible||t.classList.add("hidden"),this.setInForeground(),b(this,Sh,Hp).call(this);const[e,s]=this.parentDimensions;this.parentRotation%180!==0&&(t.style.maxWidth=`${(100*s/e).toFixed(2)}%`,t.style.maxHeight=`${(100*e/s).toFixed(2)}%`);const[i,r]=this.getInitialTranslation();return this.translate(i,r),Fm(this,t,["keydown","pointerdown","dblclick"]),this.isResizable&&this._uiManager._supportsPinchToZoom&&(n(this,sr)||p(this,sr,new Zd({container:t,isPinchingDisabled:()=>!this.isSelected,onPinchStart:b(this,Du,Jm).bind(this),onPinching:b(this,Lu,Zm).bind(this),onPinchEnd:b(this,Iu,tb).bind(this),signal:this._uiManager._signal}))),(a=this._uiManager._editorUndoBar)==null||a.hide(),t}pointerdown(t){const{isMac:e}=Wt.platform;if(t.button!==0||t.ctrlKey&&e){t.preventDefault();return}if(p(this,tr,!0),this._isDraggable){b(this,Fu,eb).call(this,t);return}b(this,_h,Bp).call(this,t)}_onStartDragging(){}_onStopDragging(){}moveInDOM(){n(this,ys)&&clearTimeout(n(this,ys)),p(this,ys,setTimeout(()=>{var t;p(this,ys,null),(t=this.parent)==null||t.moveEditorInDOM(this)},0))}_setParentAndPosition(t,e,s){t.changeParent(this),this.x=e,this.y=s,this.fixAndSetPosition(),this._onTranslated()}getRect(t,e,s=this.rotation){const i=this.parentScale,[r,a]=this.pageDimensions,[o,l]=this.pageTranslation,h=t/i,c=e/i,f=this.x*r,g=this.y*a,m=this.width*r,A=this.height*a;switch(s){case 0:return[f+h+o,a-g-c-A+l,f+h+m+o,a-g-c+l];case 90:return[f+c+o,a-g+h+l,f+c+A+o,a-g+h+m+l];case 180:return[f-h-m+o,a-g+c+l,f-h+o,a-g+c+A+l];case 270:return[f-c-A+o,a-g-h-m+l,f-c+o,a-g-h+l];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(t,e){const[s,i,r,a]=t,o=r-s,l=a-i;switch(this.rotation){case 0:return[s,e-a,o,l];case 90:return[s,e-i,l,o];case 180:return[r,e-i,o,l];case 270:return[r,e-a,l,o];default:throw new Error("Invalid rotation")}}getPDFRect(){return this.getRect(0,0)}onceAdded(t){}isEmpty(){return!1}enableEditMode(){return this.isInEditMode()?!1:(this.parent.setEditingState(!1),p(this,er,!0),!0)}disableEditMode(){return this.isInEditMode()?(this.parent.setEditingState(!0),p(this,er,!1),!0):!1}isInEditMode(){return n(this,er)}shouldGetKeyboardEvents(){return n(this,Qs)}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){const{top:t,left:e,bottom:s,right:i}=this.getClientDimensions(),{innerHeight:r,innerWidth:a}=window;return e0&&t0}rebuild(){b(this,Sh,Hp).call(this)}rotate(t){}resize(){}serializeDeleted(){var t;return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:((t=this._initialData)==null?void 0:t.popupRef)||""}}serialize(t=!1,e=null){st("An editor must be serializable")}static async deserialize(t,e,s){const i=new this.prototype.constructor({parent:e,id:e.getNextId(),uiManager:s,annotationElementId:t.annotationElementId});i.rotation=t.rotation,p(i,Qn,t.accessibilityData),i._isCopy=t.isCopy||!1;const[r,a]=i.pageDimensions,[o,l,h,c]=i.getRectInCurrentCoords(t.rect,a);return i.x=o/r,i.y=l/a,i.width=h/r,i.height=c/a,i}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){var t,e;if((t=n(this,Wi))==null||t.abort(),p(this,Wi,null),this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),n(this,ys)&&(clearTimeout(n(this,ys)),p(this,ys,null)),b(this,ir,wl).call(this),this.removeEditToolbar(),n(this,Be)){for(const s of n(this,Be).values())clearTimeout(s);p(this,Be,null)}this.parent=null,(e=n(this,sr))==null||e.destroy(),p(this,sr,null)}get isResizable(){return!1}makeResizable(){this.isResizable&&(b(this,Mu,Km).call(this),n(this,zt).classList.remove("hidden"))}get toolbarPosition(){return null}keydown(t){if(!this.isResizable||t.target!==this.div||t.key!=="Enter")return;this._uiManager.setSelected(this),p(this,Ks,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const e=n(this,zt).children;if(!n(this,Qe)){p(this,Qe,Array.from(e));const a=b(this,Nu,sb).bind(this),o=b(this,Ou,ib).bind(this),l=this._uiManager._signal;for(const h of n(this,Qe)){const c=h.getAttribute("data-resizer-name");h.setAttribute("role","spinbutton"),h.addEventListener("keydown",a,{signal:l}),h.addEventListener("blur",o,{signal:l}),h.addEventListener("focus",b(this,Bu,nb).bind(this,c),{signal:l}),h.setAttribute("data-l10n-id",G._l10nResizer[c])}}const s=n(this,Qe)[0];let i=0;for(const a of e){if(a===s)break;i++}const r=(360-this.rotation+this.parentRotation)%360/90*(n(this,Qe).length/4);if(r!==i){if(ri)for(let o=0;o{var i,r;(i=this.div)!=null&&i.classList.contains("selectedEditor")&&((r=this._editToolbar)==null||r.show())});return}(e=this._editToolbar)==null||e.show(),(s=n(this,ot))==null||s.toggleAltTextBadge(!1)}}unselect(){var t,e,s,i,r;this.isSelected&&(this.isSelected=!1,(t=n(this,zt))==null||t.classList.add("hidden"),(e=this.div)==null||e.classList.remove("selectedEditor"),(s=this.div)!=null&&s.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),(i=this._editToolbar)==null||i.hide(),(r=n(this,ot))==null||r.toggleAltTextBadge(!0))}updateParams(t,e){}disableEditing(){}enableEditing(){}get canChangeContent(){return!1}enterInEditMode(){this.canChangeContent&&(this.enableEditMode(),this.div.focus())}dblclick(t){this.enterInEditMode(),this.parent.updateToolbar({mode:this.constructor._editorType,editId:this.id})}getElementForAltText(){return this.div}get contentDiv(){return this.div}get isEditing(){return n(this,mh)}set isEditing(t){p(this,mh,t),this.parent&&(t?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}setAspectRatio(t,e){p(this,Jn,!0);const s=t/e,{style:i}=this.div;i.aspectRatio=s,i.height="auto"}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(t,e=!1){if(e){n(this,Be)||p(this,Be,new Map);const{action:s}=t;let i=n(this,Be).get(s);i&&clearTimeout(i),i=setTimeout(()=>{this._reportTelemetry(t),n(this,Be).delete(s),n(this,Be).size===0&&p(this,Be,null)},G._telemetryTimeout),n(this,Be).set(s,i);return}t.type||(t.type=this.editorType),this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:t}})}show(t=this._isVisible){this.div.classList.toggle("hidden",!t),this._isVisible=t}enable(){this.div&&(this.div.tabIndex=0),p(this,ja,!1)}disable(){this.div&&(this.div.tabIndex=-1),p(this,ja,!0)}renderAnnotationElement(t){if(this.deleted)return t.hide(),null;let e=t.container.querySelector(".annotationContent");if(!e)e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),t.container.prepend(e);else if(e.nodeName==="CANVAS"){const s=e;e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),s.before(e)}return e}resetAnnotationElement(t){const{firstChild:e}=t.container;(e==null?void 0:e.nodeName)==="DIV"&&e.classList.contains("annotationContent")&&e.remove()}};Qn=new WeakMap,Qe=new WeakMap,ot=new WeakMap,$t=new WeakMap,ja=new WeakMap,Vi=new WeakMap,ph=new WeakMap,Jn=new WeakMap,zt=new WeakMap,Zn=new WeakMap,Ks=new WeakMap,Wi=new WeakMap,gh=new WeakMap,tr=new WeakMap,pe=new WeakMap,mh=new WeakMap,er=new WeakMap,Qs=new WeakMap,ys=new WeakMap,Va=new WeakMap,Wa=new WeakMap,Be=new WeakMap,sr=new WeakMap,bh=new WeakMap,Pu=new WeakMap,Ah=new WeakSet,Ip=function([t,e],s,i){[s,i]=this.screenToPageTranslation(s,i),this.x+=s/t,this.y+=i/e,this._onTranslating(this.x,this.y),this.fixAndSetPosition()},yh=new WeakSet,Fp=function(t,e,s){switch(s){case 90:return[e,-t];case 180:return[-t,-e];case 270:return[-e,t];default:return[t,e]}},Xa=new WeakSet,Cd=function(t){switch(t){case 90:{const[e,s]=this.pageDimensions;return[0,-e/s,s/e,0]}case 180:return[-1,0,0,-1];case 270:{const[e,s]=this.pageDimensions;return[0,e/s,-s/e,0]}default:return[1,0,0,1]}},Mu=new WeakSet,Km=function(){if(n(this,zt))return;p(this,zt,document.createElement("div")),n(this,zt).classList.add("resizers");const t=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"],e=this._uiManager._signal;for(const s of t){const i=document.createElement("div");n(this,zt).append(i),i.classList.add("resizer",s),i.setAttribute("data-resizer-name",s),i.addEventListener("pointerdown",b(this,Ru,Qm).bind(this,s),{signal:e}),i.addEventListener("contextmenu",je,{signal:e}),i.tabIndex=-1}this.div.prepend(n(this,zt))},Ru=new WeakSet,Qm=function(t,e){var c;e.preventDefault();const{isMac:s}=Wt.platform;if(e.button!==0||e.ctrlKey&&s)return;(c=n(this,ot))==null||c.toggle(!1);const i=this._isDraggable;this._isDraggable=!1,p(this,Zn,[e.screenX,e.screenY]);const r=new AbortController,a=this._uiManager.combinedSignal(r);this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",b(this,vh,Op).bind(this,t),{passive:!0,capture:!0,signal:a}),window.addEventListener("touchmove",vt,{passive:!1,signal:a}),window.addEventListener("contextmenu",je,{signal:a}),p(this,Ks,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const o=this.parent.div.style.cursor,l=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(e.target).cursor;const h=()=>{var f;r.abort(),this.parent.togglePointerEvents(!0),(f=n(this,ot))==null||f.toggle(!0),this._isDraggable=i,this.parent.div.style.cursor=o,this.div.style.cursor=l,b(this,qa,Td).call(this)};window.addEventListener("pointerup",h,{signal:a}),window.addEventListener("blur",h,{signal:a})},wh=new WeakSet,Np=function(t,e,s,i){this.width=s,this.height=i,this.x=t,this.y=e;const[r,a]=this.parentDimensions;this.setDims(r*s,a*i),this.fixAndSetPosition(),this._onResized()},qa=new WeakSet,Td=function(){if(!n(this,Ks))return;const{savedX:t,savedY:e,savedWidth:s,savedHeight:i}=n(this,Ks);p(this,Ks,null);const r=this.x,a=this.y,o=this.width,l=this.height;r===t&&a===e&&o===s&&l===i||this.addCommands({cmd:b(this,wh,Np).bind(this,r,a,o,l),undo:b(this,wh,Np).bind(this,t,e,s,i),mustExec:!0})},vh=new WeakSet,Op=function(t,e){const[s,i]=this.parentDimensions,r=this.x,a=this.y,o=this.width,l=this.height,h=G.MIN_SIZE/s,c=G.MIN_SIZE/i,f=b(this,Xa,Cd).call(this,this.rotation),g=(B,N)=>[f[0]*B+f[2]*N,f[1]*B+f[3]*N],m=b(this,Xa,Cd).call(this,360-this.rotation),A=(B,N)=>[m[0]*B+m[2]*N,m[1]*B+m[3]*N];let y,v,w=!1,S=!1;switch(t){case"topLeft":w=!0,y=(B,N)=>[0,0],v=(B,N)=>[B,N];break;case"topMiddle":y=(B,N)=>[B/2,0],v=(B,N)=>[B/2,N];break;case"topRight":w=!0,y=(B,N)=>[B,0],v=(B,N)=>[0,N];break;case"middleRight":S=!0,y=(B,N)=>[B,N/2],v=(B,N)=>[0,N/2];break;case"bottomRight":w=!0,y=(B,N)=>[B,N],v=(B,N)=>[0,0];break;case"bottomMiddle":y=(B,N)=>[B/2,N],v=(B,N)=>[B/2,0];break;case"bottomLeft":w=!0,y=(B,N)=>[0,N],v=(B,N)=>[B,0];break;case"middleLeft":S=!0,y=(B,N)=>[0,N/2],v=(B,N)=>[B,N/2];break}const _=y(o,l),E=v(o,l);let C=g(...E);const T=G._round(r+C[0]),x=G._round(a+C[1]);let P=1,M=1,D,R;if(e.fromKeyboard)({deltaX:D,deltaY:R}=e);else{const{screenX:B,screenY:N}=e,[Pt,At]=n(this,Zn);[D,R]=this.screenToPageTranslation(B-Pt,N-At),n(this,Zn)[0]=B,n(this,Zn)[1]=N}if([D,R]=A(D/s,R/i),w){const B=Math.hypot(o,l);P=M=Math.max(Math.min(Math.hypot(E[0]-_[0]-D,E[1]-_[1]-R)/B,1/o,1/l),h/o,c/l)}else S?P=ne(Math.abs(E[0]-_[0]-D),h,1)/o:M=ne(Math.abs(E[1]-_[1]-R),c,1)/l;const H=G._round(o*P),U=G._round(l*M);C=g(...v(H,U));const W=T-C[0],Y=x-C[1];n(this,pe)||p(this,pe,[this.x,this.y,this.width,this.height]),this.width=H,this.height=U,this.x=W,this.y=Y,this.setDims(s*H,i*U),this.fixAndSetPosition(),this._onResizing()},Du=new WeakSet,Jm=function(){var t;p(this,Ks,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height}),(t=n(this,ot))==null||t.toggle(!1),this.parent.togglePointerEvents(!1)},Lu=new WeakSet,Zm=function(t,e,s){let r=.7*(s/e)+1-.7;if(r===1)return;const a=b(this,Xa,Cd).call(this,this.rotation),o=(T,x)=>[a[0]*T+a[2]*x,a[1]*T+a[3]*x],[l,h]=this.parentDimensions,c=this.x,f=this.y,g=this.width,m=this.height,A=G.MIN_SIZE/l,y=G.MIN_SIZE/h;r=Math.max(Math.min(r,1/g,1/m),A/g,y/m);const v=G._round(g*r),w=G._round(m*r);if(v===g&&w===m)return;n(this,pe)||p(this,pe,[c,f,g,m]);const S=o(g/2,m/2),_=G._round(c+S[0]),E=G._round(f+S[1]),C=o(v/2,w/2);this.x=_-C[0],this.y=E-C[1],this.width=v,this.height=w,this.setDims(l*v,h*w),this.fixAndSetPosition(),this._onResizing()},Iu=new WeakSet,tb=function(){var t;(t=n(this,ot))==null||t.toggle(!0),this.parent.togglePointerEvents(!0),b(this,qa,Td).call(this)},_h=new WeakSet,Bp=function(t){const{isMac:e}=Wt.platform;t.ctrlKey&&!e||t.shiftKey||t.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this)},Fu=new WeakSet,eb=function(t){const{isSelected:e}=this;this._uiManager.setUpDragSession();let s=!1;const i=new AbortController,r=this._uiManager.combinedSignal(i),a={capture:!0,passive:!1,signal:r},o=h=>{i.abort(),p(this,Vi,null),p(this,tr,!1),this._uiManager.endDragSession()||b(this,_h,Bp).call(this,h),s&&this._onStopDragging()};e&&(p(this,Va,t.clientX),p(this,Wa,t.clientY),p(this,Vi,t.pointerId),p(this,ph,t.pointerType),window.addEventListener("pointermove",h=>{s||(s=!0,this._onStartDragging());const{clientX:c,clientY:f,pointerId:g}=h;if(g!==n(this,Vi)){vt(h);return}const[m,A]=this.screenToPageTranslation(c-n(this,Va),f-n(this,Wa));p(this,Va,c),p(this,Wa,f),this._uiManager.dragSelectedEditors(m,A)},a),window.addEventListener("touchmove",vt,a),window.addEventListener("pointerdown",h=>{h.pointerType===n(this,ph)&&(n(this,sr)||h.isPrimary)&&o(h),vt(h)},a));const l=h=>{if(!n(this,Vi)||n(this,Vi)===h.pointerId){o(h);return}vt(h)};window.addEventListener("pointerup",l,{signal:r}),window.addEventListener("blur",l,{signal:r})},Sh=new WeakSet,Hp=function(){if(n(this,Wi)||!this.div)return;p(this,Wi,new AbortController);const t=this._uiManager.combinedSignal(n(this,Wi));this.div.addEventListener("focusin",this.focusin.bind(this),{signal:t}),this.div.addEventListener("focusout",this.focusout.bind(this),{signal:t})},Nu=new WeakSet,sb=function(t){G._resizerKeyboardManager.exec(this,t)},Ou=new WeakSet,ib=function(t){var e;n(this,Qs)&&((e=t.relatedTarget)==null?void 0:e.parentNode)!==n(this,zt)&&b(this,ir,wl).call(this)},Bu=new WeakSet,nb=function(t){p(this,gh,n(this,Qs)?t:"")},Eh=new WeakSet,$p=function(t){if(n(this,Qe))for(const e of n(this,Qe))e.tabIndex=t},ir=new WeakSet,wl=function(){p(this,Qs,!1),b(this,Eh,$p).call(this,-1),b(this,qa,Td).call(this)},d(G,yh),k(G,"_l10n",null),k(G,"_l10nResizer",null),k(G,"_borderLineWidth",-1),k(G,"_colorManager",new xp),k(G,"_zIndex",1),k(G,"_telemetryTimeout",1e3);let rt=G;class ry extends rt{constructor(t){super(t),this.annotationElementId=t.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}}const rm=3285377520,De=4294901760,ls=65535;class rb{constructor(t){this.h1=t?t&4294967295:rm,this.h2=t?t&4294967295:rm}update(t){let e,s;if(typeof t=="string"){e=new Uint8Array(t.length*2),s=0;for(let y=0,v=t.length;y>>8,e[s++]=w&255)}}else if(ArrayBuffer.isView(t))e=t.slice(),s=e.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const i=s>>2,r=s-i*4,a=new Uint32Array(e.buffer,0,i);let o=0,l=0,h=this.h1,c=this.h2;const f=3432918353,g=461845907,m=f&ls,A=g&ls;for(let y=0;y>>17,o=o*g&De|o*A&ls,h^=o,h=h<<13|h>>>19,h=h*5+3864292196):(l=a[y],l=l*f&De|l*m&ls,l=l<<15|l>>>17,l=l*g&De|l*A&ls,c^=l,c=c<<13|c>>>19,c=c*5+3864292196);switch(o=0,r){case 3:o^=e[i*4+2]<<16;case 2:o^=e[i*4+1]<<8;case 1:o^=e[i*4],o=o*f&De|o*m&ls,o=o<<15|o>>>17,o=o*g&De|o*A&ls,i&1?h^=o:c^=o}this.h1=h,this.h2=c}hexdigest(){let t=this.h1,e=this.h2;return t^=e>>>1,t=t*3981806797&De|t*36045&ls,e=e*4283543511&De|((e<<16|t>>>16)*2950163797&De)>>>16,t^=e>>>1,t=t*444984403&De|t*60499&ls,e=e*3301882366&De|((e<<16|t>>>16)*3120437893&De)>>>16,t^=e>>>1,(t>>>0).toString(16).padStart(8,"0")+(e>>>0).toString(16).padStart(8,"0")}}const zp=Object.freeze({map:null,hash:"",transfer:void 0});var nr,rr,Gt,Hu,ab;class Gg{constructor(){d(this,Hu);d(this,nr,!1);d(this,rr,null);d(this,Gt,new Map);this.onSetModified=null,this.onResetModified=null,this.onAnnotationEditor=null}getValue(t,e){const s=n(this,Gt).get(t);return s===void 0?e:Object.assign(e,s)}getRawValue(t){return n(this,Gt).get(t)}remove(t){if(n(this,Gt).delete(t),n(this,Gt).size===0&&this.resetModified(),typeof this.onAnnotationEditor=="function"){for(const e of n(this,Gt).values())if(e instanceof rt)return;this.onAnnotationEditor(null)}}setValue(t,e){const s=n(this,Gt).get(t);let i=!1;if(s!==void 0)for(const[r,a]of Object.entries(e))s[r]!==a&&(i=!0,s[r]=a);else i=!0,n(this,Gt).set(t,e);i&&b(this,Hu,ab).call(this),e instanceof rt&&typeof this.onAnnotationEditor=="function"&&this.onAnnotationEditor(e.constructor._type)}has(t){return n(this,Gt).has(t)}get size(){return n(this,Gt).size}resetModified(){n(this,nr)&&(p(this,nr,!1),typeof this.onResetModified=="function"&&this.onResetModified())}get print(){return new ob(this)}get serializable(){if(n(this,Gt).size===0)return zp;const t=new Map,e=new rb,s=[],i=Object.create(null);let r=!1;for(const[a,o]of n(this,Gt)){const l=o instanceof rt?o.serialize(!1,i):o;l&&(t.set(a,l),e.update(`${a}:${JSON.stringify(l)}`),r||(r=!!l.bitmap))}if(r)for(const a of t.values())a.bitmap&&s.push(a.bitmap);return t.size>0?{map:t,hash:e.hexdigest(),transfer:s}:zp}get editorStats(){let t=null;const e=new Map;for(const s of n(this,Gt).values()){if(!(s instanceof rt))continue;const i=s.telemetryFinalData;if(!i)continue;const{type:r}=i;e.has(r)||e.set(r,Object.getPrototypeOf(s).constructor),t||(t=Object.create(null));const a=t[r]||(t[r]=new Map);for(const[o,l]of Object.entries(i)){if(o==="type")continue;let h=a.get(o);h||(h=new Map,a.set(o,h));const c=h.get(l)??0;h.set(l,c+1)}}for(const[s,i]of e)t[s]=i.computeTelemetryFinalData(t[s]);return t}resetModifiedIds(){p(this,rr,null)}get modifiedIds(){if(n(this,rr))return n(this,rr);const t=[];for(const e of n(this,Gt).values())!(e instanceof rt)||!e.annotationElementId||!e.serialize()||t.push(e.annotationElementId);return p(this,rr,{ids:new Set(t),hash:t.join(",")})}[Symbol.iterator](){return n(this,Gt).entries()}}nr=new WeakMap,rr=new WeakMap,Gt=new WeakMap,Hu=new WeakSet,ab=function(){n(this,nr)||(p(this,nr,!0),typeof this.onSetModified=="function"&&this.onSetModified())};var Ch;class ob extends Gg{constructor(e){super();d(this,Ch,void 0);const{map:s,hash:i,transfer:r}=e.serializable,a=structuredClone(s,r?{transfer:r}:null);p(this,Ch,{map:a,hash:i,transfer:r})}get print(){st("Should not call PrintAnnotationStorage.print")}get serializable(){return n(this,Ch)}get modifiedIds(){return V(this,"modifiedIds",{ids:new Set,hash:""})}}Ch=new WeakMap;var Ya;class ay{constructor({ownerDocument:t=globalThis.document,styleElement:e=null}){d(this,Ya,new Set);this._document=t,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(t){this.nativeFontFaces.add(t),this._document.fonts.add(t)}removeNativeFontFace(t){this.nativeFontFaces.delete(t),this._document.fonts.delete(t)}insertRule(t){this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement));const e=this.styleElement.sheet;e.insertRule(t,e.cssRules.length)}clear(){for(const t of this.nativeFontFaces)this._document.fonts.delete(t);this.nativeFontFaces.clear(),n(this,Ya).clear(),this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}async loadSystemFont({systemFontInfo:t,disableFontFace:e,_inspectFont:s}){if(!(!t||n(this,Ya).has(t.loadedName))){if(_t(!e,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:i,src:r,style:a}=t,o=new FontFace(i,r,a);this.addNativeFontFace(o);try{await o.load(),n(this,Ya).add(i),s==null||s(t)}catch{z(`Cannot load system font: ${t.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(o)}return}st("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(t){if(t.attached||t.missingFile&&!t.systemFontInfo)return;if(t.attached=!0,t.systemFontInfo){await this.loadSystemFont(t);return}if(this.isFontLoadingAPISupported){const s=t.createNativeFontFace();if(s){this.addNativeFontFace(s);try{await s.loaded}catch(i){throw z(`Failed to load font '${s.family}': '${i}'.`),t.disableFontFace=!0,i}}return}const e=t.createFontFaceRule();if(e){if(this.insertRule(e),this.isSyncFontLoadingSupported)return;await new Promise(s=>{const i=this._queueLoadingCallback(s);this._prepareFontLoadEvent(t,i)})}}get isFontLoadingAPISupported(){var e;const t=!!((e=this._document)!=null&&e.fonts);return V(this,"isFontLoadingAPISupported",t)}get isSyncFontLoadingSupported(){return V(this,"isSyncFontLoadingSupported",ie||Wt.platform.isFirefox)}_queueLoadingCallback(t){function e(){for(_t(!i.done,"completeRequest() cannot be called twice."),i.done=!0;s.length>0&&s[0].done;){const r=s.shift();setTimeout(r.callback,0)}}const{loadingRequests:s}=this,i={done:!1,complete:e,callback:t};return s.push(i),i}get _loadTestFont(){const t=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return V(this,"_loadTestFont",t)}_prepareFontLoadEvent(t,e){function s(E,C){return E.charCodeAt(C)<<24|E.charCodeAt(C+1)<<16|E.charCodeAt(C+2)<<8|E.charCodeAt(C+3)&255}function i(E,C,T,x){const P=E.substring(0,C),M=E.substring(C+T);return P+x+M}let r,a;const o=this._document.createElement("canvas");o.width=1,o.height=1;const l=o.getContext("2d");let h=0;function c(E,C){if(++h>30){z("Load test font never loaded."),C();return}if(l.font="30px "+E,l.fillText(".",0,20),l.getImageData(0,0,1,1).data[3]>0){C();return}setTimeout(c.bind(null,E,C))}const f=`lt${Date.now()}${this.loadTestFontId++}`;let g=this._loadTestFont;g=i(g,976,f.length,f);const A=16,y=1482184792;let v=s(g,A);for(r=0,a=f.length-3;r{_.remove(),e.complete()})}}Ya=new WeakMap;class oy{constructor(t,e=null){this.compiledGlyphs=Object.create(null);for(const s in t)this[s]=t[s];this._inspectFont=e}createNativeFontFace(){var e;if(!this.data||this.disableFontFace)return null;let t;if(!this.cssFontInfo)t=new FontFace(this.loadedName,this.data,{});else{const s={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(s.style=`oblique ${this.cssFontInfo.italicAngle}deg`),t=new FontFace(this.cssFontInfo.fontFamily,this.data,s)}return(e=this._inspectFont)==null||e.call(this,this),t}createFontFaceRule(){var s;if(!this.data||this.disableFontFace)return null;const t=`url(data:${this.mimetype};base64,${Pm(this.data)});`;let e;if(!this.cssFontInfo)e=`@font-face {font-family:"${this.loadedName}";src:${t}}`;else{let i=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(i+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),e=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${i}src:${t}}`}return(s=this._inspectFont)==null||s.call(this,this,t),e}getPathGenerator(t,e){if(this.compiledGlyphs[e]!==void 0)return this.compiledGlyphs[e];const s=this.loadedName+"_path_"+e;let i;try{i=t.get(s)}catch(a){z(`getPathGenerator - ignoring character: "${a}".`)}const r=new Path2D(i||"");return this.fontExtraProperties||t.delete(s),this.compiledGlyphs[e]=r}}function ly(u){if(u instanceof URL)return u.href;if(typeof u=="string"){if(ie)return u;const t=URL.parse(u,window.location);if(t)return t.href}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function hy(u){if(ie&&typeof Buffer<"u"&&u instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(u instanceof Uint8Array&&u.byteLength===u.buffer.byteLength)return u;if(typeof u=="string")return ad(u);if(u instanceof ArrayBuffer||ArrayBuffer.isView(u)||typeof u=="object"&&!isNaN(u==null?void 0:u.length))return new Uint8Array(u);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}function pd(u){if(typeof u!="string")return null;if(u.endsWith("/"))return u;throw new Error(`Invalid factory url: "${u}" must include trailing slash.`)}const Gp=u=>typeof u=="object"&&Number.isInteger(u==null?void 0:u.num)&&u.num>=0&&Number.isInteger(u==null?void 0:u.gen)&&u.gen>=0,cy=u=>typeof u=="object"&&typeof(u==null?void 0:u.name)=="string",dy=YA.bind(null,Gp,cy);var Js,$u;class uy{constructor(){d(this,Js,new Map);d(this,$u,Promise.resolve())}postMessage(t,e){const s={data:structuredClone(t,e?{transfer:e}:null)};n(this,$u).then(()=>{for(const[i]of n(this,Js))i.call(this,s)})}addEventListener(t,e,s=null){let i=null;if((s==null?void 0:s.signal)instanceof AbortSignal){const{signal:r}=s;if(r.aborted){z("LoopbackPort - cannot use an `aborted` signal.");return}const a=()=>this.removeEventListener(t,e);i=()=>r.removeEventListener("abort",a),r.addEventListener("abort",a)}n(this,Js).set(e,i)}removeEventListener(t,e){const s=n(this,Js).get(e);s==null||s(),n(this,Js).delete(e)}terminate(){for(const[,t]of n(this,Js))t==null||t();n(this,Js).clear()}}Js=new WeakMap,$u=new WeakMap;const gd={DATA:1,ERROR:2},yt={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function am(){}function re(u){if(u instanceof kn||u instanceof vp||u instanceof sm||u instanceof Kd||u instanceof fp)return u;switch(u instanceof Error||typeof u=="object"&&u!==null||st('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),u.name){case"AbortException":return new kn(u.message);case"InvalidPDFException":return new vp(u.message);case"PasswordException":return new sm(u.message,u.code);case"ResponseException":return new Kd(u.message,u.status,u.missing);case"UnknownErrorException":return new fp(u.message,u.details)}return new fp(u.message,u.toString())}var Ka,zu,lb,Gu,hb,Uu,cb,Qa,xd;class vl{constructor(t,e,s){d(this,zu);d(this,Gu);d(this,Uu);d(this,Qa);d(this,Ka,new AbortController);this.sourceName=t,this.targetName=e,this.comObj=s,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),s.addEventListener("message",b(this,zu,lb).bind(this),{signal:n(this,Ka).signal})}on(t,e){const s=this.actionHandler;if(s[t])throw new Error(`There is already an actionName called "${t}"`);s[t]=e}send(t,e,s){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,data:e},s)}sendWithPromise(t,e,s){const i=this.callbackId++,r=Promise.withResolvers();this.callbackCapabilities[i]=r;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,callbackId:i,data:e},s)}catch(a){r.reject(a)}return r.promise}sendWithStream(t,e,s,i){const r=this.streamId++,a=this.sourceName,o=this.targetName,l=this.comObj;return new ReadableStream({start:h=>{const c=Promise.withResolvers();return this.streamControllers[r]={controller:h,startCall:c,pullCall:null,cancelCall:null,isClosed:!1},l.postMessage({sourceName:a,targetName:o,action:t,streamId:r,data:e,desiredSize:h.desiredSize},i),c.promise},pull:h=>{const c=Promise.withResolvers();return this.streamControllers[r].pullCall=c,l.postMessage({sourceName:a,targetName:o,stream:yt.PULL,streamId:r,desiredSize:h.desiredSize}),c.promise},cancel:h=>{_t(h instanceof Error,"cancel must have a valid reason");const c=Promise.withResolvers();return this.streamControllers[r].cancelCall=c,this.streamControllers[r].isClosed=!0,l.postMessage({sourceName:a,targetName:o,stream:yt.CANCEL,streamId:r,reason:re(h)}),c.promise}},s)}destroy(){var t;(t=n(this,Ka))==null||t.abort(),p(this,Ka,null)}}Ka=new WeakMap,zu=new WeakSet,lb=function({data:t}){if(t.targetName!==this.sourceName)return;if(t.stream){b(this,Uu,cb).call(this,t);return}if(t.callback){const s=t.callbackId,i=this.callbackCapabilities[s];if(!i)throw new Error(`Cannot resolve callback ${s}`);if(delete this.callbackCapabilities[s],t.callback===gd.DATA)i.resolve(t.data);else if(t.callback===gd.ERROR)i.reject(re(t.reason));else throw new Error("Unexpected callback case");return}const e=this.actionHandler[t.action];if(!e)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const s=this.sourceName,i=t.sourceName,r=this.comObj;Promise.try(e,t.data).then(function(a){r.postMessage({sourceName:s,targetName:i,callback:gd.DATA,callbackId:t.callbackId,data:a})},function(a){r.postMessage({sourceName:s,targetName:i,callback:gd.ERROR,callbackId:t.callbackId,reason:re(a)})});return}if(t.streamId){b(this,Gu,hb).call(this,t);return}e(t.data)},Gu=new WeakSet,hb=function(t){const e=t.streamId,s=this.sourceName,i=t.sourceName,r=this.comObj,a=this,o=this.actionHandler[t.action],l={enqueue(h,c=1,f){if(this.isCancelled)return;const g=this.desiredSize;this.desiredSize-=c,g>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),r.postMessage({sourceName:s,targetName:i,stream:yt.ENQUEUE,streamId:e,chunk:h},f)},close(){this.isCancelled||(this.isCancelled=!0,r.postMessage({sourceName:s,targetName:i,stream:yt.CLOSE,streamId:e}),delete a.streamSinks[e])},error(h){_t(h instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,r.postMessage({sourceName:s,targetName:i,stream:yt.ERROR,streamId:e,reason:re(h)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:t.desiredSize,ready:null};l.sinkCapability.resolve(),l.ready=l.sinkCapability.promise,this.streamSinks[e]=l,Promise.try(o,t.data,l).then(function(){r.postMessage({sourceName:s,targetName:i,stream:yt.START_COMPLETE,streamId:e,success:!0})},function(h){r.postMessage({sourceName:s,targetName:i,stream:yt.START_COMPLETE,streamId:e,reason:re(h)})})},Uu=new WeakSet,cb=function(t){const e=t.streamId,s=this.sourceName,i=t.sourceName,r=this.comObj,a=this.streamControllers[e],o=this.streamSinks[e];switch(t.stream){case yt.START_COMPLETE:t.success?a.startCall.resolve():a.startCall.reject(re(t.reason));break;case yt.PULL_COMPLETE:t.success?a.pullCall.resolve():a.pullCall.reject(re(t.reason));break;case yt.PULL:if(!o){r.postMessage({sourceName:s,targetName:i,stream:yt.PULL_COMPLETE,streamId:e,success:!0});break}o.desiredSize<=0&&t.desiredSize>0&&o.sinkCapability.resolve(),o.desiredSize=t.desiredSize,Promise.try(o.onPull||am).then(function(){r.postMessage({sourceName:s,targetName:i,stream:yt.PULL_COMPLETE,streamId:e,success:!0})},function(h){r.postMessage({sourceName:s,targetName:i,stream:yt.PULL_COMPLETE,streamId:e,reason:re(h)})});break;case yt.ENQUEUE:if(_t(a,"enqueue should have stream controller"),a.isClosed)break;a.controller.enqueue(t.chunk);break;case yt.CLOSE:if(_t(a,"close should have stream controller"),a.isClosed)break;a.isClosed=!0,a.controller.close(),b(this,Qa,xd).call(this,a,e);break;case yt.ERROR:_t(a,"error should have stream controller"),a.controller.error(re(t.reason)),b(this,Qa,xd).call(this,a,e);break;case yt.CANCEL_COMPLETE:t.success?a.cancelCall.resolve():a.cancelCall.reject(re(t.reason)),b(this,Qa,xd).call(this,a,e);break;case yt.CANCEL:if(!o)break;const l=re(t.reason);Promise.try(o.onCancel||am,l).then(function(){r.postMessage({sourceName:s,targetName:i,stream:yt.CANCEL_COMPLETE,streamId:e,success:!0})},function(h){r.postMessage({sourceName:s,targetName:i,stream:yt.CANCEL_COMPLETE,streamId:e,reason:re(h)})}),o.sinkCapability.reject(l),o.isCancelled=!0,delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}},Qa=new WeakSet,xd=async function(t,e){var s,i,r;await Promise.allSettled([(s=t.startCall)==null?void 0:s.promise,(i=t.pullCall)==null?void 0:i.promise,(r=t.cancelCall)==null?void 0:r.promise]),delete this.streamControllers[e]};var Th;class db{constructor({enableHWA:t=!1}){d(this,Th,!1);p(this,Th,t)}create(t,e){if(t<=0||e<=0)throw new Error("Invalid canvas size");const s=this._createCanvas(t,e);return{canvas:s,context:s.getContext("2d",{willReadFrequently:!n(this,Th)})}}reset(t,e,s){if(!t.canvas)throw new Error("Canvas is not specified");if(e<=0||s<=0)throw new Error("Invalid canvas size");t.canvas.width=e,t.canvas.height=s}destroy(t){if(!t.canvas)throw new Error("Canvas is not specified");t.canvas.width=0,t.canvas.height=0,t.canvas=null,t.context=null}_createCanvas(t,e){st("Abstract method `_createCanvas` called.")}}Th=new WeakMap;class fy extends db{constructor({ownerDocument:t=globalThis.document,enableHWA:e=!1}){super({enableHWA:e}),this._document=t}_createCanvas(t,e){const s=this._document.createElement("canvas");return s.width=t,s.height=e,s}}class ub{constructor({baseUrl:t=null,isCompressed:e=!0}){this.baseUrl=t,this.isCompressed=e}async fetch({name:t}){if(!this.baseUrl)throw new Error("Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.");if(!t)throw new Error("CMap name must be specified.");const e=this.baseUrl+t+(this.isCompressed?".bcmap":"");return this._fetch(e).then(s=>({cMapData:s,isCompressed:this.isCompressed})).catch(s=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${e}`)})}async _fetch(t){st("Abstract method `_fetch` called.")}}class om extends ub{async _fetch(t){const e=await od(t,this.isCompressed?"arraybuffer":"text");return e instanceof ArrayBuffer?new Uint8Array(e):ad(e)}}class fb{addFilter(t){return"none"}addHCMFilter(t,e){return"none"}addAlphaFilter(t){return"none"}addLuminosityFilter(t){return"none"}addHighlightHCMFilter(t,e,s,i,r){return"none"}destroy(t=!1){}}var ar,Ja,Zs,ti,Yt,or,lr,Rt,Xt,hr,_l,Xi,fa,Za,kd,qi,pa,ju,pb,xh,Up,Yi,ga,cr,Sl,dr,El,kh,jp,ur,Cl;class py extends fb{constructor({docId:e,ownerDocument:s=globalThis.document}){super();d(this,Rt);d(this,hr);d(this,Xi);d(this,Za);d(this,qi);d(this,ju);d(this,xh);d(this,Yi);d(this,cr);d(this,dr);d(this,kh);d(this,ur);d(this,ar,void 0);d(this,Ja,void 0);d(this,Zs,void 0);d(this,ti,void 0);d(this,Yt,void 0);d(this,or,void 0);d(this,lr,0);p(this,ti,e),p(this,Yt,s)}addFilter(e){if(!e)return"none";let s=n(this,Rt,Xt).get(e);if(s)return s;const[i,r,a]=b(this,Za,kd).call(this,e),o=e.length===1?i:`${i}${r}${a}`;if(s=n(this,Rt,Xt).get(o),s)return n(this,Rt,Xt).set(e,s),s;const l=`g_${n(this,ti)}_transfer_map_${St(this,lr)._++}`,h=b(this,qi,pa).call(this,l);n(this,Rt,Xt).set(e,h),n(this,Rt,Xt).set(o,h);const c=b(this,Yi,ga).call(this,l);return b(this,dr,El).call(this,i,r,a,c),h}addHCMFilter(e,s){var A;const i=`${e}-${s}`,r="base";let a=n(this,hr,_l).get(r);if((a==null?void 0:a.key)===i||(a?((A=a.filter)==null||A.remove(),a.key=i,a.url="none",a.filter=null):(a={key:i,url:"none",filter:null},n(this,hr,_l).set(r,a)),!e||!s))return a.url;const o=b(this,ur,Cl).call(this,e);e=I.makeHexColor(...o);const l=b(this,ur,Cl).call(this,s);if(s=I.makeHexColor(...l),n(this,Xi,fa).style.color="",e==="#000000"&&s==="#ffffff"||e===s)return a.url;const h=new Array(256);for(let y=0;y<=255;y++){const v=y/255;h[y]=v<=.03928?v/12.92:((v+.055)/1.055)**2.4}const c=h.join(","),f=`g_${n(this,ti)}_hcm_filter`,g=a.filter=b(this,Yi,ga).call(this,f);b(this,dr,El).call(this,c,c,c,g),b(this,xh,Up).call(this,g);const m=(y,v)=>{const w=o[y]/255,S=l[y]/255,_=new Array(v+1);for(let E=0;E<=v;E++)_[E]=w+E/v*(S-w);return _.join(",")};return b(this,dr,El).call(this,m(0,5),m(1,5),m(2,5),g),a.url=b(this,qi,pa).call(this,f),a.url}addAlphaFilter(e){let s=n(this,Rt,Xt).get(e);if(s)return s;const[i]=b(this,Za,kd).call(this,[e]),r=`alpha_${i}`;if(s=n(this,Rt,Xt).get(r),s)return n(this,Rt,Xt).set(e,s),s;const a=`g_${n(this,ti)}_alpha_map_${St(this,lr)._++}`,o=b(this,qi,pa).call(this,a);n(this,Rt,Xt).set(e,o),n(this,Rt,Xt).set(r,o);const l=b(this,Yi,ga).call(this,a);return b(this,kh,jp).call(this,i,l),o}addLuminosityFilter(e){let s=n(this,Rt,Xt).get(e||"luminosity");if(s)return s;let i,r;if(e?([i]=b(this,Za,kd).call(this,[e]),r=`luminosity_${i}`):r="luminosity",s=n(this,Rt,Xt).get(r),s)return n(this,Rt,Xt).set(e,s),s;const a=`g_${n(this,ti)}_luminosity_map_${St(this,lr)._++}`,o=b(this,qi,pa).call(this,a);n(this,Rt,Xt).set(e,o),n(this,Rt,Xt).set(r,o);const l=b(this,Yi,ga).call(this,a);return b(this,ju,pb).call(this,l),e&&b(this,kh,jp).call(this,i,l),o}addHighlightHCMFilter(e,s,i,r,a){var S;const o=`${s}-${i}-${r}-${a}`;let l=n(this,hr,_l).get(e);if((l==null?void 0:l.key)===o||(l?((S=l.filter)==null||S.remove(),l.key=o,l.url="none",l.filter=null):(l={key:o,url:"none",filter:null},n(this,hr,_l).set(e,l)),!s||!i))return l.url;const[h,c]=[s,i].map(b(this,ur,Cl).bind(this));let f=Math.round(.2126*h[0]+.7152*h[1]+.0722*h[2]),g=Math.round(.2126*c[0]+.7152*c[1]+.0722*c[2]),[m,A]=[r,a].map(b(this,ur,Cl).bind(this));g{const T=new Array(256),x=(g-f)/C,P=_/255,M=(E-_)/(255*C);let D=0;for(let R=0;R<=C;R++){const H=Math.round(f+R*x),U=P+R*M;for(let W=D;W<=H;W++)T[W]=U;D=H+1}for(let R=D;R<256;R++)T[R]=T[D-1];return T.join(",")},v=`g_${n(this,ti)}_hcm_${e}_filter`,w=l.filter=b(this,Yi,ga).call(this,v);return b(this,xh,Up).call(this,w),b(this,dr,El).call(this,y(m[0],A[0],5),y(m[1],A[1],5),y(m[2],A[2],5),w),l.url=b(this,qi,pa).call(this,v),l.url}destroy(e=!1){var s,i,r,a;e&&((s=n(this,or))!=null&&s.size)||((i=n(this,Zs))==null||i.parentNode.parentNode.remove(),p(this,Zs,null),(r=n(this,Ja))==null||r.clear(),p(this,Ja,null),(a=n(this,or))==null||a.clear(),p(this,or,null),p(this,lr,0))}}ar=new WeakMap,Ja=new WeakMap,Zs=new WeakMap,ti=new WeakMap,Yt=new WeakMap,or=new WeakMap,lr=new WeakMap,Rt=new WeakSet,Xt=function(){return n(this,Ja)||p(this,Ja,new Map)},hr=new WeakSet,_l=function(){return n(this,or)||p(this,or,new Map)},Xi=new WeakSet,fa=function(){if(!n(this,Zs)){const e=n(this,Yt).createElement("div"),{style:s}=e;s.visibility="hidden",s.contain="strict",s.width=s.height=0,s.position="absolute",s.top=s.left=0,s.zIndex=-1;const i=n(this,Yt).createElementNS(Is,"svg");i.setAttribute("width",0),i.setAttribute("height",0),p(this,Zs,n(this,Yt).createElementNS(Is,"defs")),e.append(i),i.append(n(this,Zs)),n(this,Yt).body.append(e)}return n(this,Zs)},Za=new WeakSet,kd=function(e){if(e.length===1){const h=e[0],c=new Array(256);for(let g=0;g<256;g++)c[g]=h[g]/255;const f=c.join(",");return[f,f,f]}const[s,i,r]=e,a=new Array(256),o=new Array(256),l=new Array(256);for(let h=0;h<256;h++)a[h]=s[h]/255,o[h]=i[h]/255,l[h]=r[h]/255;return[a.join(","),o.join(","),l.join(",")]},qi=new WeakSet,pa=function(e){if(n(this,ar)===void 0){p(this,ar,"");const s=n(this,Yt).URL;s!==n(this,Yt).baseURI&&(np(s)?z('#createUrl: ignore "data:"-URL for performance reasons.'):p(this,ar,Tm(s,"")))}return`url(${n(this,ar)}#${e})`},ju=new WeakSet,pb=function(e){const s=n(this,Yt).createElementNS(Is,"feColorMatrix");s.setAttribute("type","matrix"),s.setAttribute("values","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"),e.append(s)},xh=new WeakSet,Up=function(e){const s=n(this,Yt).createElementNS(Is,"feColorMatrix");s.setAttribute("type","matrix"),s.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),e.append(s)},Yi=new WeakSet,ga=function(e){const s=n(this,Yt).createElementNS(Is,"filter");return s.setAttribute("color-interpolation-filters","sRGB"),s.setAttribute("id",e),n(this,Xi,fa).append(s),s},cr=new WeakSet,Sl=function(e,s,i){const r=n(this,Yt).createElementNS(Is,s);r.setAttribute("type","discrete"),r.setAttribute("tableValues",i),e.append(r)},dr=new WeakSet,El=function(e,s,i,r){const a=n(this,Yt).createElementNS(Is,"feComponentTransfer");r.append(a),b(this,cr,Sl).call(this,a,"feFuncR",e),b(this,cr,Sl).call(this,a,"feFuncG",s),b(this,cr,Sl).call(this,a,"feFuncB",i)},kh=new WeakSet,jp=function(e,s){const i=n(this,Yt).createElementNS(Is,"feComponentTransfer");s.append(i),b(this,cr,Sl).call(this,i,"feFuncA",e)},ur=new WeakSet,Cl=function(e){return n(this,Xi,fa).style.color=e,rp(getComputedStyle(n(this,Xi,fa)).getPropertyValue("color"))};class gb{constructor({baseUrl:t=null}){this.baseUrl=t}async fetch({filename:t}){if(!this.baseUrl)throw new Error("Ensure that the `standardFontDataUrl` API parameter is provided.");if(!t)throw new Error("Font filename must be specified.");const e=`${this.baseUrl}${t}`;return this._fetch(e).catch(s=>{throw new Error(`Unable to load font data at: ${e}`)})}async _fetch(t){st("Abstract method `_fetch` called.")}}class lm extends gb{async _fetch(t){const e=await od(t,"arraybuffer");return new Uint8Array(e)}}class mb{constructor({baseUrl:t=null}){this.baseUrl=t}async fetch({filename:t}){if(!this.baseUrl)throw new Error("Ensure that the `wasmUrl` API parameter is provided.");if(!t)throw new Error("Wasm filename must be specified.");const e=`${this.baseUrl}${t}`;return this._fetch(e).catch(s=>{throw new Error(`Unable to load wasm data at: ${e}`)})}async _fetch(t){st("Abstract method `_fetch` called.")}}class hm extends mb{async _fetch(t){const e=await od(t,"arraybuffer");return new Uint8Array(e)}}ie&&z("Please use the `legacy` build in Node.js environments.");async function Ug(u){const e=await process.getBuiltinModule("fs").promises.readFile(u);return new Uint8Array(e)}class gy extends fb{}class my extends db{_createCanvas(t,e){return process.getBuiltinModule("module").createRequire(import.meta.url)("@napi-rs/canvas").createCanvas(t,e)}}class by extends ub{async _fetch(t){return Ug(t)}}class Ay extends gb{async _fetch(t){return Ug(t)}}class yy extends mb{async _fetch(t){return Ug(t)}}const ca="__forcedDependency";var ge,Zt,to,ws,eo,ei,J,tt,si,me,Ki,so,Qi,Ji;class wy{constructor(t){d(this,ge,{__proto__:null});d(this,Zt,{__proto__:null,transform:[],moveText:[],sameLineText:[],[ca]:[]});d(this,to,new Map);d(this,ws,[]);d(this,eo,[]);d(this,ei,[[1,0,0,1,0,0]]);d(this,J,[-1/0,-1/0,1/0,1/0]);d(this,tt,new Float64Array([1/0,1/0,-1/0,-1/0]));d(this,si,-1);d(this,me,new Set);d(this,Ki,new Map);d(this,so,new Map);d(this,Qi,void 0);d(this,Ji,void 0);p(this,Qi,t.width),p(this,Ji,t.height)}save(t){return p(this,ge,{__proto__:n(this,ge)}),p(this,Zt,{__proto__:n(this,Zt),transform:{__proto__:n(this,Zt).transform},moveText:{__proto__:n(this,Zt).moveText},sameLineText:{__proto__:n(this,Zt).sameLineText},[ca]:{__proto__:n(this,Zt)[ca]}}),p(this,J,{__proto__:n(this,J)}),n(this,ws).push([t,null]),this}restore(t){const e=Object.getPrototypeOf(n(this,ge));if(e===null)return this;p(this,ge,e),p(this,Zt,Object.getPrototypeOf(n(this,Zt))),p(this,J,Object.getPrototypeOf(n(this,J)));const s=n(this,ws).pop();return s!==void 0&&(s[1]=t),this}recordOpenMarker(t){return n(this,ws).push([t,null]),this}getOpenMarker(){return n(this,ws).length===0?null:n(this,ws).at(-1)[0]}recordCloseMarker(t){const e=n(this,ws).pop();return e!==void 0&&(e[1]=t),this}beginMarkedContent(t){return n(this,eo).push([t,null]),this}endMarkedContent(t){const e=n(this,eo).pop();return e!==void 0&&(e[1]=t),this}pushBaseTransform(t){return n(this,ei).push(I.multiplyByDOMMatrix(n(this,ei).at(-1),t.getTransform())),this}popBaseTransform(){return n(this,ei).length>1&&n(this,ei).pop(),this}recordSimpleData(t,e){return n(this,ge)[t]=e,this}recordIncrementalData(t,e){return n(this,Zt)[t].push(e),this}resetIncrementalData(t,e){return n(this,Zt)[t].length=0,this}recordNamedData(t,e){return n(this,to).set(t,e),this}recordFutureForcedDependency(t,e){return this.recordIncrementalData(ca,e),this}inheritSimpleDataAsFutureForcedDependencies(t){for(const e of t)e in n(this,ge)&&this.recordFutureForcedDependency(e,n(this,ge)[e]);return this}inheritPendingDependenciesAsFutureForcedDependencies(){for(const t of n(this,me))this.recordFutureForcedDependency(ca,t);return this}resetBBox(t){return p(this,si,t),n(this,tt)[0]=1/0,n(this,tt)[1]=1/0,n(this,tt)[2]=-1/0,n(this,tt)[3]=-1/0,this}get hasPendingBBox(){return n(this,si)!==-1}recordClipBox(t,e,s,i,r,a){const o=I.multiplyByDOMMatrix(n(this,ei).at(-1),e.getTransform()),l=[1/0,1/0,-1/0,-1/0];I.axialAlignedBoundingBox([s,r,i,a],o,l);const h=I.intersect(n(this,J),l);return h?(n(this,J)[0]=h[0],n(this,J)[1]=h[1],n(this,J)[2]=h[2],n(this,J)[3]=h[3]):(n(this,J)[0]=n(this,J)[1]=1/0,n(this,J)[2]=n(this,J)[3]=-1/0),this}recordBBox(t,e,s,i,r,a){const o=n(this,J);if(o[0]===1/0)return this;const l=I.multiplyByDOMMatrix(n(this,ei).at(-1),e.getTransform());if(o[0]===-1/0)return I.axialAlignedBoundingBox([s,r,i,a],l,n(this,tt)),this;const h=[1/0,1/0,-1/0,-1/0];return I.axialAlignedBoundingBox([s,r,i,a],l,h),n(this,tt)[0]=Math.min(n(this,tt)[0],Math.max(h[0],o[0])),n(this,tt)[1]=Math.min(n(this,tt)[1],Math.max(h[1],o[1])),n(this,tt)[2]=Math.max(n(this,tt)[2],Math.min(h[2],o[2])),n(this,tt)[3]=Math.max(n(this,tt)[3],Math.min(h[3],o[3])),this}recordCharacterBBox(t,e,s,i=1,r=0,a=0,o){const l=s.bbox;let h,c;if(l&&(h=l[2]!==l[0]&&l[3]!==l[1]&&n(this,so).get(s),h!==!1&&(c=[0,0,0,0],I.axialAlignedBoundingBox(l,s.fontMatrix,c),(i!==1||r!==0||a!==0)&&I.scaleMinMax([i,0,0,-i,r,a],c),h)))return this.recordBBox(t,e,c[0],c[2],c[1],c[3]);if(!o)return this.recordFullPageBBox(t);const f=o();return l&&c&&h===void 0&&(h=c[0]<=r-f.actualBoundingBoxLeft&&c[2]>=r+f.actualBoundingBoxRight&&c[1]<=a-f.actualBoundingBoxAscent&&c[3]>=a+f.actualBoundingBoxDescent,n(this,so).set(s,h),h)?this.recordBBox(t,e,c[0],c[2],c[1],c[3]):this.recordBBox(t,e,r-f.actualBoundingBoxLeft,r+f.actualBoundingBoxRight,a-f.actualBoundingBoxAscent,a+f.actualBoundingBoxDescent)}recordFullPageBBox(t){return n(this,tt)[0]=Math.max(0,n(this,J)[0]),n(this,tt)[1]=Math.max(0,n(this,J)[1]),n(this,tt)[2]=Math.min(n(this,Qi),n(this,J)[2]),n(this,tt)[3]=Math.min(n(this,Ji),n(this,J)[3]),this}getSimpleIndex(t){return n(this,ge)[t]}recordDependencies(t,e){const s=n(this,me),i=n(this,ge),r=n(this,Zt);for(const a of e)a in n(this,ge)?s.add(i[a]):a in r&&r[a].forEach(s.add,s);return this}copyDependenciesFromIncrementalOperation(t,e){const s=n(this,Ki),i=n(this,me);for(const r of n(this,Zt)[e])s.get(r).dependencies.forEach(i.add,i.add(r));return this}recordNamedDependency(t,e){return n(this,to).has(e)&&n(this,me).add(n(this,to).get(e)),this}recordOperation(t,e=!1){this.recordDependencies(t,[ca]);const s=new Set(n(this,me)),i=n(this,ws).concat(n(this,eo)),r=n(this,si)===t?{minX:n(this,tt)[0],minY:n(this,tt)[1],maxX:n(this,tt)[2],maxY:n(this,tt)[3]}:null;return n(this,Ki).set(t,{bbox:r,pairs:i,dependencies:s}),e||p(this,si,-1),n(this,me).clear(),this}bboxToClipBoxDropOperation(t){return n(this,si)!==-1&&(p(this,si,-1),n(this,J)[0]=Math.max(n(this,J)[0],n(this,tt)[0]),n(this,J)[1]=Math.max(n(this,J)[1],n(this,tt)[1]),n(this,J)[2]=Math.min(n(this,J)[2],n(this,tt)[2]),n(this,J)[3]=Math.min(n(this,J)[3],n(this,tt)[3])),n(this,me).clear(),this}_takePendingDependencies(){const t=n(this,me);return p(this,me,new Set),t}_extractOperation(t){const e=n(this,Ki).get(t);return n(this,Ki).delete(t),e}_pushPendingDependencies(t){for(const e of t)n(this,me).add(e)}take(){return n(this,so).clear(),Array.from(n(this,Ki),([t,{bbox:e,pairs:s,dependencies:i}])=>(s.forEach(r=>r.forEach(i.add,i)),i.delete(t),{minX:((e==null?void 0:e.minX)??0)/n(this,Qi),maxX:((e==null?void 0:e.maxX)??n(this,Qi))/n(this,Qi),minY:((e==null?void 0:e.minY)??0)/n(this,Ji),maxY:((e==null?void 0:e.maxY)??n(this,Ji))/n(this,Ji),dependencies:Array.from(i).sort((r,a)=>r-a),idx:t}))}}ge=new WeakMap,Zt=new WeakMap,to=new WeakMap,ws=new WeakMap,eo=new WeakMap,ei=new WeakMap,J=new WeakMap,tt=new WeakMap,si=new WeakMap,me=new WeakMap,Ki=new WeakMap,so=new WeakMap,Qi=new WeakMap,Ji=new WeakMap;var K,ct,io,Zi,no;const Qg=class Qg{constructor(t,e){d(this,K,void 0);d(this,ct,void 0);d(this,io,0);d(this,Zi,void 0);d(this,no,0);if(t instanceof Qg)return t;p(this,K,t),p(this,Zi,t._takePendingDependencies()),p(this,ct,e)}save(t){return St(this,no)._++,n(this,K).save(n(this,ct)),this}restore(t){return n(this,no)>0&&(n(this,K).restore(n(this,ct)),St(this,no)._--),this}recordOpenMarker(t){return St(this,io)._++,this}getOpenMarker(){return n(this,io)>0?n(this,ct):n(this,K).getOpenMarker()}recordCloseMarker(t){return St(this,io)._--,this}beginMarkedContent(t){return this}endMarkedContent(t){return this}pushBaseTransform(t){return n(this,K).pushBaseTransform(t),this}popBaseTransform(){return n(this,K).popBaseTransform(),this}recordSimpleData(t,e){return n(this,K).recordSimpleData(t,n(this,ct)),this}recordIncrementalData(t,e){return n(this,K).recordIncrementalData(t,n(this,ct)),this}resetIncrementalData(t,e){return n(this,K).resetIncrementalData(t,n(this,ct)),this}recordNamedData(t,e){return this}recordFutureForcedDependency(t,e){return n(this,K).recordFutureForcedDependency(t,n(this,ct)),this}inheritSimpleDataAsFutureForcedDependencies(t){return n(this,K).inheritSimpleDataAsFutureForcedDependencies(t),this}inheritPendingDependenciesAsFutureForcedDependencies(){return n(this,K).inheritPendingDependenciesAsFutureForcedDependencies(),this}resetBBox(t){return n(this,K).hasPendingBBox||n(this,K).resetBBox(n(this,ct)),this}get hasPendingBBox(){return n(this,K).hasPendingBBox}recordClipBox(t,e,s,i,r,a){return n(this,K).recordClipBox(n(this,ct),e,s,i,r,a),this}recordBBox(t,e,s,i,r,a){return n(this,K).recordBBox(n(this,ct),e,s,i,r,a),this}recordCharacterBBox(t,e,s,i,r,a,o){return n(this,K).recordCharacterBBox(n(this,ct),e,s,i,r,a,o),this}recordFullPageBBox(t){return n(this,K).recordFullPageBBox(n(this,ct)),this}getSimpleIndex(t){return n(this,K).getSimpleIndex(t)}recordDependencies(t,e){return n(this,K).recordDependencies(n(this,ct),e),this}copyDependenciesFromIncrementalOperation(t,e){return n(this,K).copyDependenciesFromIncrementalOperation(n(this,ct),e),this}recordNamedDependency(t,e){return n(this,K).recordNamedDependency(n(this,ct),e),this}recordOperation(t){n(this,K).recordOperation(n(this,ct),!0);const e=n(this,K)._extractOperation(n(this,ct));for(const s of e.dependencies)n(this,Zi).add(s);return n(this,Zi).delete(n(this,ct)),n(this,Zi).delete(null),this}bboxToClipBoxDropOperation(t){return n(this,K).bboxToClipBoxDropOperation(n(this,ct)),this}recordNestedDependencies(){n(this,K)._pushPendingDependencies(n(this,Zi))}take(){throw new Error("Unreachable")}};K=new WeakMap,ct=new WeakMap,io=new WeakMap,Zi=new WeakMap,no=new WeakMap;let tu=Qg;const Le={stroke:["path","transform","filter","strokeColor","strokeAlpha","lineWidth","lineCap","lineJoin","miterLimit","dash"],fill:["path","transform","filter","fillColor","fillAlpha","globalCompositeOperation","SMask"],imageXObject:["transform","SMask","filter","fillAlpha","strokeAlpha","globalCompositeOperation"],rawFillPath:["filter","fillColor","fillAlpha"],showText:["transform","leading","charSpacing","wordSpacing","hScale","textRise","moveText","textMatrix","font","filter","fillColor","textRenderingMode","SMask","fillAlpha","strokeAlpha","globalCompositeOperation"],transform:["transform"],transformAndFill:["transform","fillColor"]},Vt={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function Vp(u,t){if(!t)return;const e=t[2]-t[0],s=t[3]-t[1],i=new Path2D;i.rect(t[0],t[1],e,s),u.clip(i)}class jg{isModifyingCurrentTransform(){return!1}getPattern(){st("Abstract method `getPattern` called.")}}class vy extends jg{constructor(t){super(),this._type=t[1],this._bbox=t[2],this._colorStops=t[3],this._p0=t[4],this._p1=t[5],this._r0=t[6],this._r1=t[7],this.matrix=null}_createGradient(t){let e;this._type==="axial"?e=t.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):this._type==="radial"&&(e=t.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const s of this._colorStops)e.addColorStop(s[0],s[1]);return e}getPattern(t,e,s,i){let r;if(i===Vt.STROKE||i===Vt.FILL){const a=e.current.getClippedPathBoundingBox(i,dt(t))||[0,0,0,0],o=Math.ceil(a[2]-a[0])||1,l=Math.ceil(a[3]-a[1])||1,h=e.cachedCanvases.getCanvas("pattern",o,l),c=h.context;c.clearRect(0,0,c.canvas.width,c.canvas.height),c.beginPath(),c.rect(0,0,c.canvas.width,c.canvas.height),c.translate(-a[0],-a[1]),s=I.transform(s,[1,0,0,1,a[0],a[1]]),c.transform(...e.baseTransform),this.matrix&&c.transform(...this.matrix),Vp(c,this._bbox),c.fillStyle=this._createGradient(c),c.fill(),r=t.createPattern(h.canvas,"no-repeat");const f=new DOMMatrix(s);r.setTransform(f)}else Vp(t,this._bbox),r=this._createGradient(t);return r}}function mp(u,t,e,s,i,r,a,o){const l=t.coords,h=t.colors,c=u.data,f=u.width*4;let g;l[e+1]>l[s+1]&&(g=e,e=s,s=g,g=r,r=a,a=g),l[s+1]>l[i+1]&&(g=s,s=i,i=g,g=a,a=o,o=g),l[e+1]>l[s+1]&&(g=e,e=s,s=g,g=r,r=a,a=g);const m=(l[e]+t.offsetX)*t.scaleX,A=(l[e+1]+t.offsetY)*t.scaleY,y=(l[s]+t.offsetX)*t.scaleX,v=(l[s+1]+t.offsetY)*t.scaleY,w=(l[i]+t.offsetX)*t.scaleX,S=(l[i+1]+t.offsetY)*t.scaleY;if(A>=S)return;const _=h[r],E=h[r+1],C=h[r+2],T=h[a],x=h[a+1],P=h[a+2],M=h[o],D=h[o+1],R=h[o+2],H=Math.round(A),U=Math.round(S);let W,Y,B,N,Pt,At,Re,as;for(let it=H;it<=U;it++){if(itS?pt=1:v===S?pt=0:pt=(v-it)/(v-S),W=y-(y-w)*pt,Y=T-(T-M)*pt,B=x-(x-D)*pt,N=P-(P-R)*pt}let Z;itS?Z=1:Z=(A-it)/(A-S),Pt=m-(m-w)*Z,At=_-(_-M)*Z,Re=E-(E-D)*Z,as=C-(C-R)*Z;const Ls=Math.round(Math.min(W,Pt)),Ve=Math.round(Math.max(W,Pt));let We=f*it+Ls*4;for(let pt=Ls;pt<=Ve;pt++)Z=(W-pt)/(W-Pt),Z<0?Z=0:Z>1&&(Z=1),c[We++]=Y-(Y-At)*Z|0,c[We++]=B-(B-Re)*Z|0,c[We++]=N-(N-as)*Z|0,c[We++]=255}}function _y(u,t,e){const s=t.coords,i=t.colors;let r,a;switch(t.type){case"lattice":const o=t.verticesPerRow,l=Math.floor(s.length/o)-1,h=o-1;for(r=0;r=R?C=l:x=!0,D>=H?T=h:P=!0;const U=this.getSizeAndScale(C,this.ctx.canvas.width,_),W=this.getSizeAndScale(T,this.ctx.canvas.height,E),Y=t.cachedCanvases.getCanvas("pattern",U.size,W.size),B=Y.context,N=o.createCanvasGraphics(B);if(N.groupLevel=t.groupLevel,this.setFillAndStrokeStyleToContext(N,i,a),B.translate(-U.scale*c,-W.scale*f),N.transform(0,U.scale,0,0,W.scale,0,0),B.save(),(Pt=N.dependencyTracker)==null||Pt.save(),this.clipBbox(N,c,f,g,m),N.baseTransform=dt(N.ctx),N.executeOperatorList(s),N.endDrawing(),(as=(At=N.dependencyTracker)==null?void 0:(Re=At.restore()).recordNestedDependencies)==null||as.call(Re),B.restore(),x||P){const it=Y.canvas;x&&(C=l),P&&(T=h);const Z=this.getSizeAndScale(C,this.ctx.canvas.width,_),Ls=this.getSizeAndScale(T,this.ctx.canvas.height,E),Ve=Z.size,We=Ls.size,pt=t.cachedCanvases.getCanvas("pattern-workaround",Ve,We),lp=pt.context,hp=x?Math.floor(A/l):0,cp=P?Math.floor(y/h):0;for(let Mn=0;Mn<=hp;Mn++)for(let Rn=0;Rn<=cp;Rn++)lp.drawImage(it,Ve*Mn,We*Rn,Ve,We,0,0,Ve,We);return{canvas:pt.canvas,scaleX:Z.scale,scaleY:Ls.scale,offsetX:c,offsetY:f}}return{canvas:Y.canvas,scaleX:U.scale,scaleY:W.scale,offsetX:c,offsetY:f}}getSizeAndScale(t,e,s){const i=Math.max(Vu.MAX_PATTERN_SIZE,e);let r=Math.ceil(t*s);return r>=i?r=i:s=r/t,{scale:s,size:r}}clipBbox(t,e,s,i,r){const a=i-e,o=r-s;t.ctx.rect(e,s,a,o),I.axialAlignedBoundingBox([e,s,i,r],dt(t.ctx),t.current.minMax),t.clip(),t.endPath()}setFillAndStrokeStyleToContext(t,e,s){const i=t.ctx,r=t.current;switch(e){case cm.COLORED:const{fillStyle:a,strokeStyle:o}=this.ctx;i.fillStyle=r.fillColor=a,i.strokeStyle=r.strokeColor=o;break;case cm.UNCOLORED:i.fillStyle=i.strokeStyle=s,r.fillColor=r.strokeColor=s;break;default:throw new UA(`Unsupported paint type: ${e}`)}}isModifyingCurrentTransform(){return!1}getPattern(t,e,s,i){let r=s;i!==Vt.SHADING&&(r=I.transform(r,e.baseTransform),this.matrix&&(r=I.transform(r,this.matrix)));const a=this.createPatternCanvas(e);let o=new DOMMatrix(r);o=o.translate(a.offsetX,a.offsetY),o=o.scale(1/a.scaleX,1/a.scaleY);const l=t.createPattern(a.canvas,"repeat");return l.setTransform(o),l}};k(Vu,"MAX_PATTERN_SIZE",3e3);let Wp=Vu;function Ty({src:u,srcPos:t=0,dest:e,width:s,height:i,nonBlackColor:r=4294967295,inverseDecode:a=!1}){const o=Wt.isLittleEndian?4278190080:255,[l,h]=a?[r,o]:[o,r],c=s>>3,f=s&7,g=u.length;e=new Uint32Array(e.buffer);let m=0;for(let A=0;A{u.save=u.__originalSave,u.restore=u.__originalRestore,u.rotate=u.__originalRotate,u.scale=u.__originalScale,u.translate=u.__originalTranslate,u.transform=u.__originalTransform,u.setTransform=u.__originalSetTransform,u.resetTransform=u.__originalResetTransform,u.clip=u.__originalClip,u.moveTo=u.__originalMoveTo,u.lineTo=u.__originalLineTo,u.bezierCurveTo=u.__originalBezierCurveTo,u.rect=u.__originalRect,u.closePath=u.__originalClosePath,u.beginPath=u.__originalBeginPath,delete u._removeMirroring},u.save=function(){t.save(),this.__originalSave()},u.restore=function(){t.restore(),this.__originalRestore()},u.translate=function(e,s){t.translate(e,s),this.__originalTranslate(e,s)},u.scale=function(e,s){t.scale(e,s),this.__originalScale(e,s)},u.transform=function(e,s,i,r,a,o){t.transform(e,s,i,r,a,o),this.__originalTransform(e,s,i,r,a,o)},u.setTransform=function(e,s,i,r,a,o){t.setTransform(e,s,i,r,a,o),this.__originalSetTransform(e,s,i,r,a,o)},u.resetTransform=function(){t.resetTransform(),this.__originalResetTransform()},u.rotate=function(e){t.rotate(e),this.__originalRotate(e)},u.clip=function(e){t.clip(e),this.__originalClip(e)},u.moveTo=function(e,s){t.moveTo(e,s),this.__originalMoveTo(e,s)},u.lineTo=function(e,s){t.lineTo(e,s),this.__originalLineTo(e,s)},u.bezierCurveTo=function(e,s,i,r,a,o){t.bezierCurveTo(e,s,i,r,a,o),this.__originalBezierCurveTo(e,s,i,r,a,o)},u.rect=function(e,s,i,r){t.rect(e,s,i,r),this.__originalRect(e,s,i,r)},u.closePath=function(){t.closePath(),this.__originalClosePath()},u.beginPath=function(){t.beginPath(),this.__originalBeginPath()}}class Py{constructor(t){this.canvasFactory=t,this.cache=Object.create(null)}getCanvas(t,e,s){let i;return this.cache[t]!==void 0?(i=this.cache[t],this.canvasFactory.reset(i,e,s)):(i=this.canvasFactory.create(e,s),this.cache[t]=i),i}delete(t){delete this.cache[t]}clear(){for(const t in this.cache){const e=this.cache[t];this.canvasFactory.destroy(e),delete this.cache[t]}}}function md(u,t,e,s,i,r,a,o,l,h){const[c,f,g,m,A,y]=dt(u);if(f===0&&g===0){const S=a*c+A,_=Math.round(S),E=o*m+y,C=Math.round(E),T=(a+l)*c+A,x=Math.abs(Math.round(T)-_)||1,P=(o+h)*m+y,M=Math.abs(Math.round(P)-C)||1;return u.setTransform(Math.sign(c),0,0,Math.sign(m),_,C),u.drawImage(t,e,s,i,r,0,0,x,M),u.setTransform(c,f,g,m,A,y),[x,M]}if(c===0&&m===0){const S=o*g+A,_=Math.round(S),E=a*f+y,C=Math.round(E),T=(o+h)*g+A,x=Math.abs(Math.round(T)-_)||1,P=(a+l)*f+y,M=Math.abs(Math.round(P)-C)||1;return u.setTransform(0,Math.sign(f),Math.sign(g),0,_,C),u.drawImage(t,e,s,i,r,0,0,M,x),u.setTransform(c,f,g,m,A,y),[M,x]}u.drawImage(t,e,s,i,r,a,o,l,h);const v=Math.hypot(c,f),w=Math.hypot(g,m);return[v*l,w*h]}class pm{constructor(t,e,s){k(this,"alphaIsShape",!1);k(this,"fontSize",0);k(this,"fontSizeScale",1);k(this,"textMatrix",null);k(this,"textMatrixScale",1);k(this,"fontMatrix",wp);k(this,"leading",0);k(this,"x",0);k(this,"y",0);k(this,"lineX",0);k(this,"lineY",0);k(this,"charSpacing",0);k(this,"wordSpacing",0);k(this,"textHScale",1);k(this,"textRenderingMode",Ot.FILL);k(this,"textRise",0);k(this,"fillColor","#000000");k(this,"strokeColor","#000000");k(this,"patternFill",!1);k(this,"patternStroke",!1);k(this,"fillAlpha",1);k(this,"strokeAlpha",1);k(this,"lineWidth",1);k(this,"activeSMask",null);k(this,"transferMaps","none");s==null||s(this),this.clipBox=new Float32Array([0,0,t,e]),this.minMax=ya.slice()}clone(){const t=Object.create(this);return t.clipBox=this.clipBox.slice(),t.minMax=this.minMax.slice(),t}getPathBoundingBox(t=Vt.FILL,e=null){const s=this.minMax.slice();if(t===Vt.STROKE){e||st("Stroke bounding box must include transform."),I.singularValueDecompose2dScale(e,Me);const i=Me[0]*this.lineWidth/2,r=Me[1]*this.lineWidth/2;s[0]-=i,s[1]-=r,s[2]+=i,s[3]+=r}return s}updateClipFromPath(){const t=I.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(t||[0,0,0,0])}isEmptyClip(){return this.minMax[0]===1/0}startNewPathAndClipBox(t){this.clipBox.set(t,0),this.minMax.set(ya,0)}getClippedPathBoundingBox(t=Vt.FILL,e=null){return I.intersect(this.clipBox,this.getPathBoundingBox(t,e))}}function gm(u,t){if(t instanceof ImageData){u.putImageData(t,0,0);return}const e=t.height,s=t.width,i=e%ce,r=(e-i)/ce,a=i===0?r:r+1,o=u.createImageData(s,ce);let l=0,h;const c=t.data,f=o.data;let g,m,A,y;if(t.kind===wd.GRAYSCALE_1BPP){const v=c.byteLength,w=new Uint32Array(f.buffer,0,f.byteLength>>2),S=w.length,_=s+7>>3,E=4294967295,C=Wt.isLittleEndian?4278190080:255;for(g=0;g_?s:T*8-7,M=P&-8;let D=0,R=0;for(;x>=1}for(;h=r&&(A=i,y=s*A),h=0,m=y;m--;)f[h++]=c[l++],f[h++]=c[l++],f[h++]=c[l++],f[h++]=255;u.putImageData(o,0,g*ce)}else throw new Error(`bad image kind: ${t.kind}`)}function mm(u,t){if(t.bitmap){u.drawImage(t.bitmap,0,0);return}const e=t.height,s=t.width,i=e%ce,r=(e-i)/ce,a=i===0?r:r+1,o=u.createImageData(s,ce);let l=0;const h=t.data,c=o.data;for(let f=0;ffm&&typeof s=="function",f=c?Date.now()+xy:0;let g=0;const m=this.commonObjs,A=this.objs;let y,v;for(;;){if(i!==void 0&&l===i.nextBreakPoint)return i.breakIt(l,s),l;if(!r||r.has(l))if(y=o[l],v=a[l]??null,y!==Fl.dependency)v===null?this[y](l):this[y](l,...v);else for(const S of v){(w=this.dependencyTracker)==null||w.recordNamedData(S,l);const _=S.startsWith("g_")?m:A;if(!_.has(S))return _.get(S,s),l}if(l++,l===h)return l;if(c&&++g>fm){if(Date.now()>f)return s(),l;g=0}}}endDrawing(){b(this,Ph,Xp).call(this),this.cachedCanvases.clear(),this.cachedPatterns.clear();for(const t of this._cachedBitmapsMap.values()){for(const e of t.values())typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement&&(e.width=e.height=0);t.clear()}this._cachedBitmapsMap.clear(),b(this,Mh,qp).call(this)}_scaleImage(t,e){const s=t.width??t.displayWidth,i=t.height??t.displayHeight;let r=Math.max(Math.hypot(e[0],e[1]),1),a=Math.max(Math.hypot(e[2],e[3]),1),o=s,l=i,h="prescale1",c,f;for(;r>2&&o>1||a>2&&l>1;){let g=o,m=l;r>2&&o>1&&(g=o>=16384?Math.floor(o/2)-1||1:Math.ceil(o/2),r/=o/g),a>2&&l>1&&(m=l>=16384?Math.floor(l/2)-1||1:Math.ceil(l)/2,a/=l/m),c=this.cachedCanvases.getCanvas(h,g,m),f=c.context,f.clearRect(0,0,g,m),f.drawImage(t,0,0,o,l,0,0,g,m),t=c.canvas,o=g,l=m,h=h==="prescale1"?"prescale2":"prescale1"}return{img:t,paintWidth:o,paintHeight:l}}_createMaskCanvas(t,e){var D,R;const s=this.ctx,{width:i,height:r}=e,a=this.current.fillColor,o=this.current.patternFill,l=dt(s);let h,c,f,g;if((e.bitmap||e.data)&&e.count>1){const H=e.bitmap||e.data.buffer;c=JSON.stringify(o?l:[l.slice(0,4),a]),h=this._cachedBitmapsMap.get(H),h||(h=new Map,this._cachedBitmapsMap.set(H,h));const U=h.get(c);if(U&&!o){const W=Math.round(Math.min(l[0],l[2])+l[4]),Y=Math.round(Math.min(l[1],l[3])+l[5]);return(D=this.dependencyTracker)==null||D.recordDependencies(t,Le.transformAndFill),{canvas:U,offsetX:W,offsetY:Y}}f=U}f||(g=this.cachedCanvases.getCanvas("maskCanvas",i,r),mm(g.context,e));let m=I.transform(l,[1/i,0,0,-1/r,0,0]);m=I.transform(m,[1,0,0,1,0,-r]);const A=ya.slice();I.axialAlignedBoundingBox([0,0,i,r],m,A);const[y,v,w,S]=A,_=Math.round(w-y)||1,E=Math.round(S-v)||1,C=this.cachedCanvases.getCanvas("fillCanvas",_,E),T=C.context,x=y,P=v;T.translate(-x,-P),T.transform(...m),f||(f=this._scaleImage(g.canvas,os(T)),f=f.img,h&&o&&h.set(c,f)),T.imageSmoothingEnabled=bm(dt(T),e.interpolate),md(T,f,0,0,f.width,f.height,0,0,i,r),T.globalCompositeOperation="source-in";const M=I.transform(os(T),[1,0,0,1,-x,-P]);return T.fillStyle=o?a.getPattern(s,this,M,Vt.FILL):a,T.fillRect(0,0,i,r),h&&!o&&(this.cachedCanvases.delete("fillCanvas"),h.set(c,C.canvas)),(R=this.dependencyTracker)==null||R.recordDependencies(t,Le.transformAndFill),{canvas:C.canvas,offsetX:Math.round(x),offsetY:Math.round(P)}}setLineWidth(t,e){var s;(s=this.dependencyTracker)==null||s.recordSimpleData("lineWidth",t),e!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=e,this.ctx.lineWidth=e}setLineCap(t,e){var s;(s=this.dependencyTracker)==null||s.recordSimpleData("lineCap",t),this.ctx.lineCap=My[e]}setLineJoin(t,e){var s;(s=this.dependencyTracker)==null||s.recordSimpleData("lineJoin",t),this.ctx.lineJoin=Ry[e]}setMiterLimit(t,e){var s;(s=this.dependencyTracker)==null||s.recordSimpleData("miterLimit",t),this.ctx.miterLimit=e}setDash(t,e,s){var r;(r=this.dependencyTracker)==null||r.recordSimpleData("dash",t);const i=this.ctx;i.setLineDash!==void 0&&(i.setLineDash(e),i.lineDashOffset=s)}setRenderingIntent(t,e){}setFlatness(t,e){}setGState(t,e){var s,i,r,a,o;for(const[l,h]of e)switch(l){case"LW":this.setLineWidth(t,h);break;case"LC":this.setLineCap(t,h);break;case"LJ":this.setLineJoin(t,h);break;case"ML":this.setMiterLimit(t,h);break;case"D":this.setDash(t,h[0],h[1]);break;case"RI":this.setRenderingIntent(t,h);break;case"FL":this.setFlatness(t,h);break;case"Font":this.setFont(t,h[0],h[1]);break;case"CA":(s=this.dependencyTracker)==null||s.recordSimpleData("strokeAlpha",t),this.current.strokeAlpha=h;break;case"ca":(i=this.dependencyTracker)==null||i.recordSimpleData("fillAlpha",t),this.ctx.globalAlpha=this.current.fillAlpha=h;break;case"BM":(r=this.dependencyTracker)==null||r.recordSimpleData("globalCompositeOperation",t),this.ctx.globalCompositeOperation=h;break;case"SMask":(a=this.dependencyTracker)==null||a.recordSimpleData("SMask",t),this.current.activeSMask=h?this.tempSMask:null,this.tempSMask=null,this.checkSMaskState();break;case"TR":(o=this.dependencyTracker)==null||o.recordSimpleData("filter",t),this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(h);break}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const t=this.inSMaskMode;this.current.activeSMask&&!t?this.beginSMaskMode():!this.current.activeSMask&&t&&this.endSMaskMode()}beginSMaskMode(t){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const e=this.ctx.canvas.width,s=this.ctx.canvas.height,i="smaskGroupAt"+this.groupLevel,r=this.cachedCanvases.getCanvas(i,e,s);this.suspendedCtx=this.ctx;const a=this.ctx=r.context;a.setTransform(this.suspendedCtx.getTransform()),dl(this.suspendedCtx,a),ky(a,this.suspendedCtx),this.setGState(t,[["BM","source-over"]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring(),dl(this.ctx,this.suspendedCtx),this.ctx=this.suspendedCtx,this.suspendedCtx=null}compose(t){if(!this.current.activeSMask)return;t?(t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.ceil(t[2]),t[3]=Math.ceil(t[3])):t=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const e=this.current.activeSMask,s=this.suspendedCtx;this.composeSMask(s,e,this.ctx,t),this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore()}composeSMask(t,e,s,i){const r=i[0],a=i[1],o=i[2]-r,l=i[3]-a;o===0||l===0||(this.genericComposeSMask(e.context,s,o,l,e.subtype,e.backdrop,e.transferMap,r,a,e.offsetX,e.offsetY),t.save(),t.globalAlpha=1,t.globalCompositeOperation="source-over",t.setTransform(1,0,0,1,0,0),t.drawImage(s.canvas,0,0),t.restore())}genericComposeSMask(t,e,s,i,r,a,o,l,h,c,f){let g=t.canvas,m=l-c,A=h-f;if(a)if(m<0||A<0||m+s>g.width||A+i>g.height){const v=this.cachedCanvases.getCanvas("maskExtension",s,i),w=v.context;w.drawImage(g,-m,-A),w.globalCompositeOperation="destination-atop",w.fillStyle=a,w.fillRect(0,0,s,i),w.globalCompositeOperation="source-over",g=v.canvas,m=A=0}else{t.save(),t.globalAlpha=1,t.setTransform(1,0,0,1,0,0);const v=new Path2D;v.rect(m,A,s,i),t.clip(v),t.globalCompositeOperation="destination-atop",t.fillStyle=a,t.fillRect(m,A,s,i),t.restore()}e.save(),e.globalAlpha=1,e.setTransform(1,0,0,1,0,0),r==="Alpha"&&o?e.filter=this.filterFactory.addAlphaFilter(o):r==="Luminosity"&&(e.filter=this.filterFactory.addLuminosityFilter(o));const y=new Path2D;y.rect(l,h,s,i),e.clip(y),e.globalCompositeOperation="destination-in",e.drawImage(g,m,A,s,i,l,h,s,i),e.restore()}save(t){var s;this.inSMaskMode&&dl(this.ctx,this.suspendedCtx),this.ctx.save();const e=this.current;this.stateStack.push(e),this.current=e.clone(),(s=this.dependencyTracker)==null||s.save(t)}restore(t){var e;if((e=this.dependencyTracker)==null||e.restore(t),this.stateStack.length===0){this.inSMaskMode&&this.endSMaskMode();return}this.current=this.stateStack.pop(),this.ctx.restore(),this.inSMaskMode&&dl(this.suspendedCtx,this.ctx),this.checkSMaskState(),this.pendingClip=null,this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}transform(t,e,s,i,r,a,o){var l;(l=this.dependencyTracker)==null||l.recordIncrementalData("transform",t),this.ctx.transform(e,s,i,r,a,o),this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}constructPath(t,e,s,i){let[r]=s;if(!i){r||(r=s[0]=new Path2D),this[e](t,r);return}if(this.dependencyTracker!==null){const a=e===Fl.stroke?this.current.lineWidth/2:0;this.dependencyTracker.resetBBox(t).recordBBox(t,this.ctx,i[0]-a,i[2]+a,i[1]-a,i[3]+a).recordDependencies(t,["transform"])}if(!(r instanceof Path2D)){const a=s[0]=new Path2D;for(let o=0,l=r.length;oum&&(c=um),this.current.fontSizeScale=s/c,this.ctx.font=`${h} ${l} ${c}px ${o}`}setTextRenderingMode(t,e){var s;(s=this.dependencyTracker)==null||s.recordSimpleData("textRenderingMode",t),this.current.textRenderingMode=e}setTextRise(t,e){var s;(s=this.dependencyTracker)==null||s.recordSimpleData("textRise",t),this.current.textRise=e}moveText(t,e,s){var i;(i=this.dependencyTracker)==null||i.resetIncrementalData("sameLineText").recordIncrementalData("moveText",t),this.current.x=this.current.lineX+=e,this.current.y=this.current.lineY+=s}setLeadingMoveText(t,e,s){this.setLeading(t,-s),this.moveText(t,e,s)}setTextMatrix(t,e){var i;(i=this.dependencyTracker)==null||i.recordSimpleData("textMatrix",t);const{current:s}=this;s.textMatrix=e,s.textMatrixScale=Math.hypot(e[0],e[1]),s.x=s.lineX=0,s.y=s.lineY=0}nextLine(t){var e;this.moveText(t,0,this.current.leading),(e=this.dependencyTracker)==null||e.recordIncrementalData("moveText",this.dependencyTracker.getSimpleIndex("leading")??t)}paintChar(t,e,s,i,r,a){var w,S,_,E;const o=this.ctx,l=this.current,h=l.font,c=l.textRenderingMode,f=l.fontSize/l.fontSizeScale,g=c&Ot.FILL_STROKE_MASK,m=!!(c&Ot.ADD_TO_PATH_FLAG),A=l.patternFill&&!h.missingFile,y=l.patternStroke&&!h.missingFile;let v;if((h.disableFontFace||m||A||y)&&!h.missingFile&&(v=h.getPathGenerator(this.commonObjs,e)),v&&(h.disableFontFace||A||y)){o.save(),o.translate(s,i),o.scale(f,-f),(w=this.dependencyTracker)==null||w.recordCharacterBBox(t,o,h);let C;if(g===Ot.FILL||g===Ot.FILL_STROKE)if(r){C=o.getTransform(),o.setTransform(...r);const T=b(this,Rh,Yp).call(this,v,C,r);o.fill(T)}else o.fill(v);if(g===Ot.STROKE||g===Ot.FILL_STROKE)if(a){C||(C=o.getTransform()),o.setTransform(...a);const{a:T,b:x,c:P,d:M}=C,D=I.inverseTransform(a),R=I.transform([T,x,P,M,0,0],D);I.singularValueDecompose2dScale(R,Me),o.lineWidth*=Math.max(Me[0],Me[1])/f,o.stroke(b(this,Rh,Yp).call(this,v,C,a))}else o.lineWidth/=f,o.stroke(v);o.restore()}else(g===Ot.FILL||g===Ot.FILL_STROKE)&&(o.fillText(e,s,i),(S=this.dependencyTracker)==null||S.recordCharacterBBox(t,o,h,f,s,i,()=>o.measureText(e))),(g===Ot.STROKE||g===Ot.FILL_STROKE)&&(this.dependencyTracker&&((_=this.dependencyTracker)==null||_.recordCharacterBBox(t,o,h,f,s,i,()=>o.measureText(e)).recordDependencies(t,Le.stroke)),o.strokeText(e,s,i));m&&((this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:dt(o),x:s,y:i,fontSize:f,path:v}),(E=this.dependencyTracker)==null||E.recordCharacterBBox(t,o,h,f,s,i))}get isFontSubpixelAAEnabled(){const{context:t}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);t.scale(1.5,1),t.fillText("I",0,10);const e=t.getImageData(0,0,10,10).data;let s=!1;for(let i=3;i0&&e[i]<255){s=!0;break}return V(this,"isFontSubpixelAAEnabled",s)}showText(t,e){var P,M,D,R;this.dependencyTracker&&(this.dependencyTracker.recordDependencies(t,Le.showText).copyDependenciesFromIncrementalOperation(t,"sameLineText").resetBBox(t),this.current.textRenderingMode&Ot.ADD_TO_PATH_FLAG&&this.dependencyTracker.recordFutureForcedDependency("textClip",t).inheritPendingDependenciesAsFutureForcedDependencies());const s=this.current,i=s.font;if(i.isType3Font){this.showType3Text(t,e),(P=this.dependencyTracker)==null||P.recordOperation(t).recordIncrementalData("sameLineText",t);return}const r=s.fontSize;if(r===0){(M=this.dependencyTracker)==null||M.recordOperation(t);return}const a=this.ctx,o=s.fontSizeScale,l=s.charSpacing,h=s.wordSpacing,c=s.fontDirection,f=s.textHScale*c,g=e.length,m=i.vertical,A=m?1:-1,y=i.defaultVMetrics,v=r*s.fontMatrix[0],w=s.textRenderingMode===Ot.FILL&&!i.disableFontFace&&!s.patternFill;a.save(),s.textMatrix&&a.transform(...s.textMatrix),a.translate(s.x,s.y+s.textRise),c>0?a.scale(f,-1):a.scale(f,1);let S,_;if(s.patternFill){a.save();const H=s.fillColor.getPattern(a,this,os(a),Vt.FILL);S=dt(a),a.restore(),a.fillStyle=H}if(s.patternStroke){a.save();const H=s.strokeColor.getPattern(a,this,os(a),Vt.STROKE);_=dt(a),a.restore(),a.strokeStyle=H}let E=s.lineWidth;const C=s.textMatrixScale;if(C===0||E===0){const H=s.textRenderingMode&Ot.FILL_STROKE_MASK;(H===Ot.STROKE||H===Ot.FILL_STROKE)&&(E=this.getSinglePixelWidth())}else E/=C;if(o!==1&&(a.scale(o,o),E/=o),a.lineWidth=E,i.isInvalidPDFjsFont){const H=[];let U=0;for(const Y of e)H.push(Y.unicode),U+=Y.width;const W=H.join("");if(a.fillText(W,0,0),this.dependencyTracker!==null){const Y=a.measureText(W);this.dependencyTracker.recordBBox(t,this.ctx,-Y.actualBoundingBoxLeft,Y.actualBoundingBoxRight,-Y.actualBoundingBoxAscent,Y.actualBoundingBoxDescent).recordOperation(t).recordIncrementalData("sameLineText",t)}s.x+=U*v*f,a.restore(),this.compose();return}let T=0,x;for(x=0;x0){Re=a.measureText(Y);const it=Re.width*1e3/r*o;if(AtRe??a.measureText(Y));else if(this.paintChar(t,Y,N,Pt,S,_),B){const it=N+r*B.offset.x/o,Z=Pt-r*B.offset.y/o;this.paintChar(t,B.fontChar,it,Z,S,_)}}const as=m?At*v-W*c:At*v+W*c;T+=as,U&&a.restore()}m?s.y-=T:s.x+=T*f,a.restore(),this.compose(),(R=this.dependencyTracker)==null||R.recordOperation(t).recordIncrementalData("sameLineText",t)}showType3Text(t,e){const s=this.ctx,i=this.current,r=i.font,a=i.fontSize,o=i.fontDirection,l=r.vertical?1:-1,h=i.charSpacing,c=i.wordSpacing,f=i.textHScale*o,g=i.fontMatrix||wp,m=e.length,A=i.textRenderingMode===Ot.INVISIBLE;let y,v,w,S;if(A||a===0)return;this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,s.save(),i.textMatrix&&s.transform(...i.textMatrix),s.translate(i.x,i.y+i.textRise),s.scale(f,o);const _=this.dependencyTracker;for(this.dependencyTracker=_?new tu(_,t):null,y=0;ynew Jg(a,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack},void 0,void 0,this.dependencyTracker?new tu(this.dependencyTracker,t):null)};s=new Wp(e,this.ctx,r,i)}else s=this._getPattern(t,e[1],e[2]);return s}setStrokeColorN(t,...e){var s;(s=this.dependencyTracker)==null||s.recordSimpleData("strokeColor",t),this.current.strokeColor=this.getColorN_Pattern(t,e),this.current.patternStroke=!0}setFillColorN(t,...e){var s;(s=this.dependencyTracker)==null||s.recordSimpleData("fillColor",t),this.current.fillColor=this.getColorN_Pattern(t,e),this.current.patternFill=!0}setStrokeRGBColor(t,e){var s;(s=this.dependencyTracker)==null||s.recordSimpleData("strokeColor",t),this.ctx.strokeStyle=this.current.strokeColor=e,this.current.patternStroke=!1}setStrokeTransparent(t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("strokeColor",t),this.ctx.strokeStyle=this.current.strokeColor="transparent",this.current.patternStroke=!1}setFillRGBColor(t,e){var s;(s=this.dependencyTracker)==null||s.recordSimpleData("fillColor",t),this.ctx.fillStyle=this.current.fillColor=e,this.current.patternFill=!1}setFillTransparent(t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("fillColor",t),this.ctx.fillStyle=this.current.fillColor="transparent",this.current.patternFill=!1}_getPattern(t,e,s=null){let i;return this.cachedPatterns.has(e)?i=this.cachedPatterns.get(e):(i=Cy(this.getObject(t,e)),this.cachedPatterns.set(e,i)),s&&(i.matrix=s),i}shadingFill(t,e){var a;if(!this.contentVisible)return;const s=this.ctx;this.save(t);const i=this._getPattern(t,e);s.fillStyle=i.getPattern(s,this,os(s),Vt.SHADING);const r=os(s);if(r){const{width:o,height:l}=s.canvas,h=ya.slice();I.axialAlignedBoundingBox([0,0,o,l],r,h);const[c,f,g,m]=h;this.ctx.fillRect(c,f,g-c,m-f)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);(a=this.dependencyTracker)==null||a.resetBBox(t).recordFullPageBBox(t).recordDependencies(t,Le.transform).recordDependencies(t,Le.fill).recordOperation(t),this.compose(this.current.getClippedPathBoundingBox()),this.restore(t)}beginInlineImage(){st("Should not call beginInlineImage")}beginImageData(){st("Should not call beginImageData")}paintFormXObjectBegin(t,e,s){var i;if(this.contentVisible&&(this.save(t),this.baseTransformStack.push(this.baseTransform),e&&this.transform(t,...e),this.baseTransform=dt(this.ctx),s)){I.axialAlignedBoundingBox(s,this.baseTransform,this.current.minMax);const[r,a,o,l]=s,h=new Path2D;h.rect(r,a,o-r,l-a),this.ctx.clip(h),(i=this.dependencyTracker)==null||i.recordClipBox(t,this.ctx,r,o,a,l),this.endPath(t)}}paintFormXObjectEnd(t){this.contentVisible&&(this.restore(t),this.baseTransform=this.baseTransformStack.pop())}beginGroup(t,e){var _;if(!this.contentVisible)return;this.save(t),this.inSMaskMode&&(this.endSMaskMode(),this.current.activeSMask=null);const s=this.ctx;e.isolated||ip("TODO: Support non-isolated groups."),e.knockout&&z("Knockout groups not supported.");const i=dt(s);if(e.matrix&&s.transform(...e.matrix),!e.bbox)throw new Error("Bounding box is required.");let r=ya.slice();I.axialAlignedBoundingBox(e.bbox,dt(s),r);const a=[0,0,s.canvas.width,s.canvas.height];r=I.intersect(r,a)||[0,0,0,0];const o=Math.floor(r[0]),l=Math.floor(r[1]),h=Math.max(Math.ceil(r[2])-o,1),c=Math.max(Math.ceil(r[3])-l,1);this.current.startNewPathAndClipBox([0,0,h,c]);let f="groupAt"+this.groupLevel;e.smask&&(f+="_smask_"+this.smaskCounter++%2);const g=this.cachedCanvases.getCanvas(f,h,c),m=g.context;m.translate(-o,-l),m.transform(...i);let A=new Path2D;const[y,v,w,S]=e.bbox;if(A.rect(y,v,w-y,S-v),e.matrix){const E=new Path2D;E.addPath(A,new DOMMatrix(e.matrix)),A=E}m.clip(A),e.smask&&this.smaskStack.push({canvas:g.canvas,context:m,offsetX:o,offsetY:l,subtype:e.smask.subtype,backdrop:e.smask.backdrop,transferMap:e.smask.transferMap||null,startTransformInverse:null}),(!e.smask||this.dependencyTracker)&&(s.setTransform(1,0,0,1,0,0),s.translate(o,l),s.save()),dl(s,m),this.ctx=m,(_=this.dependencyTracker)==null||_.inheritSimpleDataAsFutureForcedDependencies(["fillAlpha","strokeAlpha","globalCompositeOperation"]).pushBaseTransform(s),this.setGState(t,[["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(s),this.groupLevel++}endGroup(t,e){var r;if(!this.contentVisible)return;this.groupLevel--;const s=this.ctx,i=this.groupStack.pop();if(this.ctx=i,this.ctx.imageSmoothingEnabled=!1,(r=this.dependencyTracker)==null||r.popBaseTransform(),e.smask)this.tempSMask=this.smaskStack.pop(),this.restore(t),this.dependencyTracker&&this.ctx.restore();else{this.ctx.restore();const a=dt(this.ctx);this.restore(t),this.ctx.save(),this.ctx.setTransform(...a);const o=ya.slice();I.axialAlignedBoundingBox([0,0,s.canvas.width,s.canvas.height],a,o),this.ctx.drawImage(s.canvas,0,0),this.ctx.restore(),this.compose(o)}}beginAnnotation(t,e,s,i,r,a){if(b(this,Ph,Xp).call(this),bd(this.ctx),this.ctx.save(),this.save(t),this.baseTransform&&this.ctx.setTransform(...this.baseTransform),s){const o=s[2]-s[0],l=s[3]-s[1];if(a&&this.annotationCanvasMap){i=i.slice(),i[4]-=s[0],i[5]-=s[1],s=s.slice(),s[0]=s[1]=0,s[2]=o,s[3]=l,I.singularValueDecompose2dScale(dt(this.ctx),Me);const{viewportScale:h}=this,c=Math.ceil(o*this.outputScaleX*h),f=Math.ceil(l*this.outputScaleY*h);this.annotationCanvas=this.canvasFactory.create(c,f);const{canvas:g,context:m}=this.annotationCanvas;this.annotationCanvasMap.set(e,g),this.annotationCanvas.savedCtx=this.ctx,this.ctx=m,this.ctx.save(),this.ctx.setTransform(Me[0],0,0,-Me[1],0,l*Me[1]),bd(this.ctx)}else{bd(this.ctx),this.endPath(t);const h=new Path2D;h.rect(s[0],s[1],o,l),this.ctx.clip(h)}}this.current=new pm(this.ctx.canvas.width,this.ctx.canvas.height),this.transform(t,...i),this.transform(t,...r)}endAnnotation(t){this.annotationCanvas&&(this.ctx.restore(),b(this,Mh,qp).call(this),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas)}paintImageMaskXObject(t,e){var o;if(!this.contentVisible)return;const s=e.count;e=this.getObject(t,e.data,e),e.count=s;const i=this.ctx,r=this._createMaskCanvas(t,e),a=r.canvas;i.save(),i.setTransform(1,0,0,1,0,0),i.drawImage(a,r.offsetX,r.offsetY),(o=this.dependencyTracker)==null||o.resetBBox(t).recordBBox(t,this.ctx,r.offsetX,r.offsetX+a.width,r.offsetY,r.offsetY+a.height).recordOperation(t),i.restore(),this.compose()}paintImageMaskXObjectRepeat(t,e,s,i=0,r=0,a,o){var f,g,m;if(!this.contentVisible)return;e=this.getObject(t,e.data,e);const l=this.ctx;l.save();const h=dt(l);l.transform(s,i,r,a,0,0);const c=this._createMaskCanvas(t,e);l.setTransform(1,0,0,1,c.offsetX-h[4],c.offsetY-h[5]),(f=this.dependencyTracker)==null||f.resetBBox(t);for(let A=0,y=o.length;Af?c/f:1,o=h>f?h/f:1}}this._cachedScaleForStroking[0]=a,this._cachedScaleForStroking[1]=o}return this._cachedScaleForStroking}rescaleAndStroke(t,e){const{ctx:s,current:{lineWidth:i}}=this,[r,a]=this.getScaleForStroking();if(r===a){s.lineWidth=(i||1)*r,s.stroke(t);return}const o=s.getLineDash();e&&s.save(),s.scale(r,a),bp.a=1/r,bp.d=1/a;const l=new Path2D;if(l.addPath(t,bp),o.length>0){const h=Math.max(r,a);s.setLineDash(o.map(c=>c/h)),s.lineDashOffset/=h}s.lineWidth=i||1,s.stroke(l),e&&s.restore()}isContentVisible(){for(let t=this.markedContentStack.length-1;t>=0;t--)if(!this.markedContentStack[t].visible)return!1;return!0}};Ph=new WeakSet,Xp=function(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null,this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null)},Mh=new WeakSet,qp=function(){if(this.pageColors){const t=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(t!=="none"){const e=this.ctx.filter;this.ctx.filter=t,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=e}}},Rh=new WeakSet,Yp=function(t,e,s){const i=new Path2D;return i.addPath(t,new DOMMatrix(s).invertSelf().multiplySelf(e)),i};let _a=Jg;for(const u in Fl)_a.prototype[u]!==void 0&&(_a.prototype[Fl[u]]=_a.prototype[u]);var Dh,Lh;class Ti{static get workerPort(){return n(this,Dh)}static set workerPort(t){if(!(typeof Worker<"u"&&t instanceof Worker)&&t!==null)throw new Error("Invalid `workerPort` type.");p(this,Dh,t)}static get workerSrc(){return n(this,Lh)}static set workerSrc(t){if(typeof t!="string")throw new Error("Invalid `workerSrc` type.");p(this,Lh,t)}}Dh=new WeakMap,Lh=new WeakMap,d(Ti,Dh,null),d(Ti,Lh,"");var ro,Ih;class Ly{constructor({parsedData:t,rawData:e}){d(this,ro,void 0);d(this,Ih,void 0);p(this,ro,t),p(this,Ih,e)}getRaw(){return n(this,Ih)}get(t){return n(this,ro).get(t)??null}[Symbol.iterator](){return n(this,ro).entries()}}ro=new WeakMap,Ih=new WeakMap;const ma=Symbol("INTERNAL");var Fh,Nh,Oh,ao;class Iy{constructor(t,{name:e,intent:s,usage:i,rbGroups:r}){d(this,Fh,!1);d(this,Nh,!1);d(this,Oh,!1);d(this,ao,!0);p(this,Fh,!!(t&Pe.DISPLAY)),p(this,Nh,!!(t&Pe.PRINT)),this.name=e,this.intent=s,this.usage=i,this.rbGroups=r}get visible(){if(n(this,Oh))return n(this,ao);if(!n(this,ao))return!1;const{print:t,view:e}=this.usage;return n(this,Fh)?(e==null?void 0:e.viewState)!=="OFF":n(this,Nh)?(t==null?void 0:t.printState)!=="OFF":!0}_setVisible(t,e,s=!1){t!==ma&&st("Internal method `_setVisible` called."),p(this,Oh,s),p(this,ao,e)}}Fh=new WeakMap,Nh=new WeakMap,Oh=new WeakMap,ao=new WeakMap;var tn,et,oo,lo,Bh,Kp;class Fy{constructor(t,e=Pe.DISPLAY){d(this,Bh);d(this,tn,null);d(this,et,new Map);d(this,oo,null);d(this,lo,null);if(this.renderingIntent=e,this.name=null,this.creator=null,t!==null){this.name=t.name,this.creator=t.creator,p(this,lo,t.order);for(const s of t.groups)n(this,et).set(s.id,new Iy(e,s));if(t.baseState==="OFF")for(const s of n(this,et).values())s._setVisible(ma,!1);for(const s of t.on)n(this,et).get(s)._setVisible(ma,!0);for(const s of t.off)n(this,et).get(s)._setVisible(ma,!1);p(this,oo,this.getHash())}}isVisible(t){if(n(this,et).size===0)return!0;if(!t)return ip("Optional content group not defined."),!0;if(t.type==="OCG")return n(this,et).has(t.id)?n(this,et).get(t.id).visible:(z(`Optional content group not found: ${t.id}`),!0);if(t.type==="OCMD"){if(t.expression)return b(this,Bh,Kp).call(this,t.expression);if(!t.policy||t.policy==="AnyOn"){for(const e of t.ids){if(!n(this,et).has(e))return z(`Optional content group not found: ${e}`),!0;if(n(this,et).get(e).visible)return!0}return!1}else if(t.policy==="AllOn"){for(const e of t.ids){if(!n(this,et).has(e))return z(`Optional content group not found: ${e}`),!0;if(!n(this,et).get(e).visible)return!1}return!0}else if(t.policy==="AnyOff"){for(const e of t.ids){if(!n(this,et).has(e))return z(`Optional content group not found: ${e}`),!0;if(!n(this,et).get(e).visible)return!0}return!1}else if(t.policy==="AllOff"){for(const e of t.ids){if(!n(this,et).has(e))return z(`Optional content group not found: ${e}`),!0;if(n(this,et).get(e).visible)return!1}return!0}return z(`Unknown optional content policy ${t.policy}.`),!0}return z(`Unknown group type ${t.type}.`),!0}setVisibility(t,e=!0,s=!0){var r;const i=n(this,et).get(t);if(!i){z(`Optional content group not found: ${t}`);return}if(s&&e&&i.rbGroups.length)for(const a of i.rbGroups)for(const o of a)o!==t&&((r=n(this,et).get(o))==null||r._setVisible(ma,!1,!0));i._setVisible(ma,!!e,!0),p(this,tn,null)}setOCGState({state:t,preserveRB:e}){let s;for(const i of t){switch(i){case"ON":case"OFF":case"Toggle":s=i;continue}const r=n(this,et).get(i);if(r)switch(s){case"ON":this.setVisibility(i,!0,e);break;case"OFF":this.setVisibility(i,!1,e);break;case"Toggle":this.setVisibility(i,!r.visible,e);break}}p(this,tn,null)}get hasInitialVisibility(){return n(this,oo)===null||this.getHash()===n(this,oo)}getOrder(){return n(this,et).size?n(this,lo)?n(this,lo).slice():[...n(this,et).keys()]:null}getGroup(t){return n(this,et).get(t)||null}getHash(){if(n(this,tn)!==null)return n(this,tn);const t=new rb;for(const[e,s]of n(this,et))t.update(`${e}:${s.visible}`);return p(this,tn,t.hexdigest())}[Symbol.iterator](){return n(this,et).entries()}}tn=new WeakMap,et=new WeakMap,oo=new WeakMap,lo=new WeakMap,Bh=new WeakSet,Kp=function(t){const e=t.length;if(e<2)return!0;const s=t[0];for(let i=1;i0){const l=r instanceof Uint8Array&&r.byteLength===r.buffer.byteLength?r.buffer:new Uint8Array(r).buffer;this._queuedChunks.push(l)}this._pdfDataRangeTransport=t,this._isStreamingSupported=!s,this._isRangeSupported=!e,this._contentLength=i,this._fullRequestReader=null,this._rangeReaders=[],t.addRangeListener((l,h)=>{this._onReceiveData({begin:l,chunk:h})}),t.addProgressListener((l,h)=>{this._onProgress({loaded:l,total:h})}),t.addProgressiveReadListener(l=>{this._onReceiveData({chunk:l})}),t.addProgressiveDoneListener(()=>{this._onProgressiveDone()}),t.transportReady()}_onReceiveData({begin:t,chunk:e}){const s=e instanceof Uint8Array&&e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer;if(t===void 0)this._fullRequestReader?this._fullRequestReader._enqueue(s):this._queuedChunks.push(s);else{const i=this._rangeReaders.some(function(r){return r._begin!==t?!1:(r._enqueue(s),!0)});_t(i,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){var t;return((t=this._fullRequestReader)==null?void 0:t._loaded)??0}_onProgress(t){var e,s,i,r;t.total===void 0?(s=(e=this._rangeReaders[0])==null?void 0:e.onProgress)==null||s.call(e,{loaded:t.loaded}):(r=(i=this._fullRequestReader)==null?void 0:i.onProgress)==null||r.call(i,{loaded:t.loaded,total:t.total})}_onProgressiveDone(){var t;(t=this._fullRequestReader)==null||t.progressiveDone(),this._progressiveDone=!0}_removeRangeReader(t){const e=this._rangeReaders.indexOf(t);e>=0&&this._rangeReaders.splice(e,1)}getFullReader(){_t(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const t=this._queuedChunks;return this._queuedChunks=null,new Oy(this,t,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const s=new By(this,t,e);return this._pdfDataRangeTransport.requestDataRange(t,e),this._rangeReaders.push(s),s}cancelAllRequests(t){var e;(e=this._fullRequestReader)==null||e.cancel(t);for(const s of this._rangeReaders.slice(0))s.cancel(t);this._pdfDataRangeTransport.abort()}}class Oy{constructor(t,e,s=!1,i=null){this._stream=t,this._done=s||!1,this._filename=zg(i)?i:null,this._queuedChunks=e||[],this._loaded=0;for(const r of this._queuedChunks)this._loaded+=r.byteLength;this._requests=[],this._headersReady=Promise.resolve(),t._fullRequestReader=this,this.onProgress=null}_enqueue(t){this._done||(this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._queuedChunks.push(t),this._loaded+=t.byteLength)}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}async read(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class By{constructor(t,e,s){this._stream=t,this._begin=e,this._end=s,this._queuedChunk=null,this._requests=[],this._done=!1,this.onProgress=null}_enqueue(t){if(!this._done){if(this._requests.length===0)this._queuedChunk=t;else{this._requests.shift().resolve({value:t,done:!1});for(const s of this._requests)s.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0,this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){if(this._queuedChunk){const e=this._queuedChunk;return this._queuedChunk=null,{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._stream._removeRangeReader(this)}}function Hy(u){let t=!0,e=s("filename\\*","i").exec(u);if(e){e=e[1];let c=o(e);return c=unescape(c),c=l(c),c=h(c),r(c)}if(e=a(u),e){const c=h(e);return r(c)}if(e=s("filename","i").exec(u),e){e=e[1];let c=o(e);return c=h(c),r(c)}function s(c,f){return new RegExp("(?:^|;)\\s*"+c+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',f)}function i(c,f){if(c){if(!/^[\x00-\xFF]+$/.test(f))return f;try{const g=new TextDecoder(c,{fatal:!0}),m=ad(f);f=g.decode(m),t=!1}catch{}}return f}function r(c){return t&&/[\x80-\xff]/.test(c)&&(c=i("utf-8",c),t&&(c=i("iso-8859-1",c))),c}function a(c){const f=[];let g;const m=s("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;(g=m.exec(c))!==null;){let[,y,v,w]=g;if(y=parseInt(y,10),y in f){if(y===0)break;continue}f[y]=[v,w]}const A=[];for(let y=0;y{if(t._responseOrigin=ap(r.url),!wb(r.status))throw cd(r.status,i);this._reader=r.body.getReader(),this._headersCapability.resolve();const a=r.headers,{allowRangeRequests:o,suggestedLength:l}=Ab({responseHeaders:a,isHttp:t.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=o,this._contentLength=l||this._contentLength,this._filename=yb(a),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new kn("Streaming is disabled."))}).catch(this._headersCapability.reject),this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var s;await this._headersCapability.promise;const{value:t,done:e}=await this._reader.read();return e?{value:t,done:e}:(this._loaded+=t.byteLength,(s=this.onProgress)==null||s.call(this,{loaded:this._loaded,total:this._contentLength}),{value:_b(t),done:!1})}cancel(t){var e;(e=this._reader)==null||e.cancel(t),this._abortController.abort()}}class Gy{constructor(t,e,s){this._stream=t,this._reader=null,this._loaded=0;const i=t.source;this._withCredentials=i.withCredentials||!1,this._readCapability=Promise.withResolvers(),this._isStreamingSupported=!i.disableStream,this._abortController=new AbortController;const r=new Headers(t.headers);r.append("Range",`bytes=${e}-${s-1}`);const a=i.url;fetch(a,vb(r,this._withCredentials,this._abortController)).then(o=>{const l=ap(o.url);if(l!==t._responseOrigin)throw new Error(`Expected range response-origin "${l}" to match "${t._responseOrigin}".`);if(!wb(o.status))throw cd(o.status,a);this._readCapability.resolve(),this._reader=o.body.getReader()}).catch(this._readCapability.reject),this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){var s;await this._readCapability.promise;const{value:t,done:e}=await this._reader.read();return e?{value:t,done:e}:(this._loaded+=t.byteLength,(s=this.onProgress)==null||s.call(this,{loaded:this._loaded}),{value:_b(t),done:!1})}cancel(t){var e;(e=this._reader)==null||e.cancel(t),this._abortController.abort()}}const Ap=200,yp=206;function Uy(u){const t=u.response;return typeof t!="string"?t:ad(t).buffer}class jy{constructor({url:t,httpHeaders:e,withCredentials:s}){k(this,"_responseOrigin",null);this.url=t,this.isHttp=/^https?:/i.test(t),this.headers=bb(this.isHttp,e),this.withCredentials=s||!1,this.currXhrId=0,this.pendingRequests=Object.create(null)}request(t){const e=new XMLHttpRequest,s=this.currXhrId++,i=this.pendingRequests[s]={xhr:e};e.open("GET",this.url),e.withCredentials=this.withCredentials;for(const[r,a]of this.headers)e.setRequestHeader(r,a);return this.isHttp&&"begin"in t&&"end"in t?(e.setRequestHeader("Range",`bytes=${t.begin}-${t.end-1}`),i.expectedStatus=yp):i.expectedStatus=Ap,e.responseType="arraybuffer",_t(t.onError,"Expected `onError` callback to be provided."),e.onerror=()=>{t.onError(e.status)},e.onreadystatechange=this.onStateChange.bind(this,s),e.onprogress=this.onProgress.bind(this,s),i.onHeadersReceived=t.onHeadersReceived,i.onDone=t.onDone,i.onError=t.onError,i.onProgress=t.onProgress,e.send(null),s}onProgress(t,e){var i;const s=this.pendingRequests[t];s&&((i=s.onProgress)==null||i.call(s,e))}onStateChange(t,e){const s=this.pendingRequests[t];if(!s)return;const i=s.xhr;if(i.readyState>=2&&s.onHeadersReceived&&(s.onHeadersReceived(),delete s.onHeadersReceived),i.readyState!==4||!(t in this.pendingRequests))return;if(delete this.pendingRequests[t],i.status===0&&this.isHttp){s.onError(i.status);return}const r=i.status||Ap;if(!(r===Ap&&s.expectedStatus===yp)&&r!==s.expectedStatus){s.onError(i.status);return}const o=Uy(i);if(r===yp){const l=i.getResponseHeader("Content-Range"),h=/bytes (\d+)-(\d+)\/(\d+)/.exec(l);h?s.onDone({begin:parseInt(h[1],10),chunk:o}):(z('Missing or invalid "Content-Range" header.'),s.onError(0))}else o?s.onDone({begin:0,chunk:o}):s.onError(i.status)}getRequestXhr(t){return this.pendingRequests[t].xhr}isPendingRequest(t){return t in this.pendingRequests}abortRequest(t){const e=this.pendingRequests[t].xhr;delete this.pendingRequests[t],e.abort()}}class Vy{constructor(t){this._source=t,this._manager=new jy(t),this._rangeChunkSize=t.rangeChunkSize,this._fullRequestReader=null,this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(t){const e=this._rangeRequestReaders.indexOf(t);e>=0&&this._rangeRequestReaders.splice(e,1)}getFullReader(){return _t(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new Wy(this._manager,this._source),this._fullRequestReader}getRangeReader(t,e){const s=new Xy(this._manager,t,e);return s.onClosed=this._onRangeRequestReaderClosed.bind(this),this._rangeRequestReaders.push(s),s}cancelAllRequests(t){var e;(e=this._fullRequestReader)==null||e.cancel(t);for(const s of this._rangeRequestReaders.slice(0))s.cancel(t)}}class Wy{constructor(t,e){this._manager=t,this._url=e.url,this._fullRequestId=t.request({onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._headersCapability=Promise.withResolvers(),this._disableRange=e.disableRange||!1,this._contentLength=e.length,this._rangeChunkSize=e.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!1,this._isRangeSupported=!1,this._cachedChunks=[],this._requests=[],this._done=!1,this._storedError=void 0,this._filename=null,this.onProgress=null}_onHeadersReceived(){const t=this._fullRequestId,e=this._manager.getRequestXhr(t);this._manager._responseOrigin=ap(e.responseURL);const s=e.getAllResponseHeaders(),i=new Headers(s?s.trimStart().replace(/[^\S ]+$/,"").split(/[\r\n]+/).map(o=>{const[l,...h]=o.split(": ");return[l,h.join(": ")]}):[]),{allowRangeRequests:r,suggestedLength:a}=Ab({responseHeaders:i,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});r&&(this._isRangeSupported=!0),this._contentLength=a||this._contentLength,this._filename=yb(i),this._isRangeSupported&&this._manager.abortRequest(t),this._headersCapability.resolve()}_onDone(t){if(t&&(this._requests.length>0?this._requests.shift().resolve({value:t.chunk,done:!1}):this._cachedChunks.push(t.chunk)),this._done=!0,!(this._cachedChunks.length>0)){for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(t){this._storedError=cd(t,this._url),this._headersCapability.reject(this._storedError);for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}_onProgress(t){var e;(e=this.onProgress)==null||e.call(this,{loaded:t.loaded,total:t.lengthComputable?t.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersCapability.promise}async read(){if(await this._headersCapability.promise,this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0,this._headersCapability.reject(t);for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId),this._fullRequestReader=null}}class Xy{constructor(t,e,s){this._manager=t,this._url=t.url,this._requestId=t.request({begin:e,end:s,onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._requests=[],this._queuedChunk=null,this._done=!1,this._storedError=void 0,this.onProgress=null,this.onClosed=null}_onHeadersReceived(){var e;const t=ap((e=this._manager.getRequestXhr(this._requestId))==null?void 0:e.responseURL);t!==this._manager._responseOrigin&&(this._storedError=new Error(`Expected range response-origin "${t}" to match "${this._manager._responseOrigin}".`),this._onError(0))}_close(){var t;(t=this.onClosed)==null||t.call(this,this)}_onDone(t){const e=t.chunk;this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunk=e,this._done=!0;for(const s of this._requests)s.resolve({value:void 0,done:!0});this._requests.length=0,this._close()}_onError(t){this._storedError??(this._storedError=cd(t,this._url));for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}_onProgress(t){var e;this.isStreamingSupported||(e=this.onProgress)==null||e.call(this,{loaded:t.loaded})}get isStreamingSupported(){return!1}async read(){if(this._storedError)throw this._storedError;if(this._queuedChunk!==null){const e=this._queuedChunk;return this._queuedChunk=null,{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId),this._close()}}const qy=/^[a-z][a-z0-9\-+.]+:/i;function Yy(u){if(qy.test(u))return new URL(u);const t=process.getBuiltinModule("url");return new URL(t.pathToFileURL(u))}class Ky{constructor(t){this.source=t,this.url=Yy(t.url),_t(this.url.protocol==="file:","PDFNodeStream only supports file:// URLs."),this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var t;return((t=this._fullRequestReader)==null?void 0:t._loaded)??0}getFullReader(){return _t(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once."),this._fullRequestReader=new Qy(this),this._fullRequestReader}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const s=new Jy(this,t,e);return this._rangeRequestReaders.push(s),s}cancelAllRequests(t){var e;(e=this._fullRequestReader)==null||e.cancel(t);for(const s of this._rangeRequestReaders.slice(0))s.cancel(t)}}class Qy{constructor(t){this._url=t.url,this._done=!1,this._storedError=null,this.onProgress=null;const e=t.source;this._contentLength=e.length,this._loaded=0,this._filename=null,this._disableRange=e.disableRange||!1,this._rangeChunkSize=e.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!e.disableStream,this._isRangeSupported=!e.disableRange,this._readableStream=null,this._readCapability=Promise.withResolvers(),this._headersCapability=Promise.withResolvers();const s=process.getBuiltinModule("fs");s.promises.lstat(this._url).then(i=>{this._contentLength=i.size,this._setReadableStream(s.createReadStream(this._url)),this._headersCapability.resolve()},i=>{i.code==="ENOENT"&&(i=cd(0,this._url.href)),this._storedError=i,this._headersCapability.reject(i)})}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var s;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();return t===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=t.length,(s=this.onProgress)==null||s.call(this,{loaded:this._loaded,total:this._contentLength}),{value:new Uint8Array(t).buffer,done:!1})}cancel(t){if(!this._readableStream){this._error(t);return}this._readableStream.destroy(t)}_error(t){this._storedError=t,this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t,t.on("readable",()=>{this._readCapability.resolve()}),t.on("end",()=>{t.destroy(),this._done=!0,this._readCapability.resolve()}),t.on("error",e=>{this._error(e)}),!this._isStreamingSupported&&this._isRangeSupported&&this._error(new kn("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}class Jy{constructor(t,e,s){this._url=t.url,this._done=!1,this._storedError=null,this.onProgress=null,this._loaded=0,this._readableStream=null,this._readCapability=Promise.withResolvers();const i=t.source;this._isStreamingSupported=!i.disableStream;const r=process.getBuiltinModule("fs");this._setReadableStream(r.createReadStream(this._url,{start:e,end:s-1}))}get isStreamingSupported(){return this._isStreamingSupported}async read(){var s;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();return t===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=t.length,(s=this.onProgress)==null||s.call(this,{loaded:this._loaded}),{value:new Uint8Array(t).buffer,done:!1})}cancel(t){if(!this._readableStream){this._error(t);return}this._readableStream.destroy(t)}_error(t){this._storedError=t,this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t,t.on("readable",()=>{this._readCapability.resolve()}),t.on("end",()=>{t.destroy(),this._done=!0,this._readCapability.resolve()}),t.on("error",e=>{this._error(e)}),this._storedError&&this._readableStream.destroy(this._storedError)}}const ul=Symbol("INITIAL_DATA");var be,Hh,Qp;class Sb{constructor(){d(this,Hh);d(this,be,Object.create(null))}get(t,e=null){if(e){const i=b(this,Hh,Qp).call(this,t);return i.promise.then(()=>e(i.data)),null}const s=n(this,be)[t];if(!s||s.data===ul)throw new Error(`Requesting object that isn't resolved yet ${t}.`);return s.data}has(t){const e=n(this,be)[t];return!!e&&e.data!==ul}delete(t){const e=n(this,be)[t];return!e||e.data===ul?!1:(delete n(this,be)[t],!0)}resolve(t,e=null){const s=b(this,Hh,Qp).call(this,t);s.data=e,s.resolve()}clear(){var t;for(const e in n(this,be)){const{data:s}=n(this,be)[e];(t=s==null?void 0:s.bitmap)==null||t.close()}p(this,be,Object.create(null))}*[Symbol.iterator](){for(const t in n(this,be)){const{data:e}=n(this,be)[t];e!==ul&&(yield[t,e])}}}be=new WeakMap,Hh=new WeakSet,Qp=function(t){var e;return(e=n(this,be))[t]||(e[t]={...Promise.withResolvers(),data:ul})};const Zy=1e5,ym=30;var Sm,en,le,$h,zh,fr,ii,Gh,Uh,pr,ho,co,sn,uo,jh,fo,gr,Vh,Wh,po,mr,Xh,nn,go,Wu,Eb,Xu,Cb,qh,Jp,mo,Pd,Yh,Zp,qu,Tb,Yu,xb;const ut=class ut{constructor({textContentSource:t,container:e,viewport:s}){d(this,Wu);d(this,Xu);d(this,qh);d(this,en,Promise.withResolvers());d(this,le,null);d(this,$h,!1);d(this,zh,!!((Sm=globalThis.FontInspector)!=null&&Sm.enabled));d(this,fr,null);d(this,ii,null);d(this,Gh,0);d(this,Uh,0);d(this,pr,null);d(this,ho,null);d(this,co,0);d(this,sn,0);d(this,uo,Object.create(null));d(this,jh,[]);d(this,fo,null);d(this,gr,[]);d(this,Vh,new WeakMap);d(this,Wh,null);var l;if(t instanceof ReadableStream)p(this,fo,t);else if(typeof t=="object")p(this,fo,new ReadableStream({start(h){h.enqueue(t),h.close()}}));else throw new Error('No "textContentSource" parameter specified.');p(this,le,p(this,ho,e)),p(this,sn,s.scale*Ds.pixelRatio),p(this,co,s.rotation),p(this,ii,{div:null,properties:null,ctx:null});const{pageWidth:i,pageHeight:r,pageX:a,pageY:o}=s.rawDims;p(this,Wh,[1,0,0,-1,-a,o+r]),p(this,Uh,i),p(this,Gh,r),b(l=ut,qu,Tb).call(l),ra(e,s),n(this,en).promise.finally(()=>{n(ut,go).delete(this),p(this,ii,null),p(this,uo,null)}).catch(()=>{})}static get fontFamilyMap(){const{isWindows:t,isFirefox:e}=Wt.platform;return V(this,"fontFamilyMap",new Map([["sans-serif",`${t&&e?"Calibri, ":""}sans-serif`],["monospace",`${t&&e?"Lucida Console, ":""}monospace`]]))}render(){const t=()=>{n(this,pr).read().then(({value:e,done:s})=>{if(s){n(this,en).resolve();return}n(this,fr)??p(this,fr,e.lang),Object.assign(n(this,uo),e.styles),b(this,Wu,Eb).call(this,e.items),t()},n(this,en).reject)};return p(this,pr,n(this,fo).getReader()),n(ut,go).add(this),t(),n(this,en).promise}update({viewport:t,onBefore:e=null}){var r;const s=t.scale*Ds.pixelRatio,i=t.rotation;if(i!==n(this,co)&&(e==null||e(),p(this,co,i),ra(n(this,ho),{rotation:i})),s!==n(this,sn)){e==null||e(),p(this,sn,s);const a={div:null,properties:null,ctx:b(r=ut,mo,Pd).call(r,n(this,fr))};for(const o of n(this,gr))a.properties=n(this,Vh).get(o),a.div=o,b(this,qh,Jp).call(this,a)}}cancel(){var e;const t=new kn("TextLayer task cancelled.");(e=n(this,pr))==null||e.cancel(t).catch(()=>{}),p(this,pr,null),n(this,en).reject(t)}get textDivs(){return n(this,gr)}get textContentItemsStr(){return n(this,jh)}static cleanup(){if(!(n(this,go).size>0)){n(this,po).clear();for(const{canvas:t}of n(this,mr).values())t.remove();n(this,mr).clear()}}};en=new WeakMap,le=new WeakMap,$h=new WeakMap,zh=new WeakMap,fr=new WeakMap,ii=new WeakMap,Gh=new WeakMap,Uh=new WeakMap,pr=new WeakMap,ho=new WeakMap,co=new WeakMap,sn=new WeakMap,uo=new WeakMap,jh=new WeakMap,fo=new WeakMap,gr=new WeakMap,Vh=new WeakMap,Wh=new WeakMap,po=new WeakMap,mr=new WeakMap,Xh=new WeakMap,nn=new WeakMap,go=new WeakMap,Wu=new WeakSet,Eb=function(t){var i,r;if(n(this,$h))return;(r=n(this,ii)).ctx??(r.ctx=b(i=ut,mo,Pd).call(i,n(this,fr)));const e=n(this,gr),s=n(this,jh);for(const a of t){if(e.length>Zy){z("Ignoring additional textDivs for performance reasons."),p(this,$h,!0);return}if(a.str===void 0){if(a.type==="beginMarkedContentProps"||a.type==="beginMarkedContent"){const o=n(this,le);p(this,le,document.createElement("span")),n(this,le).classList.add("markedContent"),a.id&&n(this,le).setAttribute("id",`${a.id}`),o.append(n(this,le))}else a.type==="endMarkedContent"&&p(this,le,n(this,le).parentNode);continue}s.push(a.str),b(this,Xu,Cb).call(this,a)}},Xu=new WeakSet,Cb=function(t){var y;const e=document.createElement("span"),s={angle:0,canvasWidth:0,hasText:t.str!=="",hasEOL:t.hasEOL,fontSize:0};n(this,gr).push(e);const i=I.transform(n(this,Wh),t.transform);let r=Math.atan2(i[1],i[0]);const a=n(this,uo)[t.fontName];a.vertical&&(r+=Math.PI/2);let o=n(this,zh)&&a.fontSubstitution||a.fontFamily;o=ut.fontFamilyMap.get(o)||o;const l=Math.hypot(i[2],i[3]),h=l*b(y=ut,Yu,xb).call(y,o,a,n(this,fr));let c,f;r===0?(c=i[4],f=i[5]-h):(c=i[4]+h*Math.sin(r),f=i[5]-h*Math.cos(r));const g="calc(var(--total-scale-factor) *",m=e.style;n(this,le)===n(this,ho)?(m.left=`${(100*c/n(this,Uh)).toFixed(2)}%`,m.top=`${(100*f/n(this,Gh)).toFixed(2)}%`):(m.left=`${g}${c.toFixed(2)}px)`,m.top=`${g}${f.toFixed(2)}px)`),m.fontSize=`${g}${(n(ut,nn)*l).toFixed(2)}px)`,m.fontFamily=o,s.fontSize=l,e.setAttribute("role","presentation"),e.textContent=t.str,e.dir=t.dir,n(this,zh)&&(e.dataset.fontName=a.fontSubstitutionLoadedName||t.fontName),r!==0&&(s.angle=r*(180/Math.PI));let A=!1;if(t.str.length>1)A=!0;else if(t.str!==" "&&t.transform[0]!==t.transform[3]){const v=Math.abs(t.transform[0]),w=Math.abs(t.transform[3]);v!==w&&Math.max(v,w)/Math.min(v,w)>1.5&&(A=!0)}if(A&&(s.canvasWidth=a.vertical?t.height:t.width),n(this,Vh).set(e,s),n(this,ii).div=e,n(this,ii).properties=s,b(this,qh,Jp).call(this,n(this,ii)),s.hasText&&n(this,le).append(e),s.hasEOL){const v=document.createElement("br");v.setAttribute("role","presentation"),n(this,le).append(v)}},qh=new WeakSet,Jp=function(t){var o;const{div:e,properties:s,ctx:i}=t,{style:r}=e;let a="";if(n(ut,nn)>1&&(a=`scale(${1/n(ut,nn)})`),s.canvasWidth!==0&&s.hasText){const{fontFamily:l}=r,{canvasWidth:h,fontSize:c}=s;b(o=ut,Yh,Zp).call(o,i,c*n(this,sn),l);const{width:f}=i.measureText(e.textContent);f>0&&(a=`scaleX(${h*n(this,sn)/f}) ${a}`)}s.angle!==0&&(a=`rotate(${s.angle}deg) ${a}`),a.length>0&&(r.transform=a)},mo=new WeakSet,Pd=function(t=null){let e=n(this,mr).get(t||(t=""));if(!e){const s=document.createElement("canvas");s.className="hiddenCanvasElement",s.lang=t,document.body.append(s),e=s.getContext("2d",{alpha:!1,willReadFrequently:!0}),n(this,mr).set(t,e),n(this,Xh).set(e,{size:0,family:""})}return e},Yh=new WeakSet,Zp=function(t,e,s){const i=n(this,Xh).get(t);e===i.size&&s===i.family||(t.font=`${e}px ${s}`,i.size=e,i.family=s)},qu=new WeakSet,Tb=function(){if(n(this,nn)!==null)return;const t=document.createElement("div");t.style.opacity=0,t.style.lineHeight=1,t.style.fontSize="1px",t.style.position="absolute",t.textContent="X",document.body.append(t),p(this,nn,t.getBoundingClientRect().height),t.remove()},Yu=new WeakSet,xb=function(t,e,s){const i=n(this,po).get(t);if(i)return i;const r=b(this,mo,Pd).call(this,s);r.canvas.width=r.canvas.height=ym,b(this,Yh,Zp).call(this,r,ym,t);const a=r.measureText(""),o=a.fontBoundingBoxAscent,l=Math.abs(a.fontBoundingBoxDescent);r.canvas.width=r.canvas.height=0;let h=.8;return o?h=o/(o+l):(Wt.platform.isFirefox&&z("Enable the `dom.textMetrics.fontBoundingBox.enabled` preference in `about:config` to improve TextLayer rendering."),e.ascent?h=e.ascent:e.descent&&(h=1+e.descent)),n(this,po).set(t,h),h},d(ut,mo),d(ut,Yh),d(ut,qu),d(ut,Yu),d(ut,po,new Map),d(ut,mr,new Map),d(ut,Xh,new WeakMap),d(ut,nn,null),d(ut,go,new Set);let Nl=ut;class Ol{static textContent(t){const e=[],s={items:e,styles:Object.create(null)};function i(r){var l;if(!r)return;let a=null;const o=r.name;if(o==="#text")a=r.value;else if(Ol.shouldBuildText(o))(l=r==null?void 0:r.attributes)!=null&&l.textContent?a=r.attributes.textContent:r.value&&(a=r.value);else return;if(a!==null&&e.push({str:a}),!!r.children)for(const h of r.children)i(h)}return i(t),s}static shouldBuildText(t){return!(t==="textarea"||t==="input"||t==="option"||t==="select")}}const tw=100;function ew(u={}){typeof u=="string"||u instanceof URL?u={url:u}:(u instanceof ArrayBuffer||ArrayBuffer.isView(u))&&(u={data:u});const t=new tg,{docId:e}=t,s=u.url?ly(u.url):null,i=u.data?hy(u.data):null,r=u.httpHeaders||null,a=u.withCredentials===!0,o=u.password??null,l=u.range instanceof kb?u.range:null,h=Number.isInteger(u.rangeChunkSize)&&u.rangeChunkSize>0?u.rangeChunkSize:2**16;let c=u.worker instanceof Bl?u.worker:null;const f=u.verbosity,g=typeof u.docBaseUrl=="string"&&!np(u.docBaseUrl)?u.docBaseUrl:null,m=pd(u.cMapUrl),A=u.cMapPacked!==!1,y=u.CMapReaderFactory||(ie?by:om),v=pd(u.iccUrl),w=pd(u.standardFontDataUrl),S=u.StandardFontDataFactory||(ie?Ay:lm),_=pd(u.wasmUrl),E=u.WasmFactory||(ie?yy:hm),C=u.stopAtErrors!==!0,T=Number.isInteger(u.maxImageSize)&&u.maxImageSize>-1?u.maxImageSize:-1,x=u.isEvalSupported!==!1,P=typeof u.isOffscreenCanvasSupported=="boolean"?u.isOffscreenCanvasSupported:!ie,M=typeof u.isImageDecoderSupported=="boolean"?u.isImageDecoderSupported:!ie&&(Wt.platform.isFirefox||!globalThis.chrome),D=Number.isInteger(u.canvasMaxAreaInBytes)?u.canvasMaxAreaInBytes:-1,R=typeof u.disableFontFace=="boolean"?u.disableFontFace:ie,H=u.fontExtraProperties===!0,U=u.enableXfa===!0,W=u.ownerDocument||globalThis.document,Y=u.disableRange===!0,B=u.disableStream===!0,N=u.disableAutoFetch===!0,Pt=u.pdfBug===!0,At=u.CanvasFactory||(ie?my:fy),Re=u.FilterFactory||(ie?gy:py),as=u.enableHWA===!0,it=u.useWasm!==!1,Z=l?l.length:u.length??NaN,Ls=typeof u.useSystemFonts=="boolean"?u.useSystemFonts:!ie&&!R,Ve=typeof u.useWorkerFetch=="boolean"?u.useWorkerFetch:!!(y===om&&S===lm&&E===hm&&m&&w&&_&&gl(m,document.baseURI)&&gl(w,document.baseURI)&&gl(_,document.baseURI)),We=null;$A(f);const pt={canvasFactory:new At({ownerDocument:W,enableHWA:as}),filterFactory:new Re({docId:e,ownerDocument:W}),cMapReaderFactory:Ve?null:new y({baseUrl:m,isCompressed:A}),standardFontDataFactory:Ve?null:new S({baseUrl:w}),wasmFactory:Ve?null:new E({baseUrl:_})};c||(c=Bl.create({verbosity:f,port:Ti.workerPort}),t._worker=c);const lp={docId:e,apiVersion:"5.4.149",data:i,password:o,disableAutoFetch:N,rangeChunkSize:h,length:Z,docBaseUrl:g,enableXfa:U,evaluatorOptions:{maxImageSize:T,disableFontFace:R,ignoreErrors:C,isEvalSupported:x,isOffscreenCanvasSupported:P,isImageDecoderSupported:M,canvasMaxAreaInBytes:D,fontExtraProperties:H,useSystemFonts:Ls,useWasm:it,useWorkerFetch:Ve,cMapUrl:m,iccUrl:v,standardFontDataUrl:w,wasmUrl:_}},hp={ownerDocument:W,pdfBug:Pt,styleElement:We,loadingParams:{disableAutoFetch:N,enableXfa:U}};return c.promise.then(function(){if(t.destroyed)throw new Error("Loading aborted");if(c.destroyed)throw new Error("Worker was destroyed");const cp=c.messageHandler.sendWithPromise("GetDocRequest",lp,i?[i.buffer]:null);let Mn;if(l)Mn=new Ny(l,{disableRange:Y,disableStream:B});else if(!i){if(!s)throw new Error("getDocument - no `url` parameter provided.");const Rn=gl(s)?$y:ie?Ky:Vy;Mn=new Rn({url:s,length:Z,httpHeaders:r,withCredentials:a,rangeChunkSize:h,disableRange:Y,disableStream:B})}return cp.then(Rn=>{if(t.destroyed)throw new Error("Loading aborted");if(c.destroyed)throw new Error("Worker was destroyed");const em=new vl(e,Rn,c.port),IA=new nw(em,t,Mn,hp,pt,as);t._transport=IA,em.send("Ready",null)})}).catch(t._capability.reject),t}var Ku;const Qu=class Qu{constructor(){k(this,"_capability",Promise.withResolvers());k(this,"_transport",null);k(this,"_worker",null);k(this,"docId",`d${St(Qu,Ku)._++}`);k(this,"destroyed",!1);k(this,"onPassword",null);k(this,"onProgress",null)}get promise(){return this._capability.promise}async destroy(){var t,e,s,i;this.destroyed=!0;try{(t=this._worker)!=null&&t.port&&(this._worker._pendingDestroy=!0),await((e=this._transport)==null?void 0:e.destroy())}catch(r){throw(s=this._worker)!=null&&s.port&&delete this._worker._pendingDestroy,r}this._transport=null,(i=this._worker)==null||i.destroy(),this._worker=null}async getData(){return this._transport.getData()}};Ku=new WeakMap,d(Qu,Ku,0);let tg=Qu;var br,Kh,Qh,Jh,Zh;class kb{constructor(t,e,s=!1,i=null){d(this,br,Promise.withResolvers());d(this,Kh,[]);d(this,Qh,[]);d(this,Jh,[]);d(this,Zh,[]);this.length=t,this.initialData=e,this.progressiveDone=s,this.contentDispositionFilename=i}addRangeListener(t){n(this,Zh).push(t)}addProgressListener(t){n(this,Jh).push(t)}addProgressiveReadListener(t){n(this,Qh).push(t)}addProgressiveDoneListener(t){n(this,Kh).push(t)}onDataRange(t,e){for(const s of n(this,Zh))s(t,e)}onDataProgress(t,e){n(this,br).promise.then(()=>{for(const s of n(this,Jh))s(t,e)})}onDataProgressiveRead(t){n(this,br).promise.then(()=>{for(const e of n(this,Qh))e(t)})}onDataProgressiveDone(){n(this,br).promise.then(()=>{for(const t of n(this,Kh))t()})}transportReady(){n(this,br).resolve()}requestDataRange(t,e){st("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}br=new WeakMap,Kh=new WeakMap,Qh=new WeakMap,Jh=new WeakMap,Zh=new WeakMap;class sw{constructor(t,e){this._pdfInfo=t,this._transport=e}get annotationStorage(){return this._transport.annotationStorage}get canvasFactory(){return this._transport.canvasFactory}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return V(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(t){return this._transport.getPage(t)}getPageIndex(t){return this._transport.getPageIndex(t)}getDestinations(){return this._transport.getDestinations()}getDestination(t){return this._transport.getDestination(t)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getAnnotationsByType(t,e){return this._transport.getAnnotationsByType(t,e)}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:t="display"}={}){const{renderingIntent:e}=this._transport.getRenderingIntent(t);return this._transport.getOptionalContentConfig(e)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(t=!1){return this._transport.startCleanup(t||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}cachedPageNumber(t){return this._transport.cachedPageNumber(t)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}var ni,Ar,Tl;class iw{constructor(t,e,s,i=!1){d(this,Ar);d(this,ni,!1);this._pageIndex=t,this._pageInfo=e,this._transport=s,this._stats=i?new nm:null,this._pdfBug=i,this.commonObjs=s.commonObjs,this.objs=new Sb,this._intentStates=new Map,this.destroyed=!1,this.recordedGroups=null}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:t,rotation:e=this.rotate,offsetX:s=0,offsetY:i=0,dontFlip:r=!1}={}){return new ld({viewBox:this.view,userUnit:this.userUnit,scale:t,rotation:e,offsetX:s,offsetY:i,dontFlip:r})}getAnnotations({intent:t="display"}={}){const{renderingIntent:e}=this._transport.getRenderingIntent(t);return this._transport.getAnnotations(this._pageIndex,e)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return V(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){var t;return((t=this._transport._htmlForXfa)==null?void 0:t.children[this._pageIndex])||null}render({canvasContext:t,canvas:e=t.canvas,viewport:s,intent:i="display",annotationMode:r=ki.ENABLE,transform:a=null,background:o=null,optionalContentConfigPromise:l=null,annotationCanvasMap:h=null,pageColors:c=null,printAnnotationStorage:f=null,isEditing:g=!1,recordOperations:m=!1,filteredOperationIndexes:A=null}){var P,M,D;(P=this._stats)==null||P.time("Overall");const y=this._transport.getRenderingIntent(i,r,f,g),{renderingIntent:v,cacheKey:w}=y;p(this,ni,!1),l||(l=this._transport.getOptionalContentConfig(v));let S=this._intentStates.get(w);S||(S=Object.create(null),this._intentStates.set(w,S)),S.streamReaderCancelTimeout&&(clearTimeout(S.streamReaderCancelTimeout),S.streamReaderCancelTimeout=null);const _=!!(v&Pe.PRINT);S.displayReadyCapability||(S.displayReadyCapability=Promise.withResolvers(),S.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(M=this._stats)==null||M.time("Page Request"),this._pumpOperatorList(y));const E=!this.recordedGroups&&(m||this._pdfBug&&((D=globalThis.StepperManager)==null?void 0:D.enabled)),C=R=>{var H,U,W;if(S.renderTasks.delete(T),E){const Y=(H=T.gfx)==null?void 0:H.dependencyTracker.take();Y?((U=T.stepper)==null||U.setOperatorGroups(Y),m&&(this.recordedGroups=Y)):m&&(this.recordedGroups=[])}_&&p(this,ni,!0),b(this,Ar,Tl).call(this),R?(T.capability.reject(R),this._abortOperatorList({intentState:S,reason:R instanceof Error?R:new Error(R)})):T.capability.resolve(),this._stats&&(this._stats.timeEnd("Rendering"),this._stats.timeEnd("Overall"),(W=globalThis.Stats)!=null&&W.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))},T=new eg({callback:C,params:{canvas:e,canvasContext:t,dependencyTracker:E?new wy(e):null,viewport:s,transform:a,background:o},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:h,operatorList:S.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!_,pdfBug:this._pdfBug,pageColors:c,enableHWA:this._transport.enableHWA,filteredOperationIndexes:A});(S.renderTasks||(S.renderTasks=new Set)).add(T);const x=T.task;return Promise.all([S.displayReadyCapability.promise,l]).then(([R,H])=>{var U;if(this.destroyed){C();return}if((U=this._stats)==null||U.time("Rendering"),!(H.renderingIntent&v))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");T.initializeGraphics({transparency:R,optionalContentConfig:H}),T.operatorListChanged()}).catch(C),x}getOperatorList({intent:t="display",annotationMode:e=ki.ENABLE,printAnnotationStorage:s=null,isEditing:i=!1}={}){var h;function r(){o.operatorList.lastChunk&&(o.opListReadCapability.resolve(o.operatorList),o.renderTasks.delete(l))}const a=this._transport.getRenderingIntent(t,e,s,i,!0);let o=this._intentStates.get(a.cacheKey);o||(o=Object.create(null),this._intentStates.set(a.cacheKey,o));let l;return o.opListReadCapability||(l=Object.create(null),l.operatorListChanged=r,o.opListReadCapability=Promise.withResolvers(),(o.renderTasks||(o.renderTasks=new Set)).add(l),o.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(h=this._stats)==null||h.time("Page Request"),this._pumpOperatorList(a)),o.opListReadCapability.promise}streamTextContent({includeMarkedContent:t=!1,disableNormalization:e=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:t===!0,disableNormalization:e===!0},{highWaterMark:100,size(i){return i.items.length}})}getTextContent(t={}){if(this._transport._htmlForXfa)return this.getXfa().then(s=>Ol.textContent(s));const e=this.streamTextContent(t);return new Promise(function(s,i){function r(){a.read().then(function({value:l,done:h}){if(h){s(o);return}o.lang??(o.lang=l.lang),Object.assign(o.styles,l.styles),o.items.push(...l.items),r()},i)}const a=e.getReader(),o={items:[],styles:Object.create(null),lang:null};r()})}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const t=[];for(const e of this._intentStates.values())if(this._abortOperatorList({intentState:e,reason:new Error("Page was destroyed."),force:!0}),!e.opListReadCapability)for(const s of e.renderTasks)t.push(s.completed),s.cancel();return this.objs.clear(),p(this,ni,!1),Promise.all(t)}cleanup(t=!1){p(this,ni,!0);const e=b(this,Ar,Tl).call(this);return t&&e&&this._stats&&(this._stats=new nm),e}_startRenderPage(t,e){var i,r;const s=this._intentStates.get(e);s&&((i=this._stats)==null||i.timeEnd("Page Request"),(r=s.displayReadyCapability)==null||r.resolve(t))}_renderPageChunk(t,e){for(let s=0,i=t.length;s{l.read().then(({value:f,done:g})=>{if(g){h.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(f,h),c())},f=>{if(h.streamReader=null,!this._transport.destroyed){if(h.operatorList){h.operatorList.lastChunk=!0;for(const g of h.renderTasks)g.operatorListChanged();b(this,Ar,Tl).call(this)}if(h.displayReadyCapability)h.displayReadyCapability.reject(f);else if(h.opListReadCapability)h.opListReadCapability.reject(f);else throw f}})};c()}_abortOperatorList({intentState:t,reason:e,force:s=!1}){if(t.streamReader){if(t.streamReaderCancelTimeout&&(clearTimeout(t.streamReaderCancelTimeout),t.streamReaderCancelTimeout=null),!s){if(t.renderTasks.size>0)return;if(e instanceof $g){let i=tw;e.extraDelay>0&&e.extraDelay<1e3&&(i+=e.extraDelay),t.streamReaderCancelTimeout=setTimeout(()=>{t.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:t,reason:e,force:!0})},i);return}}if(t.streamReader.cancel(new kn(e.message)).catch(()=>{}),t.streamReader=null,!this._transport.destroyed){for(const[i,r]of this._intentStates)if(r===t){this._intentStates.delete(i);break}this.cleanup()}}}get stats(){return this._stats}}ni=new WeakMap,Ar=new WeakSet,Tl=function(){if(!n(this,ni)||this.destroyed)return!1;for(const{renderTasks:t,operatorList:e}of this._intentStates.values())if(t.size>0||!e.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),p(this,ni,!1),!0};var rn,Je,ri,yr,Ju,wr,vr,bo,Md,Zu,Pb,tf,Mb,_r,xl,Ao,Rd;const at=class at{constructor({name:t=null,port:e=null,verbosity:s=zA()}={}){d(this,bo);d(this,Zu);d(this,tf);d(this,_r);d(this,rn,Promise.withResolvers());d(this,Je,null);d(this,ri,null);d(this,yr,null);if(this.name=t,this.destroyed=!1,this.verbosity=s,e){if(n(at,vr).has(e))throw new Error("Cannot use more than one PDFWorker per port.");n(at,vr).set(e,this),b(this,Zu,Pb).call(this,e)}else b(this,tf,Mb).call(this)}get promise(){return n(this,rn).promise}get port(){return n(this,ri)}get messageHandler(){return n(this,Je)}destroy(){var t,e;this.destroyed=!0,(t=n(this,yr))==null||t.terminate(),p(this,yr,null),n(at,vr).delete(n(this,ri)),p(this,ri,null),(e=n(this,Je))==null||e.destroy(),p(this,Je,null)}static create(t){const e=n(this,vr).get(t==null?void 0:t.port);if(e){if(e._pendingDestroy)throw new Error("PDFWorker.create - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return e}return new at(t)}static get workerSrc(){if(Ti.workerSrc)return Ti.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _setupFakeWorkerGlobal(){return V(this,"_setupFakeWorkerGlobal",(async()=>n(this,Ao,Rd)?n(this,Ao,Rd):(await OA(()=>import(this.workerSrc),[])).WorkerMessageHandler)())}};rn=new WeakMap,Je=new WeakMap,ri=new WeakMap,yr=new WeakMap,Ju=new WeakMap,wr=new WeakMap,vr=new WeakMap,bo=new WeakSet,Md=function(){n(this,rn).resolve(),n(this,Je).send("configure",{verbosity:this.verbosity})},Zu=new WeakSet,Pb=function(t){p(this,ri,t),p(this,Je,new vl("main","worker",t)),n(this,Je).on("ready",()=>{}),b(this,bo,Md).call(this)},tf=new WeakSet,Mb=function(){if(n(at,wr)||n(at,Ao,Rd)){b(this,_r,xl).call(this);return}let{workerSrc:t}=at;try{at._isSameOrigin(window.location,t)||(t=at._createCDNWrapper(new URL(t,window.location).href));const e=new Worker(t,{type:"module"}),s=new vl("main","worker",e),i=()=>{r.abort(),s.destroy(),e.terminate(),this.destroyed?n(this,rn).reject(new Error("Worker was destroyed")):b(this,_r,xl).call(this)},r=new AbortController;e.addEventListener("error",()=>{n(this,yr)||i()},{signal:r.signal}),s.on("test",o=>{if(r.abort(),this.destroyed||!o){i();return}p(this,Je,s),p(this,ri,e),p(this,yr,e),b(this,bo,Md).call(this)}),s.on("ready",o=>{if(r.abort(),this.destroyed){i();return}try{a()}catch{b(this,_r,xl).call(this)}});const a=()=>{const o=new Uint8Array;s.send("test",o,[o.buffer])};a();return}catch{ip("The worker has been disabled.")}b(this,_r,xl).call(this)},_r=new WeakSet,xl=function(){n(at,wr)||(z("Setting up fake worker."),p(at,wr,!0)),at._setupFakeWorkerGlobal.then(t=>{if(this.destroyed){n(this,rn).reject(new Error("Worker was destroyed"));return}const e=new uy;p(this,ri,e);const s=`fake${St(at,Ju)._++}`,i=new vl(s+"_worker",s,e);t.setup(i,e),p(this,Je,new vl(s,s+"_worker",e)),b(this,bo,Md).call(this)}).catch(t=>{n(this,rn).reject(new Error(`Setting up fake worker failed: "${t.message}".`))})},Ao=new WeakSet,Rd=function(){var t;try{return((t=globalThis.pdfjsWorker)==null?void 0:t.WorkerMessageHandler)||null}catch{return null}},d(at,Ao),d(at,Ju,0),d(at,wr,!1),d(at,vr,new WeakMap),ie&&(p(at,wr,!0),Ti.workerSrc||(Ti.workerSrc="./pdf.worker.mjs")),at._isSameOrigin=(t,e)=>{const s=URL.parse(t);if(!(s!=null&&s.origin)||s.origin==="null")return!1;const i=new URL(e,s);return s.origin===i.origin},at._createCDNWrapper=t=>{const e=`await import("${t}");`;return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))},at.fromPort=t=>{if(ZA("`PDFWorker.fromPort` - please use `PDFWorker.create` instead."),!(t!=null&&t.port))throw new Error("PDFWorker.fromPort - invalid method signature.");return at.create(t)};let Bl=at;var ai,vs,yo,wo,oi,Sr,kl;class nw{constructor(t,e,s,i,r,a){d(this,Sr);d(this,ai,new Map);d(this,vs,new Map);d(this,yo,new Map);d(this,wo,new Map);d(this,oi,null);this.messageHandler=t,this.loadingTask=e,this.commonObjs=new Sb,this.fontLoader=new ay({ownerDocument:i.ownerDocument,styleElement:i.styleElement}),this.loadingParams=i.loadingParams,this._params=i,this.canvasFactory=r.canvasFactory,this.filterFactory=r.filterFactory,this.cMapReaderFactory=r.cMapReaderFactory,this.standardFontDataFactory=r.standardFontDataFactory,this.wasmFactory=r.wasmFactory,this.destroyed=!1,this.destroyCapability=null,this._networkStream=s,this._fullReader=null,this._lastProgress=null,this.downloadInfoCapability=Promise.withResolvers(),this.enableHWA=a,this.setupMessageHandler()}get annotationStorage(){return V(this,"annotationStorage",new Gg)}getRenderingIntent(t,e=ki.ENABLE,s=null,i=!1,r=!1){let a=Pe.DISPLAY,o=zp;switch(t){case"any":a=Pe.ANY;break;case"display":break;case"print":a=Pe.PRINT;break;default:z(`getRenderingIntent - invalid intent: ${t}`)}const l=a&Pe.PRINT&&s instanceof ob?s:this.annotationStorage;switch(e){case ki.DISABLE:a+=Pe.ANNOTATIONS_DISABLE;break;case ki.ENABLE:break;case ki.ENABLE_FORMS:a+=Pe.ANNOTATIONS_FORMS;break;case ki.ENABLE_STORAGE:a+=Pe.ANNOTATIONS_STORAGE,o=l.serializable;break;default:z(`getRenderingIntent - invalid annotationMode: ${e}`)}i&&(a+=Pe.IS_EDITING),r&&(a+=Pe.OPLIST);const{ids:h,hash:c}=l.modifiedIds,f=[a,o.hash,c];return{renderingIntent:a,cacheKey:f.join("_"),annotationStorageSerializable:o,modifiedIds:h}}destroy(){var s;if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),(s=n(this,oi))==null||s.reject(new Error("Worker was destroyed during onPassword callback"));const t=[];for(const i of n(this,vs).values())t.push(i._destroy());n(this,vs).clear(),n(this,yo).clear(),n(this,wo).clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const e=this.messageHandler.sendWithPromise("Terminate",null);return t.push(e),Promise.all(t).then(()=>{var i,r;this.commonObjs.clear(),this.fontLoader.clear(),n(this,ai).clear(),this.filterFactory.destroy(),Nl.cleanup(),(i=this._networkStream)==null||i.cancelAllRequests(new kn("Worker was terminated.")),(r=this.messageHandler)==null||r.destroy(),this.messageHandler=null,this.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:t,loadingTask:e}=this;t.on("GetReader",(s,i)=>{_t(this._networkStream,"GetReader - no `IPDFStream` instance available."),this._fullReader=this._networkStream.getFullReader(),this._fullReader.onProgress=r=>{this._lastProgress={loaded:r.loaded,total:r.total}},i.onPull=()=>{this._fullReader.read().then(function({value:r,done:a}){if(a){i.close();return}_t(r instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),i.enqueue(new Uint8Array(r),1,[r])}).catch(r=>{i.error(r)})},i.onCancel=r=>{this._fullReader.cancel(r),i.ready.catch(a=>{if(!this.destroyed)throw a})}}),t.on("ReaderHeadersReady",async s=>{var o;await this._fullReader.headersReady;const{isStreamingSupported:i,isRangeSupported:r,contentLength:a}=this._fullReader;return(!i||!r)&&(this._lastProgress&&((o=e.onProgress)==null||o.call(e,this._lastProgress)),this._fullReader.onProgress=l=>{var h;(h=e.onProgress)==null||h.call(e,{loaded:l.loaded,total:l.total})}),{isStreamingSupported:i,isRangeSupported:r,contentLength:a}}),t.on("GetRangeReader",(s,i)=>{_t(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const r=this._networkStream.getRangeReader(s.begin,s.end);if(!r){i.close();return}i.onPull=()=>{r.read().then(function({value:a,done:o}){if(o){i.close();return}_t(a instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),i.enqueue(new Uint8Array(a),1,[a])}).catch(a=>{i.error(a)})},i.onCancel=a=>{r.cancel(a),i.ready.catch(o=>{if(!this.destroyed)throw o})}}),t.on("GetDoc",({pdfInfo:s})=>{this._numPages=s.numPages,this._htmlForXfa=s.htmlForXfa,delete s.htmlForXfa,e._capability.resolve(new sw(s,this))}),t.on("DocException",s=>{e._capability.reject(re(s))}),t.on("PasswordRequest",s=>{p(this,oi,Promise.withResolvers());try{if(!e.onPassword)throw re(s);const i=r=>{r instanceof Error?n(this,oi).reject(r):n(this,oi).resolve({password:r})};e.onPassword(i,s.code)}catch(i){n(this,oi).reject(i)}return n(this,oi).promise}),t.on("DataLoaded",s=>{var i;(i=e.onProgress)==null||i.call(e,{loaded:s.length,total:s.length}),this.downloadInfoCapability.resolve(s)}),t.on("StartRenderPage",s=>{if(this.destroyed)return;n(this,vs).get(s.pageIndex)._startRenderPage(s.transparency,s.cacheKey)}),t.on("commonobj",([s,i,r])=>{var a;if(this.destroyed||this.commonObjs.has(s))return null;switch(i){case"Font":if("error"in r){const c=r.error;z(`Error during font loading: ${c}`),this.commonObjs.resolve(s,c);break}const o=this._params.pdfBug&&((a=globalThis.FontInspector)!=null&&a.enabled)?(c,f)=>globalThis.FontInspector.fontAdded(c,f):null,l=new oy(r,o);this.fontLoader.bind(l).catch(()=>t.sendWithPromise("FontFallback",{id:s})).finally(()=>{!l.fontExtraProperties&&l.data&&(l.data=null),this.commonObjs.resolve(s,l)});break;case"CopyLocalImage":const{imageRef:h}=r;_t(h,"The imageRef must be defined.");for(const c of n(this,vs).values())for(const[,f]of c.objs)if((f==null?void 0:f.ref)===h)return f.dataLen?(this.commonObjs.resolve(s,structuredClone(f)),f.dataLen):null;break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(s,r);break;default:throw new Error(`Got unknown common object type ${i}`)}return null}),t.on("obj",([s,i,r,a])=>{var l;if(this.destroyed)return;const o=n(this,vs).get(i);if(!o.objs.has(s)){if(o._intentStates.size===0){(l=a==null?void 0:a.bitmap)==null||l.close();return}switch(r){case"Image":case"Pattern":o.objs.resolve(s,a);break;default:throw new Error(`Got unknown object type ${r}`)}}}),t.on("DocProgress",s=>{var i;this.destroyed||(i=e.onProgress)==null||i.call(e,{loaded:s.loaded,total:s.total})}),t.on("FetchBinaryData",async s=>{if(this.destroyed)throw new Error("Worker was destroyed.");const i=this[s.type];if(!i)throw new Error(`${s.type} not initialized, see the \`useWorkerFetch\` parameter.`);return i.fetch(s)})}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){var s;this.annotationStorage.size<=0&&z("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:t,transfer:e}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:t,filename:((s=this._fullReader)==null?void 0:s.filename)??null},e).finally(()=>{this.annotationStorage.resetModified()})}getPage(t){if(!Number.isInteger(t)||t<=0||t>this._numPages)return Promise.reject(new Error("Invalid page request."));const e=t-1,s=n(this,yo).get(e);if(s)return s;const i=this.messageHandler.sendWithPromise("GetPage",{pageIndex:e}).then(r=>{if(this.destroyed)throw new Error("Transport destroyed");r.refStr&&n(this,wo).set(r.refStr,t);const a=new iw(e,r,this,this._params.pdfBug);return n(this,vs).set(e,a),a});return n(this,yo).set(e,i),i}getPageIndex(t){return Gp(t)?this.messageHandler.sendWithPromise("GetPageIndex",{num:t.num,gen:t.gen}):Promise.reject(new Error("Invalid pageIndex request."))}getAnnotations(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:t,intent:e})}getFieldObjects(){return b(this,Sr,kl).call(this,"GetFieldObjects")}hasJSActions(){return b(this,Sr,kl).call(this,"HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(t){return typeof t!="string"?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:t})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getAnnotationsByType(t,e){return this.messageHandler.sendWithPromise("GetAnnotationsByType",{types:t,pageIndexesToSkip:e})}getDocJSActions(){return b(this,Sr,kl).call(this,"GetDocJSActions")}getPageJSActions(t){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:t})}getStructTree(t){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:t})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(t){return b(this,Sr,kl).call(this,"GetOptionalContentConfig").then(e=>new Fy(e,t))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const t="GetMetadata",e=n(this,ai).get(t);if(e)return e;const s=this.messageHandler.sendWithPromise(t,null).then(i=>{var r,a;return{info:i[0],metadata:i[1]?new Ly(i[1]):null,contentDispositionFilename:((r=this._fullReader)==null?void 0:r.filename)??null,contentLength:((a=this._fullReader)==null?void 0:a.contentLength)??null}});return n(this,ai).set(t,s),s}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(t=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const e of n(this,vs).values())if(!e.cleanup())throw new Error(`startCleanup: Page ${e.pageNumber} is currently rendering.`);this.commonObjs.clear(),t||this.fontLoader.clear(),n(this,ai).clear(),this.filterFactory.destroy(!0),Nl.cleanup()}}cachedPageNumber(t){if(!Gp(t))return null;const e=t.gen===0?`${t.num}R`:`${t.num}R${t.gen}`;return n(this,wo).get(e)??null}}ai=new WeakMap,vs=new WeakMap,yo=new WeakMap,wo=new WeakMap,oi=new WeakMap,Sr=new WeakSet,kl=function(t,e=null){const s=n(this,ai).get(t);if(s)return s;const i=this.messageHandler.sendWithPromise(t,e);return n(this,ai).set(t,i),i};var an;class rw{constructor(t){d(this,an,null);k(this,"onContinue",null);k(this,"onError",null);p(this,an,t)}get promise(){return n(this,an).capability.promise}cancel(t=0){n(this,an).cancel(null,t)}get separateAnnots(){const{separateAnnots:t}=n(this,an).operatorList;if(!t)return!1;const{annotationCanvasMap:e}=n(this,an);return t.form||t.canvas&&(e==null?void 0:e.size)>0}}an=new WeakMap;var on,Er;const Nn=class Nn{constructor({callback:t,params:e,objs:s,commonObjs:i,annotationCanvasMap:r,operatorList:a,pageIndex:o,canvasFactory:l,filterFactory:h,useRequestAnimationFrame:c=!1,pdfBug:f=!1,pageColors:g=null,enableHWA:m=!1,filteredOperationIndexes:A=null}){d(this,on,null);this.callback=t,this.params=e,this.objs=s,this.commonObjs=i,this.annotationCanvasMap=r,this.operatorListIdx=null,this.operatorList=a,this._pageIndex=o,this.canvasFactory=l,this.filterFactory=h,this._pdfBug=f,this.pageColors=g,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=c===!0&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new rw(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=e.canvas,this._canvasContext=e.canvas?null:e.canvasContext,this._enableHWA=m,this._dependencyTracker=e.dependencyTracker,this._filteredOperationIndexes=A}get completed(){return this.capability.promise.catch(function(){})}initializeGraphics({transparency:t=!1,optionalContentConfig:e}){var l,h;if(this.cancelled)return;if(this._canvas){if(n(Nn,Er).has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");n(Nn,Er).add(this._canvas)}this._pdfBug&&((l=globalThis.StepperManager)!=null&&l.enabled)&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());const{viewport:s,transform:i,background:r,dependencyTracker:a}=this.params,o=this._canvasContext||this._canvas.getContext("2d",{alpha:!1,willReadFrequently:!this._enableHWA});this.gfx=new _a(o,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:e},this.annotationCanvasMap,this.pageColors,a),this.gfx.beginDrawing({transform:i,viewport:s,transparency:t,background:r}),this.operatorListIdx=0,this.graphicsReady=!0,(h=this.graphicsReadyCallback)==null||h.call(this)}cancel(t=null,e=0){var s,i,r;this.running=!1,this.cancelled=!0,(s=this.gfx)==null||s.endDrawing(),n(this,on)&&(window.cancelAnimationFrame(n(this,on)),p(this,on,null)),n(Nn,Er).delete(this._canvas),t||(t=new $g(`Rendering cancelled, page ${this._pageIndex+1}`,e)),this.callback(t),(r=(i=this.task).onError)==null||r.call(i,t)}operatorListChanged(){var t;if(!this.graphicsReady){this.graphicsReadyCallback||(this.graphicsReadyCallback=this._continueBound);return}(t=this.stepper)==null||t.updateOperatorList(this.operatorList),!this.running&&this._continue()}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?p(this,on,window.requestAnimationFrame(()=>{p(this,on,null),this._nextBound().catch(this._cancelBound)})):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper,this._filteredOperationIndexes),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),n(Nn,Er).delete(this._canvas),this.callback())))}};on=new WeakMap,Er=new WeakMap,d(Nn,Er,new WeakSet);let eg=Nn;const aw="5.4.149",ow="9e2e9e209";var Ae,Cr,vo,xt,tc,_o,li,ec,ln,Ze,sc,ic,sg,nc,ig,rc,ng,hi,Dn,ef,Rb,_s,xi;const ae=class ae{constructor({editor:t=null,uiManager:e=null}){d(this,ic);d(this,nc);d(this,rc);d(this,hi);d(this,ef);d(this,_s);d(this,Ae,null);d(this,Cr,null);d(this,vo,void 0);d(this,xt,null);d(this,tc,!1);d(this,_o,!1);d(this,li,null);d(this,ec,void 0);d(this,ln,null);d(this,Ze,null);var s,i;t?(p(this,_o,!1),p(this,li,t)):p(this,_o,!0),p(this,Ze,(t==null?void 0:t._uiManager)||e),p(this,ec,n(this,Ze)._eventBus),p(this,vo,((s=t==null?void 0:t.color)==null?void 0:s.toUpperCase())||((i=n(this,Ze))==null?void 0:i.highlightColors.values().next().value)||"#FFFF98"),n(ae,sc)||p(ae,sc,Object.freeze({blue:"pdfjs-editor-colorpicker-blue",green:"pdfjs-editor-colorpicker-green",pink:"pdfjs-editor-colorpicker-pink",red:"pdfjs-editor-colorpicker-red",yellow:"pdfjs-editor-colorpicker-yellow"}))}static get _keyboardManager(){return V(this,"_keyboardManager",new hd([[["Escape","mac+Escape"],ae.prototype._hideDropdownFromKeyboard],[[" ","mac+ "],ae.prototype._colorSelectFromKeyboard],[["ArrowDown","ArrowRight","mac+ArrowDown","mac+ArrowRight"],ae.prototype._moveToNext],[["ArrowUp","ArrowLeft","mac+ArrowUp","mac+ArrowLeft"],ae.prototype._moveToPrevious],[["Home","mac+Home"],ae.prototype._moveToBeginning],[["End","mac+End"],ae.prototype._moveToEnd]]))}renderButton(){const t=p(this,Ae,document.createElement("button"));t.className="colorPicker",t.tabIndex="0",t.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button"),t.ariaHasPopup="true",n(this,li)&&(t.ariaControls=`${n(this,li).id}_colorpicker_dropdown`);const e=n(this,Ze)._signal;t.addEventListener("click",b(this,hi,Dn).bind(this),{signal:e}),t.addEventListener("keydown",b(this,rc,ng).bind(this),{signal:e});const s=p(this,Cr,document.createElement("span"));return s.className="swatch",s.ariaHidden="true",s.style.backgroundColor=n(this,vo),t.append(s),t}renderMainDropdown(){const t=p(this,xt,b(this,ic,sg).call(this));return t.ariaOrientation="horizontal",t.ariaLabelledBy="highlightColorPickerLabel",t}_colorSelectFromKeyboard(t){if(t.target===n(this,Ae)){b(this,hi,Dn).call(this,t);return}const e=t.target.getAttribute("data-color");e&&b(this,nc,ig).call(this,e,t)}_moveToNext(t){var e,s;if(!n(this,_s,xi)){b(this,hi,Dn).call(this,t);return}if(t.target===n(this,Ae)){(e=n(this,xt).firstChild)==null||e.focus();return}(s=t.target.nextSibling)==null||s.focus()}_moveToPrevious(t){var e,s;if(t.target===((e=n(this,xt))==null?void 0:e.firstChild)||t.target===n(this,Ae)){n(this,_s,xi)&&this._hideDropdownFromKeyboard();return}n(this,_s,xi)||b(this,hi,Dn).call(this,t),(s=t.target.previousSibling)==null||s.focus()}_moveToBeginning(t){var e;if(!n(this,_s,xi)){b(this,hi,Dn).call(this,t);return}(e=n(this,xt).firstChild)==null||e.focus()}_moveToEnd(t){var e;if(!n(this,_s,xi)){b(this,hi,Dn).call(this,t);return}(e=n(this,xt).lastChild)==null||e.focus()}hideDropdown(){var t,e;(t=n(this,xt))==null||t.classList.add("hidden"),n(this,Ae).ariaExpanded="false",(e=n(this,ln))==null||e.abort(),p(this,ln,null)}_hideDropdownFromKeyboard(){var t;if(!n(this,_o)){if(!n(this,_s,xi)){(t=n(this,li))==null||t.unselect();return}this.hideDropdown(),n(this,Ae).focus({preventScroll:!0,focusVisible:n(this,tc)})}}updateColor(t){if(n(this,Cr)&&(n(this,Cr).style.backgroundColor=t),!n(this,xt))return;const e=n(this,Ze).highlightColors.values();for(const s of n(this,xt).children)s.ariaSelected=e.next().value===t.toUpperCase()}destroy(){var t,e;(t=n(this,Ae))==null||t.remove(),p(this,Ae,null),p(this,Cr,null),(e=n(this,xt))==null||e.remove(),p(this,xt,null)}};Ae=new WeakMap,Cr=new WeakMap,vo=new WeakMap,xt=new WeakMap,tc=new WeakMap,_o=new WeakMap,li=new WeakMap,ec=new WeakMap,ln=new WeakMap,Ze=new WeakMap,sc=new WeakMap,ic=new WeakSet,sg=function(){const t=document.createElement("div"),e=n(this,Ze)._signal;t.addEventListener("contextmenu",je,{signal:e}),t.className="dropdown",t.role="listbox",t.ariaMultiSelectable="false",t.ariaOrientation="vertical",t.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown"),n(this,li)&&(t.id=`${n(this,li).id}_colorpicker_dropdown`);for(const[s,i]of n(this,Ze).highlightColors){const r=document.createElement("button");r.tabIndex="0",r.role="option",r.setAttribute("data-color",i),r.title=s,r.setAttribute("data-l10n-id",n(ae,sc)[s]);const a=document.createElement("span");r.append(a),a.className="swatch",a.style.backgroundColor=i,r.ariaSelected=i===n(this,vo),r.addEventListener("click",b(this,nc,ig).bind(this,i),{signal:e}),t.append(r)}return t.addEventListener("keydown",b(this,rc,ng).bind(this),{signal:e}),t},nc=new WeakSet,ig=function(t,e){e.stopPropagation(),n(this,ec).dispatch("switchannotationeditorparams",{source:this,type:X.HIGHLIGHT_COLOR,value:t}),this.updateColor(t)},rc=new WeakSet,ng=function(t){ae._keyboardManager.exec(this,t)},hi=new WeakSet,Dn=function(t){if(n(this,_s,xi)){this.hideDropdown();return}if(p(this,tc,t.detail===0),n(this,ln)||(p(this,ln,new AbortController),window.addEventListener("pointerdown",b(this,ef,Rb).bind(this),{signal:n(this,Ze).combinedSignal(n(this,ln))})),n(this,Ae).ariaExpanded="true",n(this,xt)){n(this,xt).classList.remove("hidden");return}const e=p(this,xt,b(this,ic,sg).call(this));n(this,Ae).append(e)},ef=new WeakSet,Rb=function(t){var e;(e=n(this,xt))!=null&&e.contains(t.target)||this.hideDropdown()},_s=new WeakSet,xi=function(){return n(this,xt)&&!n(this,xt).classList.contains("hidden")},d(ae,sc,null);let eu=ae;var Ss,ac,So,oc;const On=class On{constructor(t){d(this,Ss,null);d(this,ac,null);d(this,So,null);p(this,ac,t),p(this,So,t._uiManager),n(On,oc)||p(On,oc,Object.freeze({freetext:"pdfjs-editor-color-picker-free-text-input",ink:"pdfjs-editor-color-picker-ink-input"}))}renderButton(){if(n(this,Ss))return n(this,Ss);const{editorType:t,colorType:e,colorValue:s}=n(this,ac),i=p(this,Ss,document.createElement("input"));return i.type="color",i.value=s||"#000000",i.className="basicColorPicker",i.tabIndex=0,i.setAttribute("data-l10n-id",n(On,oc)[t]),i.addEventListener("input",()=>{n(this,So).updateParams(e,i.value)},{signal:n(this,So)._signal}),i}update(t){n(this,Ss)&&(n(this,Ss).value=t)}destroy(){var t;(t=n(this,Ss))==null||t.remove(),p(this,Ss,null)}hideDropdown(){}};Ss=new WeakMap,ac=new WeakMap,So=new WeakMap,oc=new WeakMap,d(On,oc,null);let su=On;function wm(u){return Math.floor(Math.max(0,Math.min(1,u))*255).toString(16).padStart(2,"0")}function fl(u){return Math.max(0,Math.min(255,255*u))}class vm{static CMYK_G([t,e,s,i]){return["G",1-Math.min(1,.3*t+.59*s+.11*e+i)]}static G_CMYK([t]){return["CMYK",0,0,0,1-t]}static G_RGB([t]){return["RGB",t,t,t]}static G_rgb([t]){return t=fl(t),[t,t,t]}static G_HTML([t]){const e=wm(t);return`#${e}${e}${e}`}static RGB_G([t,e,s]){return["G",.3*t+.59*e+.11*s]}static RGB_rgb(t){return t.map(fl)}static RGB_HTML(t){return`#${t.map(wm).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([t,e,s,i]){return["RGB",1-Math.min(1,t+i),1-Math.min(1,s+i),1-Math.min(1,e+i)]}static CMYK_rgb([t,e,s,i]){return[fl(1-Math.min(1,t+i)),fl(1-Math.min(1,s+i)),fl(1-Math.min(1,e+i))]}static CMYK_HTML(t){const e=this.CMYK_RGB(t).slice(1);return this.RGB_HTML(e)}static RGB_CMYK([t,e,s]){const i=1-t,r=1-e,a=1-s,o=Math.min(i,r,a);return["CMYK",i,r,a,o]}}class lw{create(t,e,s=!1){if(t<=0||e<=0)throw new Error("Invalid SVG dimensions");const i=this._createSVG("svg:svg");return i.setAttribute("version","1.1"),s||(i.setAttribute("width",`${t}px`),i.setAttribute("height",`${e}px`)),i.setAttribute("preserveAspectRatio","none"),i.setAttribute("viewBox",`0 0 ${t} ${e}`),i}createElement(t){if(typeof t!="string")throw new Error("Invalid SVG element type");return this._createSVG(t)}_createSVG(t){st("Abstract method `_createSVG` called.")}}class iu extends lw{_createSVG(t){return document.createElementNS(Is,t)}}class Db{static setupStorage(t,e,s,i,r){const a=i.getValue(e,{value:null});switch(s.name){case"textarea":if(a.value!==null&&(t.textContent=a.value),r==="print")break;t.addEventListener("input",o=>{i.setValue(e,{value:o.target.value})});break;case"input":if(s.attributes.type==="radio"||s.attributes.type==="checkbox"){if(a.value===s.attributes.xfaOn?t.setAttribute("checked",!0):a.value===s.attributes.xfaOff&&t.removeAttribute("checked"),r==="print")break;t.addEventListener("change",o=>{i.setValue(e,{value:o.target.checked?o.target.getAttribute("xfaOn"):o.target.getAttribute("xfaOff")})})}else{if(a.value!==null&&t.setAttribute("value",a.value),r==="print")break;t.addEventListener("input",o=>{i.setValue(e,{value:o.target.value})})}break;case"select":if(a.value!==null){t.setAttribute("value",a.value);for(const o of s.children)o.attributes.value===a.value?o.attributes.selected=!0:o.attributes.hasOwnProperty("selected")&&delete o.attributes.selected}t.addEventListener("input",o=>{const l=o.target.options,h=l.selectedIndex===-1?"":l[l.selectedIndex].value;i.setValue(e,{value:h})});break}}static setAttributes({html:t,element:e,storage:s=null,intent:i,linkService:r}){const{attributes:a}=e,o=t instanceof HTMLAnchorElement;a.type==="radio"&&(a.name=`${a.name}-${i}`);for(const[l,h]of Object.entries(a))if(h!=null)switch(l){case"class":h.length&&t.setAttribute(l,h.join(" "));break;case"dataId":break;case"id":t.setAttribute("data-element-id",h);break;case"style":Object.assign(t.style,h);break;case"textContent":t.textContent=h;break;default:(!o||l!=="href"&&l!=="newWindow")&&t.setAttribute(l,h)}o&&r.addLinkAttributes(t,a.href,a.newWindow),s&&a.dataId&&this.setupStorage(t,a.dataId,e,s)}static render(t){var f,g;const e=t.annotationStorage,s=t.linkService,i=t.xfaHtml,r=t.intent||"display",a=document.createElement(i.name);i.attributes&&this.setAttributes({html:a,element:i,intent:r,linkService:s});const o=r!=="richText",l=t.div;if(l.append(a),t.viewport){const m=`matrix(${t.viewport.transform.join(",")})`;l.style.transform=m}o&&l.setAttribute("class","xfaLayer xfaFont");const h=[];if(i.children.length===0){if(i.value){const m=document.createTextNode(i.value);a.append(m),o&&Ol.shouldBuildText(i.name)&&h.push(m)}return{textDivs:h}}const c=[[i,-1,a]];for(;c.length>0;){const[m,A,y]=c.at(-1);if(A+1===m.children.length){c.pop();continue}const v=m.children[++c.at(-1)[1]];if(v===null)continue;const{name:w}=v;if(w==="#text"){const _=document.createTextNode(v.value);h.push(_),y.append(_);continue}const S=(f=v==null?void 0:v.attributes)!=null&&f.xmlns?document.createElementNS(v.attributes.xmlns,w):document.createElement(w);if(y.append(S),v.attributes&&this.setAttributes({html:S,element:v,storage:e,intent:r,linkService:s}),((g=v.children)==null?void 0:g.length)>0)c.push([v,-1,S]);else if(v.value){const _=document.createTextNode(v.value);o&&Ol.shouldBuildText(w)&&h.push(_),S.append(_)}}for(const m of l.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))m.setAttribute("readOnly",!0);return{textDivs:h}}static update(t){const e=`matrix(${t.viewport.transform.join(",")})`;t.div.style.transform=e,t.div.hidden=!1}}const hw=9,oa=new WeakSet,cw=new Date().getTimezoneOffset()*60*1e3;class _m{static create(t){switch(t.data.annotationType){case wt.LINK:return new Vg(t);case wt.TEXT:return new dw(t);case wt.WIDGET:switch(t.data.fieldType){case"Tx":return new uw(t);case"Btn":return t.data.radioButton?new Nb(t):t.data.checkBox?new pw(t):new gw(t);case"Ch":return new mw(t);case"Sig":return new fw(t)}return new ha(t);case wt.POPUP:return new ag(t);case wt.FREETEXT:return new Ub(t);case wt.LINE:return new Aw(t);case wt.SQUARE:return new yw(t);case wt.CIRCLE:return new ww(t);case wt.POLYLINE:return new jb(t);case wt.CARET:return new _w(t);case wt.INK:return new Wg(t);case wt.POLYGON:return new vw(t);case wt.HIGHLIGHT:return new Vb(t);case wt.UNDERLINE:return new Sw(t);case wt.SQUIGGLY:return new Ew(t);case wt.STRIKEOUT:return new Cw(t);case wt.STAMP:return new Wb(t);case wt.FILEATTACHMENT:return new Tw(t);default:return new bt(t)}}}var Tr,Eo,ci,sf,Lb,lc,rg;const Zg=class Zg{constructor(t,{isRenderable:e=!1,ignoreBorder:s=!1,createQuadrilaterals:i=!1}={}){d(this,sf);d(this,lc);d(this,Tr,null);d(this,Eo,!1);d(this,ci,null);this.isRenderable=e,this.data=t.data,this.layer=t.layer,this.linkService=t.linkService,this.downloadManager=t.downloadManager,this.imageResourcesPath=t.imageResourcesPath,this.renderForms=t.renderForms,this.svgFactory=t.svgFactory,this.annotationStorage=t.annotationStorage,this.enableComment=t.enableComment,this.enableScripting=t.enableScripting,this.hasJSActions=t.hasJSActions,this._fieldObjects=t.fieldObjects,this.parent=t.parent,e&&(this.container=this._createContainer(s)),i&&this._createQuadrilaterals()}static _hasPopupData({contentsObj:t,richText:e}){return!!(t!=null&&t.str||e!=null&&e.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return Zg._hasPopupData(this.data)}get hasCommentButton(){return this.enableComment&&this._isEditable&&this.hasPopupElement}get commentButtonPosition(){const{quadPoints:t,rect:e}=this.data;let s=-1/0,i=-1/0;if((t==null?void 0:t.length)>=8){for(let r=0;ri?(i=t[r+1],s=t[r+2]):t[r+1]===i&&(s=Math.max(s,t[r+2]));return[s,i]}return e?[e[2],e[3]]:null}get commentButtonColor(){if(!this.data.color)return null;const[t,e,s]=this.data.color,r=255*(1-(this.data.opacity??1));return b(this,sf,Lb).call(this,Math.min(t+r,255),Math.min(e+r,255),Math.min(s+r,255))}_normalizePoint(t){const{page:{view:e},viewport:{rawDims:{pageWidth:s,pageHeight:i,pageX:r,pageY:a}}}=this.parent;return t[1]=e[3]-t[1]+e[1],t[0]=100*(t[0]-r)/s,t[1]=100*(t[1]-a)/i,t}updateEdited(t){var r;if(!this.container)return;t.rect&&(n(this,Tr)||p(this,Tr,{rect:this.data.rect.slice(0)}));const{rect:e,popup:s}=t;e&&b(this,lc,rg).call(this,e);let i=((r=n(this,ci))==null?void 0:r.popup)||this.popup;!i&&(s!=null&&s.text)&&(this._createPopup(s),i=n(this,ci).popup),i&&(i.updateEdited(t),s!=null&&s.deleted&&(i.remove(),p(this,ci,null),this.popup=null))}resetEdited(){var t;n(this,Tr)&&(b(this,lc,rg).call(this,n(this,Tr).rect),(t=n(this,ci))==null||t.popup.resetEdited(),p(this,Tr,null))}_createContainer(t){const{data:e,parent:{page:s,viewport:i}}=this,r=document.createElement("section");r.setAttribute("data-annotation-id",e.id),!(this instanceof ha)&&!(this instanceof Vg)&&(r.tabIndex=0);const{style:a}=r;if(a.zIndex=this.parent.zIndex,this.parent.zIndex+=2,e.alternativeText&&(r.title=e.alternativeText),e.noRotate&&r.classList.add("norotate"),!e.rect||this instanceof ag){const{rotation:y}=e;return!e.hasOwnCanvas&&y!==0&&this.setRotation(y,r),r}const{width:o,height:l}=this;if(!t&&e.borderStyle.width>0){a.borderWidth=`${e.borderStyle.width}px`;const y=e.borderStyle.horizontalCornerRadius,v=e.borderStyle.verticalCornerRadius;if(y>0||v>0){const S=`calc(${y}px * var(--total-scale-factor)) / calc(${v}px * var(--total-scale-factor))`;a.borderRadius=S}else if(this instanceof Nb){const S=`calc(${o}px * var(--total-scale-factor)) / calc(${l}px * var(--total-scale-factor))`;a.borderRadius=S}switch(e.borderStyle.style){case da.SOLID:a.borderStyle="solid";break;case da.DASHED:a.borderStyle="dashed";break;case da.BEVELED:z("Unimplemented border style: beveled");break;case da.INSET:z("Unimplemented border style: inset");break;case da.UNDERLINE:a.borderBottomStyle="solid";break}const w=e.borderColor||null;w?(p(this,Eo,!0),a.borderColor=I.makeHexColor(w[0]|0,w[1]|0,w[2]|0)):a.borderWidth=0}const h=I.normalizeRect([e.rect[0],s.view[3]-e.rect[1]+s.view[1],e.rect[2],s.view[3]-e.rect[3]+s.view[1]]),{pageWidth:c,pageHeight:f,pageX:g,pageY:m}=i.rawDims;a.left=`${100*(h[0]-g)/c}%`,a.top=`${100*(h[1]-m)/f}%`;const{rotation:A}=e;return e.hasOwnCanvas||A===0?(a.width=`${100*o/c}%`,a.height=`${100*l/f}%`):this.setRotation(A,r),r}setRotation(t,e=this.container){if(!this.data.rect)return;const{pageWidth:s,pageHeight:i}=this.parent.viewport.rawDims;let{width:r,height:a}=this;t%180!==0&&([r,a]=[a,r]),e.style.width=`${100*r/s}%`,e.style.height=`${100*a/i}%`,e.setAttribute("data-main-rotation",(360-t)%360)}get _commonActions(){const t=(e,s,i)=>{const r=i.detail[e],a=r[0],o=r.slice(1);i.target.style[s]=vm[`${a}_HTML`](o),this.annotationStorage.setValue(this.data.id,{[s]:vm[`${a}_rgb`](o)})};return V(this,"_commonActions",{display:e=>{const{display:s}=e.detail,i=s%2===1;this.container.style.visibility=i?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:i,noPrint:s===1||s===2})},print:e=>{this.annotationStorage.setValue(this.data.id,{noPrint:!e.detail.print})},hidden:e=>{const{hidden:s}=e.detail;this.container.style.visibility=s?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:s,noView:s})},focus:e=>{setTimeout(()=>e.target.focus({preventScroll:!1}),0)},userName:e=>{e.target.title=e.detail.userName},readonly:e=>{e.target.disabled=e.detail.readonly},required:e=>{this._setRequired(e.target,e.detail.required)},bgColor:e=>{t("bgColor","backgroundColor",e)},fillColor:e=>{t("fillColor","backgroundColor",e)},fgColor:e=>{t("fgColor","color",e)},textColor:e=>{t("textColor","color",e)},borderColor:e=>{t("borderColor","borderColor",e)},strokeColor:e=>{t("strokeColor","borderColor",e)},rotation:e=>{const s=e.detail.rotation;this.setRotation(s),this.annotationStorage.setValue(this.data.id,{rotation:s})}})}_dispatchEventFromSandbox(t,e){const s=this._commonActions;for(const i of Object.keys(e.detail)){const r=t[i]||s[i];r==null||r(e)}}_setDefaultPropertiesFromJS(t){if(!this.enableScripting)return;const e=this.annotationStorage.getRawValue(this.data.id);if(!e)return;const s=this._commonActions;for(const[i,r]of Object.entries(e)){const a=s[i];if(a){const o={detail:{[i]:r},target:t};a(o),delete e[i]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:t}=this.data;if(!t)return;const[e,s,i,r]=this.data.rect.map(y=>Math.fround(y));if(t.length===8){const[y,v,w,S]=t.subarray(2,6);if(i===y&&r===v&&e===w&&s===S)return}const{style:a}=this.container;let o;if(n(this,Eo)){const{borderColor:y,borderWidth:v}=a;a.borderWidth=0,o=["url('data:image/svg+xml;utf8,",'',``],this.container.classList.add("hasBorder")}const l=i-e,h=r-s,{svgFactory:c}=this,f=c.createElement("svg");f.classList.add("quadrilateralsContainer"),f.setAttribute("width",0),f.setAttribute("height",0),f.role="none";const g=c.createElement("defs");f.append(g);const m=c.createElement("clipPath"),A=`clippath_${this.data.id}`;m.setAttribute("id",A),m.setAttribute("clipPathUnits","objectBoundingBox"),g.append(m);for(let y=2,v=t.length;y`)}n(this,Eo)&&(o.push("')"),a.backgroundImage=o.join("")),this.container.append(f),this.container.style.clipPath=`url(#${A})`}_createPopup(t=null){const{data:e}=this;let s,i;t?(s={str:t.text},i=t.date):(s=e.contentsObj,i=e.modificationDate);const r=p(this,ci,new ag({data:{color:e.color,titleObj:e.titleObj,modificationDate:i,contentsObj:s,richText:e.richText,parentRect:e.rect,borderStyle:0,id:`popup_${e.id}`,rotation:e.rotation,noRotate:!0},linkService:this.linkService,parent:this.parent,elements:[this]}));this.parent.div.append(r.render())}get hasPopupElement(){return!!(n(this,ci)||this.popup||this.data.popupRef)}render(){st("Abstract method `AnnotationElement.render` called")}_getElementsByName(t,e=null){const s=[];if(this._fieldObjects){const i=this._fieldObjects[t];if(i)for(const{page:r,id:a,exportValues:o}of i){if(r===-1||a===e)continue;const l=typeof o=="string"?o:null,h=document.querySelector(`[data-element-id="${a}"]`);if(h&&!oa.has(h)){z(`_getElementsByName - element not allowed: ${a}`);continue}s.push({id:a,exportValue:l,domElement:h})}return s}for(const i of document.getElementsByName(t)){const{exportValue:r}=i,a=i.getAttribute("data-element-id");a!==e&&oa.has(i)&&s.push({id:a,exportValue:r,domElement:i})}return s}show(){var t;this.container&&(this.container.hidden=!1),(t=this.popup)==null||t.maybeShow()}hide(){var t;this.container&&(this.container.hidden=!0),(t=this.popup)==null||t.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const t=this.getElementsToTriggerPopup();if(Array.isArray(t))for(const e of t)e.classList.add("highlightArea");else t.classList.add("highlightArea")}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:t,data:{id:e}}=this;this.container.addEventListener("dblclick",()=>{var s;(s=this.linkService.eventBus)==null||s.dispatch("switchannotationeditormode",{source:this,mode:t,editId:e,mustEnterInEditMode:!0})})}get width(){return this.data.rect[2]-this.data.rect[0]}get height(){return this.data.rect[3]-this.data.rect[1]}};Tr=new WeakMap,Eo=new WeakMap,ci=new WeakMap,sf=new WeakSet,Lb=function(t,e,s){t/=255,e/=255,s/=255;const i=Math.max(t,e,s),r=Math.min(t,e,s),a=(i+r)/2,o=((1+Math.sqrt(a))/2*100).toFixed(2);if(i===r)return`hsl(0, 0%, ${o}%)`;const l=i-r;let h;i===t?h=(e-s)/l+(e(s&&this.linkService.goToDestination(s),!1),(s||s==="")&&b(this,di,Ln).call(this),i&&(e.title=i)}_bindNamedAction(e,s,i=""){e.href=this.linkService.getAnchorUrl(""),e.onclick=()=>(this.linkService.executeNamedAction(s),!1),i&&(e.title=i),b(this,di,Ln).call(this)}_bindJSAction(e,s){e.href=this.linkService.getAnchorUrl("");const i=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const r of Object.keys(s.actions)){const a=i.get(r);a&&(e[a]=()=>{var o;return(o=this.linkService.eventBus)==null||o.dispatch("dispatcheventinsandbox",{source:this,detail:{id:s.id,name:r}}),!1})}s.overlaidText&&(e.title=s.overlaidText),e.onclick||(e.onclick=()=>!1),b(this,di,Ln).call(this)}_bindResetFormAction(e,s){const i=e.onclick;if(i||(e.href=this.linkService.getAnchorUrl("")),b(this,di,Ln).call(this),!this._fieldObjects){z('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),i||(e.onclick=()=>!1);return}e.onclick=()=>{var f;i==null||i();const{fields:r,refs:a,include:o}=s,l=[];if(r.length!==0||a.length!==0){const g=new Set(a);for(const m of r){const A=this._fieldObjects[m]||[];for(const{id:y}of A)g.add(y)}for(const m of Object.values(this._fieldObjects))for(const A of m)g.has(A.id)===o&&l.push(A)}else for(const g of Object.values(this._fieldObjects))l.push(...g);const h=this.annotationStorage,c=[];for(const g of l){const{id:m}=g;switch(c.push(m),g.type){case"text":{const y=g.defaultValue||"";h.setValue(m,{value:y});break}case"checkbox":case"radiobutton":{const y=g.defaultValue===g.exportValues;h.setValue(m,{value:y});break}case"combobox":case"listbox":{const y=g.defaultValue||"";h.setValue(m,{value:y});break}default:continue}const A=document.querySelector(`[data-element-id="${m}"]`);if(A){if(!oa.has(A)){z(`_bindResetFormAction - element not allowed: ${m}`);continue}}else continue;A.dispatchEvent(new Event("resetform"))}return this.enableScripting&&((f=this.linkService.eventBus)==null||f.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:c,name:"ResetForm"}})),!1}}}di=new WeakSet,Ln=function(){this.container.setAttribute("data-internal-link","")},nf=new WeakSet,Ib=function(e,s,i="",r=null){e.href=this.linkService.getAnchorUrl(""),s.description?e.title=s.description:i&&(e.title=i),e.onclick=()=>{var a;return(a=this.downloadManager)==null||a.openOrDownloadData(s.content,s.filename,r),!1},b(this,di,Ln).call(this)},rf=new WeakSet,Fb=function(e,s,i=""){e.href=this.linkService.getAnchorUrl(""),e.onclick=()=>(this.linkService.executeSetOCGState(s),!1),i&&(e.title=i),b(this,di,Ln).call(this)};class dw extends bt{constructor(t){super(t,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const t=document.createElement("img");return t.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",t.setAttribute("data-l10n-id","pdfjs-text-annotation-type"),t.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.append(t),this.container}}class ha extends bt{render(){return this.container}showElementAndHideCanvas(t){var e;this.data.hasOwnCanvas&&(((e=t.previousSibling)==null?void 0:e.nodeName)==="CANVAS"&&(t.previousSibling.hidden=!0),t.hidden=!1)}_getKeyModifier(t){return Wt.platform.isMac?t.metaKey:t.ctrlKey}_setEventListener(t,e,s,i,r){s.includes("mouse")?t.addEventListener(s,a=>{var o;(o=this.linkService.eventBus)==null||o.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:i,value:r(a),shift:a.shiftKey,modifier:this._getKeyModifier(a)}})}):t.addEventListener(s,a=>{var o;if(s==="blur"){if(!e.focused||!a.relatedTarget)return;e.focused=!1}else if(s==="focus"){if(e.focused)return;e.focused=!0}r&&((o=this.linkService.eventBus)==null||o.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:i,value:r(a)}}))})}_setEventListeners(t,e,s,i){var r,a,o;for(const[l,h]of s)(h==="Action"||(r=this.data.actions)!=null&&r[h])&&((h==="Focus"||h==="Blur")&&(e||(e={focused:!1})),this._setEventListener(t,e,l,h,i),h==="Focus"&&!((a=this.data.actions)!=null&&a.Blur)?this._setEventListener(t,e,"blur","Blur",null):h==="Blur"&&!((o=this.data.actions)!=null&&o.Focus)&&this._setEventListener(t,e,"focus","Focus",null))}_setBackgroundColor(t){const e=this.data.backgroundColor||null;t.style.backgroundColor=e===null?"transparent":I.makeHexColor(e[0],e[1],e[2])}_setTextStyle(t){const e=["left","center","right"],{fontColor:s}=this.data.defaultAppearanceData,i=this.data.defaultAppearanceData.fontSize||hw,r=t.style;let a;const o=2,l=h=>Math.round(10*h)/10;if(this.data.multiLine){const h=Math.abs(this.data.rect[3]-this.data.rect[1]-o),c=Math.round(h/(up*i))||1,f=h/c;a=Math.min(i,l(f/up))}else{const h=Math.abs(this.data.rect[3]-this.data.rect[1]-o);a=Math.min(i,l(h/up))}r.fontSize=`calc(${a}px * var(--total-scale-factor))`,r.color=I.makeHexColor(s[0],s[1],s[2]),this.data.textAlignment!==null&&(r.textAlign=e[this.data.textAlignment])}_setRequired(t,e){e?t.setAttribute("required",!0):t.removeAttribute("required"),t.setAttribute("aria-required",e)}}class uw extends ha{constructor(t){const e=t.renderForms||t.data.hasOwnCanvas||!t.data.hasAppearance&&!!t.data.fieldValue;super(t,{isRenderable:e})}setPropertyOnSiblings(t,e,s,i){const r=this.annotationStorage;for(const a of this._getElementsByName(t.name,t.id))a.domElement&&(a.domElement[e]=s),r.setValue(a.id,{[i]:s})}render(){var i,r;const t=this.annotationStorage,e=this.data.id;this.container.classList.add("textWidgetAnnotation");let s=null;if(this.renderForms){const a=t.getValue(e,{value:this.data.fieldValue});let o=a.value||"";const l=t.getValue(e,{charLimit:this.data.maxLen}).charLimit;l&&o.length>l&&(o=o.slice(0,l));let h=a.formattedValue||((i=this.data.textContent)==null?void 0:i.join(` `))||null;h&&this.data.comb&&(h=h.replaceAll(/\s+/g,""));const c={userValue:o,formattedValue:h,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(s=document.createElement("textarea"),s.textContent=h??o,this.data.doNotScroll&&(s.style.overflowY="hidden")):(s=document.createElement("input"),s.type=this.data.password?"password":"text",s.setAttribute("value",h??o),this.data.doNotScroll&&(s.style.overflowX="hidden")),this.data.hasOwnCanvas&&(s.hidden=!0),oa.add(s),s.setAttribute("data-element-id",e),s.disabled=this.data.readOnly,s.name=this.data.fieldName,s.tabIndex=0;const{datetimeFormat:f,datetimeType:g,timeStep:m}=this.data,A=!!g&&this.enableScripting;f&&(s.title=f),this._setRequired(s,this.data.required),l&&(s.maxLength=l),s.addEventListener("input",v=>{t.setValue(e,{value:v.target.value}),this.setPropertyOnSiblings(s,"value",v.target.value,"value"),c.formattedValue=null}),s.addEventListener("resetform",v=>{const w=this.data.defaultFieldValue??"";s.value=c.userValue=w,c.formattedValue=null});let y=v=>{const{formattedValue:w}=c;w!=null&&(v.target.value=w),v.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){s.addEventListener("focus",w=>{var _;if(c.focused)return;const{target:S}=w;if(A&&(S.type=g,m&&(S.step=m)),c.userValue){const E=c.userValue;if(A)if(g==="time"){const C=new Date(E),T=[C.getHours(),C.getMinutes(),C.getSeconds()];S.value=T.map(x=>x.toString().padStart(2,"0")).join(":")}else S.value=new Date(E-cw).toISOString().split(g==="date"?"T":".",1)[0];else S.value=E}c.lastCommittedValue=S.value,c.commitKey=1,(_=this.data.actions)!=null&&_.Focus||(c.focused=!0)}),s.addEventListener("updatefromsandbox",w=>{this.showElementAndHideCanvas(w.target);const S={value(_){c.userValue=_.detail.value??"",A||t.setValue(e,{value:c.userValue.toString()}),_.target.value=c.userValue},formattedValue(_){const{formattedValue:E}=_.detail;c.formattedValue=E,E!=null&&_.target!==document.activeElement&&(_.target.value=E);const C={formattedValue:E};A&&(C.value=E),t.setValue(e,C)},selRange(_){_.target.setSelectionRange(..._.detail.selRange)},charLimit:_=>{var x;const{charLimit:E}=_.detail,{target:C}=_;if(E===0){C.removeAttribute("maxLength");return}C.setAttribute("maxLength",E);let T=c.userValue;!T||T.length<=E||(T=T.slice(0,E),C.value=c.userValue=T,t.setValue(e,{value:T}),(x=this.linkService.eventBus)==null||x.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:T,willCommit:!0,commitKey:1,selStart:C.selectionStart,selEnd:C.selectionEnd}}))}};this._dispatchEventFromSandbox(S,w)}),s.addEventListener("keydown",w=>{var E;c.commitKey=1;let S=-1;if(w.key==="Escape"?S=0:w.key==="Enter"&&!this.data.multiLine?S=2:w.key==="Tab"&&(c.commitKey=3),S===-1)return;const{value:_}=w.target;c.lastCommittedValue!==_&&(c.lastCommittedValue=_,c.userValue=_,(E=this.linkService.eventBus)==null||E.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:_,willCommit:!0,commitKey:S,selStart:w.target.selectionStart,selEnd:w.target.selectionEnd}}))});const v=y;y=null,s.addEventListener("blur",w=>{var E,C;if(!c.focused||!w.relatedTarget)return;(E=this.data.actions)!=null&&E.Blur||(c.focused=!1);const{target:S}=w;let{value:_}=S;if(A){if(_&&g==="time"){const T=_.split(":").map(x=>parseInt(x,10));_=new Date(2e3,0,1,T[0],T[1],T[2]||0).valueOf(),S.step=""}else _=new Date(_).valueOf();S.type="text"}c.userValue=_,c.lastCommittedValue!==_&&((C=this.linkService.eventBus)==null||C.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:_,willCommit:!0,commitKey:c.commitKey,selStart:w.target.selectionStart,selEnd:w.target.selectionEnd}})),v(w)}),(r=this.data.actions)!=null&&r.Keystroke&&s.addEventListener("beforeinput",w=>{var M;c.lastCommittedValue=null;const{data:S,target:_}=w,{value:E,selectionStart:C,selectionEnd:T}=_;let x=C,P=T;switch(w.inputType){case"deleteWordBackward":{const D=E.substring(0,C).match(/\w*[^\w]*$/);D&&(x-=D[0].length);break}case"deleteWordForward":{const D=E.substring(C).match(/^[^\w]*\w*/);D&&(P+=D[0].length);break}case"deleteContentBackward":C===T&&(x-=1);break;case"deleteContentForward":C===T&&(P+=1);break}w.preventDefault(),(M=this.linkService.eventBus)==null||M.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:E,change:S||"",willCommit:!1,selStart:x,selEnd:P}})}),this._setEventListeners(s,c,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],w=>w.target.value)}if(y&&s.addEventListener("blur",y),this.data.comb){const w=(this.data.rect[2]-this.data.rect[0])/l;s.classList.add("comb"),s.style.letterSpacing=`calc(${w}px * var(--total-scale-factor) - 1ch)`}}else s=document.createElement("div"),s.textContent=this.data.fieldValue,s.style.verticalAlign="middle",s.style.display="table-cell",this.data.hasOwnCanvas&&(s.hidden=!0);return this._setTextStyle(s),this._setBackgroundColor(s),this._setDefaultPropertiesFromJS(s),this.container.append(s),this.container}}class fw extends ha{constructor(t){super(t,{isRenderable:!!t.data.hasOwnCanvas})}}class pw extends ha{constructor(t){super(t,{isRenderable:t.renderForms})}render(){const t=this.annotationStorage,e=this.data,s=e.id;let i=t.getValue(s,{value:e.exportValue===e.fieldValue}).value;typeof i=="string"&&(i=i!=="Off",t.setValue(s,{value:i})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const r=document.createElement("input");return oa.add(r),r.setAttribute("data-element-id",s),r.disabled=e.readOnly,this._setRequired(r,this.data.required),r.type="checkbox",r.name=e.fieldName,i&&r.setAttribute("checked",!0),r.setAttribute("exportValue",e.exportValue),r.tabIndex=0,r.addEventListener("change",a=>{const{name:o,checked:l}=a.target;for(const h of this._getElementsByName(o,s)){const c=l&&h.exportValue===e.exportValue;h.domElement&&(h.domElement.checked=c),t.setValue(h.id,{value:c})}t.setValue(s,{value:l})}),r.addEventListener("resetform",a=>{const o=e.defaultFieldValue||"Off";a.target.checked=o===e.exportValue}),this.enableScripting&&this.hasJSActions&&(r.addEventListener("updatefromsandbox",a=>{const o={value(l){l.target.checked=l.detail.value!=="Off",t.setValue(s,{value:l.target.checked})}};this._dispatchEventFromSandbox(o,a)}),this._setEventListeners(r,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],a=>a.target.checked)),this._setBackgroundColor(r),this._setDefaultPropertiesFromJS(r),this.container.append(r),this.container}}class Nb extends ha{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const t=this.annotationStorage,e=this.data,s=e.id;let i=t.getValue(s,{value:e.fieldValue===e.buttonValue}).value;if(typeof i=="string"&&(i=i!==e.buttonValue,t.setValue(s,{value:i})),i)for(const a of this._getElementsByName(e.fieldName,s))t.setValue(a.id,{value:!1});const r=document.createElement("input");if(oa.add(r),r.setAttribute("data-element-id",s),r.disabled=e.readOnly,this._setRequired(r,this.data.required),r.type="radio",r.name=e.fieldName,i&&r.setAttribute("checked",!0),r.tabIndex=0,r.addEventListener("change",a=>{const{name:o,checked:l}=a.target;for(const h of this._getElementsByName(o,s))t.setValue(h.id,{value:!1});t.setValue(s,{value:l})}),r.addEventListener("resetform",a=>{const o=e.defaultFieldValue;a.target.checked=o!=null&&o===e.buttonValue}),this.enableScripting&&this.hasJSActions){const a=e.buttonValue;r.addEventListener("updatefromsandbox",o=>{const l={value:h=>{const c=a===h.detail.value;for(const f of this._getElementsByName(h.target.name)){const g=c&&f.id===s;f.domElement&&(f.domElement.checked=g),t.setValue(f.id,{value:g})}}};this._dispatchEventFromSandbox(l,o)}),this._setEventListeners(r,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],o=>o.target.checked)}return this._setBackgroundColor(r),this._setDefaultPropertiesFromJS(r),this.container.append(r),this.container}}class gw extends Vg{constructor(t){super(t,{ignoreBorder:t.data.hasAppearance})}render(){const t=super.render();t.classList.add("buttonWidgetAnnotation","pushButton");const e=t.lastChild;return this.enableScripting&&this.hasJSActions&&e&&(this._setDefaultPropertiesFromJS(e),e.addEventListener("updatefromsandbox",s=>{this._dispatchEventFromSandbox({},s)})),t}}class mw extends ha{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const t=this.annotationStorage,e=this.data.id,s=t.getValue(e,{value:this.data.fieldValue}),i=document.createElement("select");oa.add(i),i.setAttribute("data-element-id",e),i.disabled=this.data.readOnly,this._setRequired(i,this.data.required),i.name=this.data.fieldName,i.tabIndex=0;let r=this.data.combo&&this.data.options.length>0;this.data.combo||(i.size=this.data.options.length,this.data.multiSelect&&(i.multiple=!0)),i.addEventListener("resetform",c=>{const f=this.data.defaultFieldValue;for(const g of i.options)g.selected=g.value===f});for(const c of this.data.options){const f=document.createElement("option");f.textContent=c.displayValue,f.value=c.exportValue,s.value.includes(c.exportValue)&&(f.setAttribute("selected",!0),r=!1),i.append(f)}let a=null;if(r){const c=document.createElement("option");c.value=" ",c.setAttribute("hidden",!0),c.setAttribute("selected",!0),i.prepend(c),a=()=>{c.remove(),i.removeEventListener("input",a),a=null},i.addEventListener("input",a)}const o=c=>{const f=c?"value":"textContent",{options:g,multiple:m}=i;return m?Array.prototype.filter.call(g,A=>A.selected).map(A=>A[f]):g.selectedIndex===-1?null:g[g.selectedIndex][f]};let l=o(!1);const h=c=>{const f=c.target.options;return Array.prototype.map.call(f,g=>({displayValue:g.textContent,exportValue:g.value}))};return this.enableScripting&&this.hasJSActions?(i.addEventListener("updatefromsandbox",c=>{const f={value(g){a==null||a();const m=g.detail.value,A=new Set(Array.isArray(m)?m:[m]);for(const y of i.options)y.selected=A.has(y.value);t.setValue(e,{value:o(!0)}),l=o(!1)},multipleSelection(g){i.multiple=!0},remove(g){const m=i.options,A=g.detail.remove;m[A].selected=!1,i.remove(A),m.length>0&&Array.prototype.findIndex.call(m,v=>v.selected)===-1&&(m[0].selected=!0),t.setValue(e,{value:o(!0),items:h(g)}),l=o(!1)},clear(g){for(;i.length!==0;)i.remove(0);t.setValue(e,{value:null,items:[]}),l=o(!1)},insert(g){const{index:m,displayValue:A,exportValue:y}=g.detail.insert,v=i.children[m],w=document.createElement("option");w.textContent=A,w.value=y,v?v.before(w):i.append(w),t.setValue(e,{value:o(!0),items:h(g)}),l=o(!1)},items(g){const{items:m}=g.detail;for(;i.length!==0;)i.remove(0);for(const A of m){const{displayValue:y,exportValue:v}=A,w=document.createElement("option");w.textContent=y,w.value=v,i.append(w)}i.options.length>0&&(i.options[0].selected=!0),t.setValue(e,{value:o(!0),items:h(g)}),l=o(!1)},indices(g){const m=new Set(g.detail.indices);for(const A of g.target.options)A.selected=m.has(A.index);t.setValue(e,{value:o(!0)}),l=o(!1)},editable(g){g.target.disabled=!g.detail.editable}};this._dispatchEventFromSandbox(f,c)}),i.addEventListener("input",c=>{var m;const f=o(!0),g=o(!1);t.setValue(e,{value:f}),c.preventDefault(),(m=this.linkService.eventBus)==null||m.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:l,change:g,changeEx:f,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(i,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],c=>c.target.value)):i.addEventListener("input",function(c){t.setValue(e,{value:o(!0)})}),this.data.combo&&this._setTextStyle(i),this._setBackgroundColor(i),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}}class ag extends bt{constructor(t){const{data:e,elements:s}=t;super(t,{isRenderable:bt._hasPopupData(e)}),this.elements=s,this.popup=null}render(){const{container:t}=this;t.classList.add("popupAnnotation"),t.role="comment";const e=this.popup=new bw({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate||this.data.creationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open,eventBus:this.linkService.eventBus}),s=[];for(const i of this.elements)i.popup=e,i.container.ariaHasPopup="dialog",s.push(i.data.id),i.addHighlightArea();return this.container.setAttribute("aria-controls",s.map(i=>`${Hg}${i}`).join(",")),this.container}}var xr,af,of,kr,Co,ft,ui,hn,fi,hc,cc,To,Es,ye,pi,gi,dc,cn,xo,uc,mi,ko,Pr,dn,Po,Dd,lf,Ob,hf,Bb,Mo,Ld,fc,og,cf,Hb,df,$b,uf,zb,ff,Gb,Ro,Id,Do,Fd,pc,lg;class bw{constructor({container:t,color:e,elements:s,titleObj:i,modificationDate:r,contentsObj:a,richText:o,parent:l,rect:h,parentRect:c,open:f,eventBus:g=null}){d(this,Po);d(this,lf);d(this,hf);d(this,Mo);d(this,fc);d(this,cf);d(this,df);d(this,uf);d(this,ff);d(this,Ro);d(this,Do);d(this,pc);d(this,xr,b(this,uf,zb).bind(this));d(this,af,b(this,pc,lg).bind(this));d(this,of,b(this,Do,Fd).bind(this));d(this,kr,b(this,Ro,Id).bind(this));d(this,Co,null);d(this,ft,null);d(this,ui,null);d(this,hn,null);d(this,fi,null);d(this,hc,null);d(this,cc,null);d(this,To,null);d(this,Es,!1);d(this,ye,null);d(this,pi,null);d(this,gi,null);d(this,dc,null);d(this,cn,null);d(this,xo,null);d(this,uc,null);d(this,mi,null);d(this,ko,null);d(this,Pr,null);d(this,dn,!1);p(this,ft,t),p(this,ko,i),p(this,ui,a),p(this,mi,o),p(this,cc,l),p(this,Co,e),p(this,uc,h),p(this,To,c),p(this,fi,s),p(this,hc,g),p(this,hn,Qd.toDateObject(r)),this.trigger=s.flatMap(m=>m.getElementsToTriggerPopup()),b(this,Po,Dd).call(this),n(this,ft).hidden=!0,f&&b(this,Ro,Id).call(this)}render(){var i;if(n(this,ye))return;const t=p(this,ye,document.createElement("div"));if(t.className="popup",n(this,Co)){const r=t.style.outlineColor=I.makeHexColor(...n(this,Co));t.style.backgroundColor=`color-mix(in srgb, ${r} 30%, white)`}const e=document.createElement("span");if(e.className="header",(i=n(this,ko))!=null&&i.str){const r=document.createElement("span");r.className="title",e.append(r),{dir:r.dir,str:r.textContent}=n(this,ko)}if(t.append(e),n(this,hn)){const r=document.createElement("time");r.className="popupDate",r.setAttribute("data-l10n-id","pdfjs-annotation-date-time-string"),r.setAttribute("data-l10n-args",JSON.stringify({dateObj:n(this,hn).valueOf()})),r.dateTime=n(this,hn).toISOString(),e.append(r)}const s=n(this,Mo,Ld);if(s)Db.render({xfaHtml:s,intent:"richText",div:t}),t.lastChild.classList.add("richText","popupContent");else{const r=this._formatContents(n(this,ui));t.append(r)}n(this,ft).append(t)}_formatContents({str:t,dir:e}){const s=document.createElement("p");s.classList.add("popupContent"),s.dir=e;const i=t.split(/(?:\r\n?|\n)/);for(let r=0,a=i.length;re.hasCommentButton);t&&(p(this,cn,t._normalizePoint(t.commentButtonPosition)),p(this,xo,t.commentButtonColor))},hf=new WeakSet,Bb=function(){if(n(this,dc)||(n(this,cn)||b(this,lf,Ob).call(this),!n(this,cn)))return;const t=p(this,dc,document.createElement("button"));t.className="annotationCommentButton";const e=n(this,fi)[0].container;t.style.zIndex=e.style.zIndex+1,t.tabIndex=0;const{signal:s}=n(this,pi);t.addEventListener("hover",n(this,kr),{signal:s}),t.addEventListener("keydown",n(this,xr),{signal:s}),t.addEventListener("click",()=>{var o;const[{data:{id:r},annotationEditorType:a}]=n(this,fi);(o=n(this,hc))==null||o.dispatch("switchannotationeditormode",{source:this,editId:r,mode:a,editComment:!0})},{signal:s});const{style:i}=t;i.left=`calc(${n(this,cn)[0]}%)`,i.top=`calc(${n(this,cn)[1]}% - var(--comment-button-dim))`,n(this,xo)&&(i.backgroundColor=n(this,xo)),e.after(t)},Mo=new WeakSet,Ld=function(){const t=n(this,mi),e=n(this,ui);return t!=null&&t.str&&(!(e!=null&&e.str)||e.str===t.str)&&n(this,mi).html||null},fc=new WeakSet,og=function(){var t,e,s;return((s=(e=(t=n(this,Mo,Ld))==null?void 0:t.attributes)==null?void 0:e.style)==null?void 0:s.fontSize)||0},cf=new WeakSet,Hb=function(){var t,e,s;return((s=(e=(t=n(this,Mo,Ld))==null?void 0:t.attributes)==null?void 0:e.style)==null?void 0:s.color)||null},df=new WeakSet,$b=function(t){const e=[],s={str:t,html:{name:"div",attributes:{dir:"auto"},children:[{name:"p",children:e}]}},i={style:{color:n(this,cf,Hb),fontSize:n(this,fc,og)?`calc(${n(this,fc,og)}px * var(--total-scale-factor))`:""}};for(const r of t.split(` `))e.push({name:"span",value:r,attributes:i});return s},uf=new WeakSet,zb=function(t){t.altKey||t.shiftKey||t.ctrlKey||t.metaKey||(t.key==="Enter"||t.key==="Escape"&&n(this,Es))&&b(this,Ro,Id).call(this)},ff=new WeakSet,Gb=function(){if(n(this,gi)!==null)return;const{page:{view:t},viewport:{rawDims:{pageWidth:e,pageHeight:s,pageX:i,pageY:r}}}=n(this,cc);let a=!!n(this,To),o=a?n(this,To):n(this,uc);for(const A of n(this,fi))if(!o||I.intersect(A.data.rect,o)!==null){o=A.data.rect,a=!0;break}const l=I.normalizeRect([o[0],t[3]-o[1]+t[1],o[2],t[3]-o[3]+t[1]]),h=5,c=a?o[2]-o[0]+h:0,f=l[0]+c,g=l[1];p(this,gi,[100*(f-i)/e,100*(g-r)/s]);const{style:m}=n(this,ft);m.left=`${n(this,gi)[0]}%`,m.top=`${n(this,gi)[1]}%`},Ro=new WeakSet,Id=function(){p(this,Es,!n(this,Es)),n(this,Es)?(b(this,Do,Fd).call(this),n(this,ft).addEventListener("click",n(this,kr)),n(this,ft).addEventListener("keydown",n(this,xr))):(b(this,pc,lg).call(this),n(this,ft).removeEventListener("click",n(this,kr)),n(this,ft).removeEventListener("keydown",n(this,xr)))},Do=new WeakSet,Fd=function(){n(this,ye)||this.render(),this.isVisible?n(this,Es)&&n(this,ft).classList.add("focused"):(b(this,ff,Gb).call(this),n(this,ft).hidden=!1,n(this,ft).style.zIndex=parseInt(n(this,ft).style.zIndex)+1e3)},pc=new WeakSet,lg=function(){n(this,ft).classList.remove("focused"),!(n(this,Es)||!this.isVisible)&&(n(this,ft).hidden=!0,n(this,ft).style.zIndex=parseInt(n(this,ft).style.zIndex)-1e3)};class Ub extends bt{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0}),this.textContent=t.data.textContent,this.textPosition=t.data.textPosition,this.annotationEditorType=$.FREETEXT}render(){if(this.container.classList.add("freeTextAnnotation"),this.textContent){const t=document.createElement("div");t.classList.add("annotationTextContent"),t.setAttribute("role","comment");for(const e of this.textContent){const s=document.createElement("span");s.textContent=e,t.append(s)}this.container.append(t)}return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this._editOnDoubleClick(),this.container}}var gc;class Aw extends bt{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0});d(this,gc,null)}render(){this.container.classList.add("lineAnnotation");const{data:e,width:s,height:i}=this,r=this.svgFactory.create(s,i,!0),a=p(this,gc,this.svgFactory.createElement("svg:line"));return a.setAttribute("x1",e.rect[2]-e.lineCoordinates[0]),a.setAttribute("y1",e.rect[3]-e.lineCoordinates[1]),a.setAttribute("x2",e.rect[2]-e.lineCoordinates[2]),a.setAttribute("y2",e.rect[3]-e.lineCoordinates[3]),a.setAttribute("stroke-width",e.borderStyle.width||1),a.setAttribute("stroke","transparent"),a.setAttribute("fill","transparent"),r.append(a),this.container.append(r),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return n(this,gc)}addHighlightArea(){this.container.classList.add("highlightArea")}}gc=new WeakMap;var mc;class yw extends bt{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0});d(this,mc,null)}render(){this.container.classList.add("squareAnnotation");const{data:e,width:s,height:i}=this,r=this.svgFactory.create(s,i,!0),a=e.borderStyle.width,o=p(this,mc,this.svgFactory.createElement("svg:rect"));return o.setAttribute("x",a/2),o.setAttribute("y",a/2),o.setAttribute("width",s-a),o.setAttribute("height",i-a),o.setAttribute("stroke-width",a||1),o.setAttribute("stroke","transparent"),o.setAttribute("fill","transparent"),r.append(o),this.container.append(r),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return n(this,mc)}addHighlightArea(){this.container.classList.add("highlightArea")}}mc=new WeakMap;var bc;class ww extends bt{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0});d(this,bc,null)}render(){this.container.classList.add("circleAnnotation");const{data:e,width:s,height:i}=this,r=this.svgFactory.create(s,i,!0),a=e.borderStyle.width,o=p(this,bc,this.svgFactory.createElement("svg:ellipse"));return o.setAttribute("cx",s/2),o.setAttribute("cy",i/2),o.setAttribute("rx",s/2-a/2),o.setAttribute("ry",i/2-a/2),o.setAttribute("stroke-width",a||1),o.setAttribute("stroke","transparent"),o.setAttribute("fill","transparent"),r.append(o),this.container.append(r),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return n(this,bc)}addHighlightArea(){this.container.classList.add("highlightArea")}}bc=new WeakMap;var Ac;class jb extends bt{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0});d(this,Ac,null);this.containerClassName="polylineAnnotation",this.svgElementName="svg:polyline"}render(){this.container.classList.add(this.containerClassName);const{data:{rect:e,vertices:s,borderStyle:i,popupRef:r},width:a,height:o}=this;if(!s)return this.container;const l=this.svgFactory.create(a,o,!0);let h=[];for(let f=0,g=s.length;f=0&&a.setAttribute("stroke-width",s||1),i)for(let o=0,l=n(this,Mr).length;o=1){let i=-1/0,r=-1/0;for(const a of e)for(let o=0,l=a.length;or?(r=a[o+1],i=a[o]):a[o+1]===r&&(i=Math.max(i,a[o]));if(i!==1/0)return[i,r]}return s?[s[2],s[3]]:null}}yc=new WeakMap,Mr=new WeakMap,wc=new WeakSet,hg=function(e,s){switch(e){case 90:return{transform:`rotate(90) translate(${-s[0]},${s[1]}) scale(1,-1)`,width:s[3]-s[1],height:s[2]-s[0]};case 180:return{transform:`rotate(180) translate(${-s[2]},${s[1]}) scale(1,-1)`,width:s[2]-s[0],height:s[3]-s[1]};case 270:return{transform:`rotate(270) translate(${-s[2]},${s[3]}) scale(1,-1)`,width:s[3]-s[1],height:s[2]-s[0]};default:return{transform:`translate(${-s[0]},${s[3]}) scale(1,-1)`,width:s[2]-s[0],height:s[3]-s[1]}}};class Vb extends bt{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0}),this.annotationEditorType=$.HIGHLIGHT}render(){const{data:{overlaidText:t,popupRef:e}}=this;if(!e&&this.hasPopupData&&this._createPopup(),this.container.classList.add("highlightAnnotation"),this._editOnDoubleClick(),t){const s=document.createElement("mark");s.classList.add("overlaidText"),s.textContent=t,this.container.append(s)}return this.container}}class Sw extends bt{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){const{data:{overlaidText:t,popupRef:e}}=this;if(!e&&this.hasPopupData&&this._createPopup(),this.container.classList.add("underlineAnnotation"),t){const s=document.createElement("u");s.classList.add("overlaidText"),s.textContent=t,this.container.append(s)}return this.container}}class Ew extends bt{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){const{data:{overlaidText:t,popupRef:e}}=this;if(!e&&this.hasPopupData&&this._createPopup(),this.container.classList.add("squigglyAnnotation"),t){const s=document.createElement("u");s.classList.add("overlaidText"),s.textContent=t,this.container.append(s)}return this.container}}class Cw extends bt{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){const{data:{overlaidText:t,popupRef:e}}=this;if(!e&&this.hasPopupData&&this._createPopup(),this.container.classList.add("strikeoutAnnotation"),t){const s=document.createElement("s");s.classList.add("overlaidText"),s.textContent=t,this.container.append(s)}return this.container}}class Wb extends bt{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0}),this.annotationEditorType=$.STAMP}render(){return this.container.classList.add("stampAnnotation"),this.container.setAttribute("role","img"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this._editOnDoubleClick(),this.container}}var vc,_c,cg;class Tw extends bt{constructor(e){var i;super(e,{isRenderable:!0});d(this,_c);d(this,vc,null);const{file:s}=this.data;this.filename=s.filename,this.content=s.content,(i=this.linkService.eventBus)==null||i.dispatch("fileattachmentannotation",{source:this,...s})}render(){this.container.classList.add("fileAttachmentAnnotation");const{container:e,data:s}=this;let i;s.hasAppearance||s.fillAlpha===0?i=document.createElement("div"):(i=document.createElement("img"),i.src=`${this.imageResourcesPath}annotation-${/paperclip/i.test(s.name)?"paperclip":"pushpin"}.svg`,s.fillAlpha&&s.fillAlpha<1&&(i.style=`filter: opacity(${Math.round(s.fillAlpha*100)}%);`)),i.addEventListener("dblclick",b(this,_c,cg).bind(this)),p(this,vc,i);const{isMac:r}=Wt.platform;return e.addEventListener("keydown",a=>{a.key==="Enter"&&(r?a.metaKey:a.ctrlKey)&&b(this,_c,cg).call(this)}),!s.popupRef&&this.hasPopupData?this._createPopup():i.classList.add("popupTriggerArea"),e.append(i),e}getElementsToTriggerPopup(){return n(this,vc)}addHighlightArea(){this.container.classList.add("highlightArea")}}vc=new WeakMap,_c=new WeakSet,cg=function(){var e;(e=this.downloadManager)==null||e.openOrDownloadData(this.content,this.filename)};var Sc,Rr,un,Ec,Cc,ug,Tc,fg;const tm=class tm{constructor({div:t,accessibilityManager:e,annotationCanvasMap:s,annotationEditorUIManager:i,page:r,viewport:a,structTreeLayer:o}){d(this,Cc);d(this,Tc);d(this,Sc,null);d(this,Rr,null);d(this,un,new Map);d(this,Ec,null);this.div=t,p(this,Sc,e),p(this,Rr,s),p(this,Ec,o||null),this.page=r,this.viewport=a,this.zIndex=0,this._annotationEditorUIManager=i}hasEditableAnnotations(){return n(this,un).size>0}async render(t){var a;const{annotations:e}=t,s=this.div;ra(s,this.viewport);const i=new Map,r={data:null,layer:s,linkService:t.linkService,downloadManager:t.downloadManager,imageResourcesPath:t.imageResourcesPath||"",renderForms:t.renderForms!==!1,svgFactory:new iu,annotationStorage:t.annotationStorage||new Gg,enableComment:t.enableComment===!0,enableScripting:t.enableScripting===!0,hasJSActions:t.hasJSActions,fieldObjects:t.fieldObjects,parent:this,elements:null};for(const o of e){if(o.noHTML)continue;const l=o.annotationType===wt.POPUP;if(l){const f=i.get(o.id);if(!f)continue;r.elements=f}else if(o.rect[2]===o.rect[0]||o.rect[3]===o.rect[1])continue;r.data=o;const h=_m.create(r);if(!h.isRenderable)continue;if(!l&&o.popupRef){const f=i.get(o.popupRef);f?f.push(h):i.set(o.popupRef,[h])}const c=h.render();o.hidden&&(c.style.visibility="hidden"),await b(this,Cc,ug).call(this,c,o.id,r.elements),h._isEditable&&(n(this,un).set(h.data.id,h),(a=this._annotationEditorUIManager)==null||a.renderAnnotationElement(h))}b(this,Tc,fg).call(this)}async addLinkAnnotations(t,e){const s={data:null,layer:this.div,linkService:e,svgFactory:new iu,parent:this};for(const i of t){i.borderStyle||(i.borderStyle=tm._defaultBorderStyle),s.data=i;const r=_m.create(s);if(!r.isRenderable)continue;const a=r.render();await b(this,Cc,ug).call(this,a,i.id,null)}}update({viewport:t}){const e=this.div;this.viewport=t,ra(e,{rotation:t.rotation}),b(this,Tc,fg).call(this),e.hidden=!1}getEditableAnnotations(){return Array.from(n(this,un).values())}getEditableAnnotation(t){return n(this,un).get(t)}static get _defaultBorderStyle(){return V(this,"_defaultBorderStyle",Object.freeze({width:1,rawWidth:1,style:da.SOLID,dashArray:[3],horizontalCornerRadius:0,verticalCornerRadius:0}))}};Sc=new WeakMap,Rr=new WeakMap,un=new WeakMap,Ec=new WeakMap,Cc=new WeakSet,ug=async function(t,e,s){var o,l;const i=t.firstChild||t,r=i.id=`${Hg}${e}`,a=await((o=n(this,Ec))==null?void 0:o.getAriaAttributes(r));if(a)for(const[h,c]of a)i.setAttribute(h,c);s?s.at(-1).container.after(t):(this.div.append(t),(l=n(this,Sc))==null||l.moveElementInDOM(this.div,t,i,!1))},Tc=new WeakSet,fg=function(){var e;if(!n(this,Rr))return;const t=this.div;for(const[s,i]of n(this,Rr)){const r=t.querySelector(`[data-annotation-id="${s}"]`);if(!r)continue;i.className="annotationContent";const{firstChild:a}=r;a?a.nodeName==="CANVAS"?a.replaceWith(i):a.classList.contains("annotationContent")?a.after(i):a.before(i):r.append(i);const o=n(this,un).get(s);o&&(o._hasNoCanvas?((e=this._annotationEditorUIManager)==null||e.setMissingCanvas(s,r.id,i),o._hasNoCanvas=!1):o.canvas=i)}n(this,Rr).clear()};let dg=tm;const Ad=/\r\n?|\n/g;var He,we,xc,Dr,ve,pf,Xb,gf,qb,mf,Yb,Lo,Nd,Io,Od,Fo,Bd,bf,Kb,kc,gg,Af,Qb;const nt=class nt extends rt{constructor(e){super({...e,name:"freeTextEditor"});d(this,pf);d(this,gf);d(this,mf);d(this,Lo);d(this,Fo);d(this,bf);d(this,Af);d(this,He,void 0);d(this,we,"");d(this,xc,`${this.id}-editor`);d(this,Dr,null);d(this,ve,void 0);k(this,"_colorPicker",null);p(this,He,e.color||nt._defaultColor||rt._defaultLineColor),p(this,ve,e.fontSize||nt._defaultFontSize),this.annotationElementId||this._uiManager.a11yAlert("pdfjs-editor-freetext-added-alert")}static get _keyboardManager(){const e=nt.prototype,s=a=>a.isEmpty(),i=aa.TRANSLATE_SMALL,r=aa.TRANSLATE_BIG;return V(this,"_keyboardManager",new hd([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],e.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],e.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],e._translateEmpty,{args:[-i,0],checker:s}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],e._translateEmpty,{args:[-r,0],checker:s}],[["ArrowRight","mac+ArrowRight"],e._translateEmpty,{args:[i,0],checker:s}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],e._translateEmpty,{args:[r,0],checker:s}],[["ArrowUp","mac+ArrowUp"],e._translateEmpty,{args:[0,-i],checker:s}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],e._translateEmpty,{args:[0,-r],checker:s}],[["ArrowDown","mac+ArrowDown"],e._translateEmpty,{args:[0,i],checker:s}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],e._translateEmpty,{args:[0,r],checker:s}]]))}static initialize(e,s){rt.initialize(e,s);const i=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(i.getPropertyValue("--freetext-padding"))}static updateDefaultParams(e,s){switch(e){case X.FREETEXT_SIZE:nt._defaultFontSize=s;break;case X.FREETEXT_COLOR:nt._defaultColor=s;break}}updateParams(e,s){switch(e){case X.FREETEXT_SIZE:b(this,pf,Xb).call(this,s);break;case X.FREETEXT_COLOR:b(this,gf,qb).call(this,s);break}}static get defaultPropertiesToUpdate(){return[[X.FREETEXT_SIZE,nt._defaultFontSize],[X.FREETEXT_COLOR,nt._defaultColor||rt._defaultLineColor]]}get propertiesToUpdate(){return[[X.FREETEXT_SIZE,n(this,ve)],[X.FREETEXT_COLOR,n(this,He)]]}get toolbarButtons(){return this._colorPicker||(this._colorPicker=new su(this)),[["colorPicker",this._colorPicker]]}get colorType(){return X.FREETEXT_COLOR}get colorValue(){return n(this,He)}_translateEmpty(e,s){this._uiManager.translateSelectedEditors(e,s,!0)}getInitialTranslation(){const e=this.parentScale;return[-nt._internalPadding*e,-(nt._internalPadding+n(this,ve))*e]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(!super.enableEditMode())return!1;this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),p(this,Dr,new AbortController);const e=this._uiManager.combinedSignal(n(this,Dr));return this.editorDiv.addEventListener("keydown",this.editorDivKeydown.bind(this),{signal:e}),this.editorDiv.addEventListener("focus",this.editorDivFocus.bind(this),{signal:e}),this.editorDiv.addEventListener("blur",this.editorDivBlur.bind(this),{signal:e}),this.editorDiv.addEventListener("input",this.editorDivInput.bind(this),{signal:e}),this.editorDiv.addEventListener("paste",this.editorDivPaste.bind(this),{signal:e}),!0}disableEditMode(){var e;return super.disableEditMode()?(this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",n(this,xc)),this._isDraggable=!0,(e=n(this,Dr))==null||e.abort(),p(this,Dr,null),this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freetextEditing"),!0):!1}focusin(e){this._focusEventsAllowed&&(super.focusin(e),e.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(e){var s;this.width||(this.enableEditMode(),e&&this.editorDiv.focus(),(s=this._initialOptions)!=null&&s.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||this.editorDiv.innerText.trim()===""}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freetextEditing")),super.remove()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();const e=n(this,we),s=p(this,we,b(this,mf,Yb).call(this).trimEnd());if(e===s)return;const i=r=>{if(p(this,we,r),!r){this.remove();return}b(this,Fo,Bd).call(this),this._uiManager.rebuild(this),b(this,Lo,Nd).call(this)};this.addCommands({cmd:()=>{i(s)},undo:()=>{i(e)},mustExec:!1}),b(this,Lo,Nd).call(this)}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}keydown(e){e.target===this.div&&e.key==="Enter"&&(this.enterInEditMode(),e.preventDefault())}editorDivKeydown(e){nt._keyboardManager.exec(this,e)}editorDivFocus(e){this.isEditing=!0}editorDivBlur(e){this.isEditing=!1}editorDivInput(e){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}get canChangeContent(){return!0}render(){if(this.div)return this.div;let e,s;(this._isCopy||this.annotationElementId)&&(e=this.x,s=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",n(this,xc)),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text2"),this.editorDiv.setAttribute("data-l10n-attrs","default-content"),this.enableEditing(),this.editorDiv.contentEditable=!0;const{style:i}=this.editorDiv;if(i.fontSize=`calc(${n(this,ve)}px * var(--total-scale-factor))`,i.color=n(this,He),this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),this._isCopy||this.annotationElementId){const[r,a]=this.parentDimensions;if(this.annotationElementId){const{position:o}=this._initialData;let[l,h]=this.getInitialTranslation();[l,h]=this.pageTranslationToScreen(l,h);const[c,f]=this.pageDimensions,[g,m]=this.pageTranslation;let A,y;switch(this.rotation){case 0:A=e+(o[0]-g)/c,y=s+this.height-(o[1]-m)/f;break;case 90:A=e+(o[0]-g)/c,y=s-(o[1]-m)/f,[l,h]=[h,-l];break;case 180:A=e-this.width+(o[0]-g)/c,y=s-(o[1]-m)/f,[l,h]=[-l,-h];break;case 270:A=e+(o[0]-g-this.height*f)/c,y=s+(o[1]-m-this.width*c)/f,[l,h]=[-h,l];break}this.setAt(A*r,y*a,l,h)}else this._moveAfterPaste(e,s);b(this,Fo,Bd).call(this),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}editorDivPaste(e){var A,y,v;const s=e.clipboardData||window.clipboardData,{types:i}=s;if(i.length===1&&i[0]==="text/plain")return;e.preventDefault();const r=b(A=nt,kc,gg).call(A,s.getData("text")||"").replaceAll(Ad,` diff --git a/frontend/dist/index.html b/frontend/dist/index.html index 60bed75..8c63621 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -23,8 +23,8 @@ flex-direction: column; } - - + +
    diff --git a/frontend/src/components/AISidebar.vue b/frontend/src/components/AISidebar.vue index 28a89b5..5be1371 100644 --- a/frontend/src/components/AISidebar.vue +++ b/frontend/src/components/AISidebar.vue @@ -292,7 +292,27 @@ const generateMarkdownFromFile = async () => { markdownContent.value = ''; // 调用流式AI API生成Markdown - const systemPrompt = '你是一个专业的文档分析专家。请分析上传的文档内容,生成结构化的Markdown格式思维导图。要求:1. 提取主要主题和关键概念 2. 组织成层次分明的结构 3. 使用清晰的标题和子标题 4. 保持内容的逻辑性和完整性'; + const systemPrompt = `你是一个专业的文档分析专家。请分析上传的文档内容,生成结构化的Markdown格式思维导图。要求: +1. 提取主要主题和关键概念 +2. 组织成层次分明的结构 +3. 使用清晰的标题和子标题 +4. 保持内容的逻辑性和完整性 +5. 对于长文档,请确保完整处理所有内容,不要截断 +6. **重要:如果原文档中包含图片,请按以下方式处理: + - 识别图片在文档中的位置和上下文 + - 根据图片内容生成准确的描述文字 + - 在相应位置插入图片占位符:![图片描述](图片路径) + - 图片描述要准确反映图片内容,图片路径可以是相对路径或占位符 + - 确保图片占位符放在逻辑上合适的位置** +7. **重要:如果原文档中包含表格,请完整保留表格结构: + - 保持表格的Markdown格式 + - 确保所有表格行都被包含 + - 不要省略任何表格内容** +8. **重要:确保内容完整性: + - 不要截断任何内容 + - 保持原文的完整性 + - 所有重要信息都要包含在思维导图中** +9. 输出格式:直接输出Markdown内容,不要添加任何说明文字或代码块标记`; const userPrompt = `请分析以下文档内容并生成结构化Markdown:\n\n${fileContent}`; // 关键修改:使用流式API而不是非流式API @@ -464,6 +484,55 @@ const generateMarkdown = async () => { } }; +// 清理AI返回的内容,移除多余的说明文字 +const cleanAIResponse = (content) => { + if (!content) return content; + + let cleaned = content + // 移除常见的AI开头说明文字 - 更全面的匹配 + .replace(/^好的[,,]?作为.*?专家[,,]?我已.*?分析.*?内容.*?生成了以下.*?思维导图[::]\s*/i, '') + .replace(/^好的[,,]?作为.*?专业的.*?专家[,,]?我已.*?分析.*?内容.*?生成了以下.*?思维导图[::]\s*/i, '') + .replace(/^以下是.*?结构化的.*?思维导图[::]\s*/i, '') + .replace(/^以下是.*?Markdown.*?思维导图[::]\s*/i, '') + .replace(/^以下是.*?Markdown.*?格式.*?思维导图[::]\s*/i, '') + // 移除代码块标记 + .replace(/^```(?:markdown)?\s*/gm, '') + .replace(/```\s*$/gm, '') + // 移除多余的引号和标记 - 更精确的匹配 + .replace(/^「」`markdown\s*/gm, '') + .replace(/^「」`\s*/gm, '') + .replace(/^\s*「」`markdown\s*/gm, '') + .replace(/^\s*「」`\s*/gm, '') + // 移除其他可能的AI开头模式 + .replace(/^作为.*?专家[,,]?我已.*?分析.*?内容.*?生成了以下.*?思维导图[::]\s*/i, '') + .replace(/^我已.*?分析.*?内容.*?生成了以下.*?思维导图[::]\s*/i, '') + .replace(/^根据.*?文档内容.*?生成了以下.*?思维导图[::]\s*/i, '') + .replace(/^基于.*?文档.*?生成了以下.*?思维导图[::]\s*/i, '') + // 移除更多可能的开头模式 + .replace(/^以下是.*?分析.*?结果[::]\s*/i, '') + .replace(/^以下是.*?整理.*?结果[::]\s*/i, '') + .replace(/^以下是.*?结构化.*?内容[::]\s*/i, '') + // 移除多余的换行 + .replace(/\n{3,}/g, '\n\n') + // 清理开头和结尾的空白 + .trim(); + + return cleaned; +}; + +// 防抖函数 +const debounce = (func, wait) => { + let timeout; + return function executedFunction(...args) { + const later = () => { + clearTimeout(timeout); + func(...args); + }; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; +}; + // 调用AI API生成Markdown // 流式AI API调用 const callAIStreamAPI = async (systemPrompt, userPrompt) => { @@ -497,7 +566,14 @@ Level 4 标题用 ##### 保持段落和换行不变。 -输出格式: 输出必须是纯Markdown格式的文本,不得包含任何额外说明、JSON或非Markdown元素。确保输出与示例风格一致。`; +**重要:如果原文档中包含图片,请按以下方式处理: +1. 识别图片在文档中的位置和上下文 +2. 根据图片内容生成准确的描述文字 +3. 在相应位置插入图片占位符:![图片描述](图片路径) +4. 图片描述要准确反映图片内容,图片路径可以是相对路径或占位符 +5. 确保图片占位符放在逻辑上合适的位置** + +输出格式: 输出必须是纯Markdown格式的文本,不得包含任何额外说明、JSON或非Markdown元素。确保输出与示例风格一致。直接输出Markdown内容,不要添加任何说明文字。`; const finalSystemPrompt = systemPrompt || defaultSystemPrompt; const finalUserPrompt = userPrompt || `请将以下内容转换为结构化的Markdown格式:`; @@ -548,28 +624,57 @@ Level 4 标题用 ##### // 实时更新Markdown内容 markdownContent.value += data.content; - // 实时转换为JSON并更新显示 - try { - const tempJSON = markdownToJSON(markdownContent.value); - convertedJSON.value = JSON.stringify(tempJSON, null, 2); - - // 🎯 关键:实时更新思维导图显示 - window.dispatchEvent(new CustomEvent('realtime-mindmap-update', { - detail: { - data: tempJSON, - title: tempJSON.topic || 'AI生成中...', - source: 'ai-streaming', - chunkCount: chunkCount - } - })); - - } catch (e) { - // 忽略转换错误,继续接收数据 - console.warn('⚠️ 实时转换JSON失败:', e); - console.warn('⚠️ 当前Markdown内容:', markdownContent.value); + // 优化:减少实时更新频率,每5个chunk更新一次 + if (chunkCount % 5 === 0) { + try { + // 清理AI返回的多余内容 + const cleanedContent = cleanAIResponse(markdownContent.value); + const tempJSON = markdownToJSON(cleanedContent); + convertedJSON.value = JSON.stringify(tempJSON, null, 2); + + // 🎯 关键:实时更新思维导图显示 + window.dispatchEvent(new CustomEvent('realtime-mindmap-update', { + detail: { + data: tempJSON, + title: tempJSON.topic || 'AI生成中...', + source: 'ai-streaming', + chunkCount: chunkCount + } + })); + + } catch (e) { + // 忽略转换错误,继续接收数据 + console.warn('⚠️ 实时转换JSON失败:', e); + } } } else if (data.type === 'end') { showNotification('AI内容生成完成!', 'success'); + + // 最终处理:确保所有内容都被正确处理 + try { + const finalCleanedContent = cleanAIResponse(markdownContent.value); + console.log('🎯 最终内容长度:', finalCleanedContent.length); + console.log('🎯 最终内容预览:', finalCleanedContent.substring(0, 500) + '...'); + + // 统计图片数量 + const allImages = extractImageFromContent(finalCleanedContent); + console.log(`🖼️ 最终统计:共发现 ${allImages.length} 张图片`); + + const finalJSON = markdownToJSON(finalCleanedContent); + convertedJSON.value = JSON.stringify(finalJSON, null, 2); + + // 最终更新思维导图 + window.dispatchEvent(new CustomEvent('realtime-mindmap-update', { + detail: { + data: finalJSON, + title: finalJSON.topic || 'AI生成完成', + source: 'ai-final', + chunkCount: chunkCount + } + })); + } catch (e) { + console.error('⚠️ 最终处理失败:', e); + } } else if (data.type === 'error') { throw new Error(data.content); } @@ -616,7 +721,14 @@ Level 4 标题用 ##### 保持段落和换行不变。 -输出格式: 输出必须是纯Markdown格式的文本,不得包含任何额外说明、JSON或非Markdown元素。确保输出与示例风格一致。`; +**重要:如果原文档中包含图片,请按以下方式处理: +1. 识别图片在文档中的位置和上下文 +2. 根据图片内容生成准确的描述文字 +3. 在相应位置插入图片占位符:![图片描述](图片路径) +4. 图片描述要准确反映图片内容,图片路径可以是相对路径或占位符 +5. 确保图片占位符放在逻辑上合适的位置** + +输出格式: 输出必须是纯Markdown格式的文本,不得包含任何额外说明、JSON或非Markdown元素。确保输出与示例风格一致。直接输出Markdown内容,不要添加任何说明文字。`; // 如果没有提供系统提示词,使用默认的 const finalSystemPrompt = systemPrompt || defaultSystemPrompt; @@ -631,7 +743,7 @@ Level 4 标题用 ##### // 添加超时处理 - 增加超时时间,处理复杂文档 const controller = new AbortController(); - const timeoutId = setTimeout(() => controller.abort(), 60000); // 减少到1分钟超时 + const timeoutId = setTimeout(() => controller.abort(), 300000); // 增加到5分钟超时 const response = await fetch('http://127.0.0.1:8000/api/ai/generate-markdown', { method: 'POST', @@ -732,6 +844,8 @@ const formatMarkdownToText = (markdown) => { } } + // 图片现在通过MindElixir原生image属性处理,不需要特殊处理 + return markdown // 处理标题 .replace(/^### (.*$)/gim, '📋 $1') // 三级标题 @@ -759,9 +873,22 @@ const formatMarkdownToText = (markdown) => { .replace(/`(.*?)`/g, '「$1」') // 处理链接 .replace(/\[([^\]]+)\]\([^)]+\)/g, '🔗 $1') - // 处理换行 + // 图片通过MindElixir原生image属性处理,保留图片占位符用于后续处理 + .replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '[图片: $1]') + // 处理换行 - 优化换行处理,避免错位 .replace(/\n\n/g, '\n') - .replace(/\n/g, '\n '); + .replace(/\n/g, '\n ') + // 限制单行长度,避免节点过宽导致错位 + .split('\n') + .map(line => { + // 如果行太长,进行智能截断 + if (line.length > 80) { + return line.substring(0, 77) + '...'; + } + return line; + }) + .join('\n') + .trim(); }; // Markdown转JSON @@ -773,7 +900,9 @@ const convertToJSON = async () => { isConverting.value = true; try { - const json = markdownToJSON(markdownContent.value); + // 清理AI返回的多余内容 + const cleanedContent = cleanAIResponse(markdownContent.value); + const json = markdownToJSON(cleanedContent); convertedJSON.value = JSON.stringify(json, null, 2); } catch (error) { console.error('转换失败:', error); @@ -795,6 +924,29 @@ const countNodes = (node) => { return count; }; +// 提取图片信息的辅助函数 +const extractImageFromContent = (content) => { + const imageRegex = /!\[([^\]]*)\]\(([^)]+)\)/g; + const images = []; + let match; + + while ((match = imageRegex.exec(content)) !== null) { + images.push({ + alt: match[1] || '', + url: match[2], + fullMatch: match[0] + }); + } + + console.log(`🔍 从内容中提取到 ${images.length} 张图片:`, images); + return images; +}; + +// 从内容中移除图片Markdown语法 +const removeImageMarkdown = (content) => { + return content.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '').trim(); +}; + // Markdown转JSON的核心逻辑 - 智能层次化版本 const markdownToJSON = (markdown) => { const lines = markdown.split('\n'); @@ -823,8 +975,13 @@ const markdownToJSON = (markdown) => { const level = match[1].length; const title = match[2].trim(); - // 清理标题中的Markdown语法 - const cleanTitle = formatMarkdownToText(title); + // 检查标题中是否包含图片 + const titleImages = extractImageFromContent(title); + const cleanTitle = removeImageMarkdown(formatMarkdownToText(title)); + + if (titleImages.length > 0) { + console.log(`🖼️ 在标题中发现 ${titleImages.length} 张图片: ${title}`); + } // 创建节点 const node = { @@ -835,6 +992,17 @@ const markdownToJSON = (markdown) => { data: {}, }; + // 如果标题中有图片,使用第一个图片作为节点图片 + if (titleImages.length > 0) { + node.image = { + url: titleImages[0].url, + width: 120, + height: 80, + fit: 'contain' + }; + console.log(`🖼️ 为标题节点设置图片: ${titleImages[0].url}`); + } + // 如果是第一个节点(最高级别),设为根节点 if (level === 1 && !root) { root = node; @@ -888,7 +1056,42 @@ const markdownToJSON = (markdown) => { // 智能处理内容,检测是否需要创建子节点 const processContentIntelligently = (content, parentNode, nodeCounter) => { - // 首先检查整个内容是否是表格 + // 首先检查是否包含图片内容 + const images = extractImageFromContent(content); + if (images.length > 0) { + console.log(`🖼️ 在内容中发现 ${images.length} 张图片`); + + // 为每个图片创建单独的节点 + images.forEach((image, index) => { + const imageNode = { + id: `node_${nodeCounter++}`, + topic: image.alt || `图片 ${index + 1}`, + children: [], + level: (parentNode.level || 0) + 1, + image: { + url: image.url, + width: 120, + height: 80, + fit: 'contain' + }, + data: {} + }; + parentNode.children.push(imageNode); + console.log(`🖼️ 创建图片节点: ${imageNode.topic} - ${image.url}`); + }); + + // 移除图片后的内容 + const contentWithoutImages = removeImageMarkdown(content); + if (contentWithoutImages.trim()) { + // 递归处理剩余内容 + const processedContent = processContentIntelligently(contentWithoutImages, parentNode, nodeCounter); + nodeCounter = processedContent.nodeCounter; + } + + return { nodeCounter }; + } + + // 然后检查整个内容是否是表格 if (hasTableContent(content)) { console.log('🎯 检测到表格内容,创建表格节点'); const tableNode = { @@ -1005,6 +1208,7 @@ const processContentIntelligently = (content, parentNode, nodeCounter) => { return { nodeCounter: currentNodeCounter }; }; + // 检测内容是否包含表格 const hasTableContent = (content) => { if (!content || typeof content !== 'string') { diff --git a/frontend/src/components/MindMap.vue b/frontend/src/components/MindMap.vue index 7e68cb9..e6ea6cb 100644 --- a/frontend/src/components/MindMap.vue +++ b/frontend/src/components/MindMap.vue @@ -367,15 +367,11 @@ const loadMindmapData = async (data, keepPosition = false, shouldCenterRoot = tr maxScale: 5, minScale: 0.1, markdown: (text, nodeObj) => { - console.log('🔍 Mind Elixir markdown函数被调用:', text.substring(0, 100) + '...'); - // 直接检查内容是否包含表格或其他markdown语法 - if (text.includes('|') || text.includes('**') || text.includes('`') || text.includes('#')) { - console.log('🎨 检测到markdown内容,开始渲染:', text.substring(0, 100) + '...'); + // 检查内容是否包含markdown语法(包括图片) + if (text.includes('|') || text.includes('**') || text.includes('`') || text.includes('#') || text.includes('![')) { const result = smartRenderNodeContent(text); - console.log('🎨 渲染结果:', result.substring(0, 200) + '...'); return result; } - console.log('🔍 内容不包含markdown语法,返回原文本'); return text; } }); @@ -422,8 +418,8 @@ const loadMindmapData = async (data, keepPosition = false, shouldCenterRoot = tr maxScale: 5, minScale: 0.1, markdown: (text, nodeObj) => { - // 直接检查内容是否包含表格或其他markdown语法 - if (text.includes('|') || text.includes('**') || text.includes('`') || text.includes('#')) { + // 检查内容是否包含markdown语法(包括图片) + if (text.includes('|') || text.includes('**') || text.includes('`') || text.includes('#') || text.includes('![')) { return smartRenderNodeContent(text); } return text; @@ -484,8 +480,8 @@ const loadMindmapData = async (data, keepPosition = false, shouldCenterRoot = tr maxScale: 5, minScale: 0.1, markdown: (text, nodeObj) => { - // 直接检查内容是否包含表格或其他markdown语法 - if (text.includes('|') || text.includes('**') || text.includes('`') || text.includes('#')) { + // 检查内容是否包含markdown语法(包括图片) + if (text.includes('|') || text.includes('**') || text.includes('`') || text.includes('#') || text.includes('![')) { return smartRenderNodeContent(text); } return text; @@ -3494,15 +3490,11 @@ const updateMindMapRealtime = async (data, title) => { maxScale: 5, minScale: 0.1, markdown: (text, nodeObj) => { - // console.log('🔍 实时更新 Mind Elixir markdown函数被调用:', text.substring(0, 100) + '...'); - // 直接检查内容是否包含表格、数学公式或其他markdown语法 - if (text.includes('|') || text.includes('**') || text.includes('`') || text.includes('#') || text.includes('$')) { - console.log('🎨 实时更新 检测到markdown内容,开始渲染:', text.substring(0, 100) + '...'); + // 检查内容是否包含markdown语法(包括图片和数学公式) + if (text.includes('|') || text.includes('**') || text.includes('`') || text.includes('#') || text.includes('$') || text.includes('![')) { const result = smartRenderNodeContent(text); - console.log('🎨 实时更新 渲染结果:', result.substring(0, 200) + '...'); return result; } - console.log('🔍 实时更新 内容不包含markdown语法,返回原文本'); return text; } }); diff --git a/frontend/src/lib/mind-elixir/src/utils/dom.ts b/frontend/src/lib/mind-elixir/src/utils/dom.ts index c5063bc..dad5fb4 100644 --- a/frontend/src/lib/mind-elixir/src/utils/dom.ts +++ b/frontend/src/lib/mind-elixir/src/utils/dom.ts @@ -3,6 +3,7 @@ import type { Topic, Wrapper, Parent, Children, Expander } from '../types/dom' import type { MindElixirInstance, NodeObj } from '../types/index' import { encodeHTML } from '../utils/index' import { layoutChildren } from './layout' +// 移除imageProcessor引用,使用MindElixir原生image属性 // DOM manipulation const $d = document @@ -55,7 +56,8 @@ export const shapeTpc = function (this: MindElixirInstance, tpc: Topic, nodeObj: if (this.markdown) { textEl.innerHTML = this.markdown(nodeObj.topic, nodeObj) } else { - textEl.textContent = nodeObj.topic + // 直接设置文本内容,图片通过MindElixir原生image属性处理 + textEl.innerHTML = nodeObj.topic || '' } tpc.appendChild(textEl) diff --git a/frontend/src/utils/markdownRenderer.js b/frontend/src/utils/markdownRenderer.js index 2d21c19..1a6f4ee 100644 --- a/frontend/src/utils/markdownRenderer.js +++ b/frontend/src/utils/markdownRenderer.js @@ -14,12 +14,16 @@ import 'prismjs/components/prism-python'; import 'prismjs/components/prism-sql'; import 'katex/dist/katex.min.css'; +// 自定义渲染器(移除图片处理,使用MindElixir原生image属性) +const renderer = new marked.Renderer(); + // 配置marked选项 marked.setOptions({ breaks: true, gfm: true, // GitHub Flavored Markdown tables: true, // 支持表格 sanitize: false, // 允许HTML(用于数学公式等) + renderer: renderer // 使用自定义渲染器 }); /** @@ -40,7 +44,9 @@ export const renderMarkdownToHTML = (markdown) => { const html = marked.parse(processedMarkdown); // 后处理HTML - return postprocessHTML(html); + const finalHTML = postprocessHTML(html); + + return finalHTML; } catch (error) { console.error('Markdown渲染失败:', error); return `
    渲染失败: ${error.message}
    `; @@ -166,6 +172,11 @@ const addMarkdownStyles = (container) => { .markdown-content { max-width: 100%; overflow: hidden; + word-wrap: break-word; + word-break: break-word; + line-height: 1.4; + text-align: left; + display: block; } .markdown-content h1, @@ -196,12 +207,15 @@ const addMarkdownStyles = (container) => { .markdown-content ol { margin: 2px 0; padding-left: 16px; + list-style-position: inside; } .markdown-content li { margin: 1px 0; line-height: 1.3; color: #666; + display: list-item; + text-align: left; } .markdown-content strong, diff --git a/mind-elixir-core-master/.eslintignore b/mind-elixir-core-master/.eslintignore deleted file mode 100644 index 2600bcd..0000000 --- a/mind-elixir-core-master/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -dist -src/__tests__ -index.html -test.html \ No newline at end of file diff --git a/mind-elixir-core-master/.eslintrc.cjs b/mind-elixir-core-master/.eslintrc.cjs deleted file mode 100644 index 7168db0..0000000 --- a/mind-elixir-core-master/.eslintrc.cjs +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - env: { - browser: true, - node: true, - }, - extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'], - plugins: ['@typescript-eslint'], - parser: '@typescript-eslint/parser', - parserOptions: { - sourceType: 'module', - }, - rules: { - '@typescript-eslint/consistent-type-imports': 'error', - '@typescript-eslint/no-non-null-assertion': 'off', - }, -} diff --git a/mind-elixir-core-master/.github/FUNDING.yml b/mind-elixir-core-master/.github/FUNDING.yml deleted file mode 100644 index 73a3bab..0000000 --- a/mind-elixir-core-master/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: [ssshooter] -patreon: # Replace with a single Patreon username -open_collective: ssshooter -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/mind-elixir-core-master/.github/ISSUE_TEMPLATE/bug_report.md b/mind-elixir-core-master/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index dd84ea7..0000000 --- a/mind-elixir-core-master/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. diff --git a/mind-elixir-core-master/.github/ISSUE_TEMPLATE/feature_request.md b/mind-elixir-core-master/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index bbcbbe7..0000000 --- a/mind-elixir-core-master/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: '' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/mind-elixir-core-master/.github/workflows/npm-publish.yml b/mind-elixir-core-master/.github/workflows/npm-publish.yml deleted file mode 100644 index 59543e1..0000000 --- a/mind-elixir-core-master/.github/workflows/npm-publish.yml +++ /dev/null @@ -1,60 +0,0 @@ -# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created -# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages - -name: Node.js Package - -on: - release: - types: [created] - workflow_dispatch: - -jobs: - publish: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2 - with: - version: 8 - - uses: actions/setup-node@v3 - with: - node-version: 18 - registry-url: 'https://registry.npmjs.org' - cache: 'pnpm' - - run: pnpm i - - run: npm run build - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{secrets.npm_token}} - - - name: Checkout docs repository - uses: actions/checkout@v3 - with: - repository: mind-elixir/docs - token: ${{ secrets.PAT }} - path: me-docs - - - name: Generate API documentation - run: | - npm run doc - npm run doc:md - - - name: Copy build results to docs repository - run: | - cp -r ./md/* ./me-docs/docs/api - cp -r ./md/* ./me-docs/i18n/ja/docusaurus-plugin-content-docs/current/api - cp -r ./md/* ./me-docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/api - - - name: Push changes to docs repository - run: | - cd me-docs - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git add . - if git diff-index --quiet HEAD; then - echo "No changes to commit" - else - git commit -m "Update API documentation" - git push - fi - diff --git a/mind-elixir-core-master/.gitignore b/mind-elixir-core-master/.gitignore deleted file mode 100644 index 14cf869..0000000 --- a/mind-elixir-core-master/.gitignore +++ /dev/null @@ -1,32 +0,0 @@ -.DS_Store -node_modules -dist -doc -.nyc_output -coverage -api -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -.eslintcache -/test-results/ -/playwright-report/ -/blob-report/ -/playwright/.cache/ - -/md \ No newline at end of file diff --git a/mind-elixir-core-master/.husky/commit-msg b/mind-elixir-core-master/.husky/commit-msg deleted file mode 100644 index c160a77..0000000 --- a/mind-elixir-core-master/.husky/commit-msg +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - -npx --no -- commitlint --edit ${1} diff --git a/mind-elixir-core-master/.husky/pre-commit b/mind-elixir-core-master/.husky/pre-commit deleted file mode 100644 index d24fdfc..0000000 --- a/mind-elixir-core-master/.husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - -npx lint-staged diff --git a/mind-elixir-core-master/.husky/pre-push b/mind-elixir-core-master/.husky/pre-push deleted file mode 100644 index 879e935..0000000 --- a/mind-elixir-core-master/.husky/pre-push +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - -npm run test diff --git a/mind-elixir-core-master/.npmignore b/mind-elixir-core-master/.npmignore deleted file mode 100644 index 39837ef..0000000 --- a/mind-elixir-core-master/.npmignore +++ /dev/null @@ -1,74 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Typescript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# dotenv environment variables file -.env - -# gatsby files -.cache/ -public - -# Mac files -.DS_Store - -# Yarn -yarn-error.log -.pnp/ -.pnp.js -# Yarn Integrity file -.yarn-integrity - -src/ -webpack.config.js -out/ -doc/ \ No newline at end of file diff --git a/mind-elixir-core-master/.prettierrc.json b/mind-elixir-core-master/.prettierrc.json deleted file mode 100644 index bdb655a..0000000 --- a/mind-elixir-core-master/.prettierrc.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "trailingComma": "es5", - "tabWidth": 2, - "semi": false, - "singleQuote": true, - "arrowParens": "avoid", - "printWidth": 150, - "endOfLine": "auto" -} \ No newline at end of file diff --git a/mind-elixir-core-master/LICENSE b/mind-elixir-core-master/LICENSE deleted file mode 100644 index a31bf25..0000000 --- a/mind-elixir-core-master/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 DjZhou - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/mind-elixir-core-master/api-extractor.json b/mind-elixir-core-master/api-extractor.json deleted file mode 100644 index fe35a20..0000000 --- a/mind-elixir-core-master/api-extractor.json +++ /dev/null @@ -1,396 +0,0 @@ -/** - * Config file for API Extractor. For more info, please visit: https://api-extractor.com - */ -{ - "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", - /** - * Optionally specifies another JSON config file that this file extends from. This provides a way for - * standard settings to be shared across multiple projects. - * - * If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains - * the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be - * resolved using NodeJS require(). - * - * SUPPORTED TOKENS: none - * DEFAULT VALUE: "" - */ - // "extends": "./shared/api-extractor-base.json" - // "extends": "my-package/include/api-extractor-base.json" - /** - * Determines the "" token that can be used with other config file settings. The project folder - * typically contains the tsconfig.json and package.json config files, but the path is user-defined. - * - * The path is resolved relative to the folder of the config file that contains the setting. - * - * The default value for "projectFolder" is the token "", which means the folder is determined by traversing - * parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder - * that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error - * will be reported. - * - * SUPPORTED TOKENS: - * DEFAULT VALUE: "" - */ - // "projectFolder": "..", - /** - * (REQUIRED) Specifies the .d.ts file to be used as the starting point for analysis. API Extractor - * analyzes the symbols exported by this module. - * - * The file extension must be ".d.ts" and not ".ts". - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - */ - "mainEntryPointFilePath": "/dist/types/docs.d.ts", - /** - * A list of NPM package names whose exports should be treated as part of this package. - * - * For example, suppose that Webpack is used to generate a distributed bundle for the project "library1", - * and another NPM package "library2" is embedded in this bundle. Some types from library2 may become part - * of the exported API for library1, but by default API Extractor would generate a .d.ts rollup that explicitly - * imports library2. To avoid this, we can specify: - * - * "bundledPackages": [ "library2" ], - * - * This would direct API Extractor to embed those types directly in the .d.ts rollup, as if they had been - * local files for library1. - */ - "bundledPackages": [], - /** - * Specifies what type of newlines API Extractor should use when writing output files. By default, the output files - * will be written with Windows-style newlines. To use POSIX-style newlines, specify "lf" instead. - * To use the OS's default newline kind, specify "os". - * - * DEFAULT VALUE: "crlf" - */ - // "newlineKind": "crlf", - /** - * Set to true when invoking API Extractor's test harness. When `testMode` is true, the `toolVersion` field in the - * .api.json file is assigned an empty string to prevent spurious diffs in output files tracked for tests. - * - * DEFAULT VALUE: "false" - */ - // "testMode": false, - /** - * Specifies how API Extractor sorts members of an enum when generating the .api.json file. By default, the output - * files will be sorted alphabetically, which is "by-name". To keep the ordering in the source code, specify - * "preserve". - * - * DEFAULT VALUE: "by-name" - */ - // "enumMemberOrder": "by-name", - /** - * Determines how the TypeScript compiler engine will be invoked by API Extractor. - */ - "compiler": { - /** - * Specifies the path to the tsconfig.json file to be used by API Extractor when analyzing the project. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * Note: This setting will be ignored if "overrideTsconfig" is used. - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "/tsconfig.json" - */ - // "tsconfigFilePath": "/tsconfig.json", - /** - * Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk. - * The object must conform to the TypeScript tsconfig schema: - * - * http://json.schemastore.org/tsconfig - * - * If omitted, then the tsconfig.json file will be read from the "projectFolder". - * - * DEFAULT VALUE: no overrideTsconfig section - */ - // "overrideTsconfig": { - // . . . - // } - /** - * This option causes the compiler to be invoked with the --skipLibCheck option. This option is not recommended - * and may cause API Extractor to produce incomplete or incorrect declarations, but it may be required when - * dependencies contain declarations that are incompatible with the TypeScript engine that API Extractor uses - * for its analysis. Where possible, the underlying issue should be fixed rather than relying on skipLibCheck. - * - * DEFAULT VALUE: false - */ - // "skipLibCheck": true, - }, - /** - * Configures how the API report file (*.api.md) will be generated. - */ - "apiReport": { - /** - * (REQUIRED) Whether to generate an API report. - */ - "enabled": true, - /** - * The filename for the API report files. It will be combined with "reportFolder" or "reportTempFolder" to produce - * a full file path. - * - * The file extension should be ".api.md", and the string should not contain a path separator such as "\" or "/". - * - * SUPPORTED TOKENS: , - * DEFAULT VALUE: ".api.md" - */ - // "reportFileName": ".api.md", - /** - * Specifies the folder where the API report file is written. The file name portion is determined by - * the "reportFileName" setting. - * - * The API report file is normally tracked by Git. Changes to it can be used to trigger a branch policy, - * e.g. for an API review. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "/temp/" - */ - "reportFolder": "/api/", - /** - * Specifies the folder where the temporary report file is written. The file name portion is determined by - * the "reportFileName" setting. - * - * After the temporary file is written to disk, it is compared with the file in the "reportFolder". - * If they are different, a production build will fail. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "/temp/" - */ - "reportTempFolder": "/api/", - /** - * Whether "forgotten exports" should be included in the API report file. Forgotten exports are declarations - * flagged with `ae-forgotten-export` warnings. See https://api-extractor.com/pages/messages/ae-forgotten-export/ to - * learn more. - * - * DEFAULT VALUE: "false" - */ - "includeForgottenExports": false - }, - /** - * Configures how the doc model file (*.api.json) will be generated. - */ - "docModel": { - /** - * (REQUIRED) Whether to generate a doc model file. - */ - "enabled": true, - /** - * The output path for the doc model file. The file extension should be ".api.json". - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "/temp/.api.json" - */ - "apiJsonFilePath": "/api/.api.json" - /** - * Whether "forgotten exports" should be included in the doc model file. Forgotten exports are declarations - * flagged with `ae-forgotten-export` warnings. See https://api-extractor.com/pages/messages/ae-forgotten-export/ to - * learn more. - * - * DEFAULT VALUE: "false" - */ - // "includeForgottenExports": false, - /** - * The base URL where the project's source code can be viewed on a website such as GitHub or - * Azure DevOps. This URL path corresponds to the `` path on disk. - * - * This URL is concatenated with the file paths serialized to the doc model to produce URL file paths to individual API items. - * For example, if the `projectFolderUrl` is "https://github.com/microsoft/rushstack/tree/main/apps/api-extractor" and an API - * item's file path is "api/ExtractorConfig.ts", the full URL file path would be - * "https://github.com/microsoft/rushstack/tree/main/apps/api-extractor/api/ExtractorConfig.js". - * - * Can be omitted if you don't need source code links in your API documentation reference. - * - * SUPPORTED TOKENS: none - * DEFAULT VALUE: "" - */ - // "projectFolderUrl": "http://github.com/path/to/your/projectFolder" - }, - /** - * Configures how the .d.ts rollup file will be generated. - */ - "dtsRollup": { - /** - * (REQUIRED) Whether to generate the .d.ts rollup file. - */ - "enabled": true - /** - * Specifies the output path for a .d.ts rollup file to be generated without any trimming. - * This file will include all declarations that are exported by the main entry point. - * - * If the path is an empty string, then this file will not be written. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "/dist/.d.ts" - */ - // "untrimmedFilePath": "/dist/.d.ts", - /** - * Specifies the output path for a .d.ts rollup file to be generated with trimming for an "alpha" release. - * This file will include only declarations that are marked as "@public", "@beta", or "@alpha". - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "" - */ - // "alphaTrimmedFilePath": "/dist/-alpha.d.ts", - /** - * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "beta" release. - * This file will include only declarations that are marked as "@public" or "@beta". - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "" - */ - // "betaTrimmedFilePath": "/dist/-beta.d.ts", - /** - * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "public" release. - * This file will include only declarations that are marked as "@public". - * - * If the path is an empty string, then this file will not be written. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "" - */ - // "publicTrimmedFilePath": "/dist/-public.d.ts", - /** - * When a declaration is trimmed, by default it will be replaced by a code comment such as - * "Excluded from this release type: exampleMember". Set "omitTrimmingComments" to true to remove the - * declaration completely. - * - * DEFAULT VALUE: false - */ - // "omitTrimmingComments": true - }, - /** - * Configures how the tsdoc-metadata.json file will be generated. - */ - "tsdocMetadata": { - /** - * Whether to generate the tsdoc-metadata.json file. - * - * DEFAULT VALUE: true - */ - // "enabled": true, - /** - * Specifies where the TSDoc metadata file should be written. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * The default value is "", which causes the path to be automatically inferred from the "tsdocMetadata", - * "typings" or "main" fields of the project's package.json. If none of these fields are set, the lookup - * falls back to "tsdoc-metadata.json" in the package folder. - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "" - */ - // "tsdocMetadataFilePath": "/dist/tsdoc-metadata.json" - }, - /** - * Configures how API Extractor reports error and warning messages produced during analysis. - * - * There are three sources of messages: compiler messages, API Extractor messages, and TSDoc messages. - */ - "messages": { - /** - * Configures handling of diagnostic messages reported by the TypeScript compiler engine while analyzing - * the input .d.ts files. - * - * TypeScript message identifiers start with "TS" followed by an integer. For example: "TS2551" - * - * DEFAULT VALUE: A single "default" entry with logLevel=warning. - */ - "compilerMessageReporting": { - /** - * Configures the default routing for messages that don't match an explicit rule in this table. - */ - "default": { - /** - * Specifies whether the message should be written to the the tool's output log. Note that - * the "addToApiReportFile" property may supersede this option. - * - * Possible values: "error", "warning", "none" - * - * Errors cause the build to fail and return a nonzero exit code. Warnings cause a production build fail - * and return a nonzero exit code. For a non-production build (e.g. when "api-extractor run" includes - * the "--local" option), the warning is displayed but the build will not fail. - * - * DEFAULT VALUE: "warning" - */ - "logLevel": "warning" - /** - * When addToApiReportFile is true: If API Extractor is configured to write an API report file (.api.md), - * then the message will be written inside that file; otherwise, the message is instead logged according to - * the "logLevel" option. - * - * DEFAULT VALUE: false - */ - // "addToApiReportFile": false - } - // "TS2551": { - // "logLevel": "warning", - // "addToApiReportFile": true - // }, - // - // . . . - }, - /** - * Configures handling of messages reported by API Extractor during its analysis. - * - * API Extractor message identifiers start with "ae-". For example: "ae-extra-release-tag" - * - * DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings - */ - "extractorMessageReporting": { - "default": { - "logLevel": "warning" - // "addToApiReportFile": false - } - // "ae-extra-release-tag": { - // "logLevel": "warning", - // "addToApiReportFile": true - // }, - // - // . . . - }, - /** - * Configures handling of messages reported by the TSDoc parser when analyzing code comments. - * - * TSDoc message identifiers start with "tsdoc-". For example: "tsdoc-link-tag-unescaped-text" - * - * DEFAULT VALUE: A single "default" entry with logLevel=warning. - */ - "tsdocMessageReporting": { - "default": { - "logLevel": "warning" - // "addToApiReportFile": false - } - // "tsdoc-link-tag-unescaped-text": { - // "logLevel": "warning", - // "addToApiReportFile": true - // }, - // - // . . . - } - } -} \ No newline at end of file diff --git a/mind-elixir-core-master/build.js b/mind-elixir-core-master/build.js deleted file mode 100644 index 9c2e30f..0000000 --- a/mind-elixir-core-master/build.js +++ /dev/null @@ -1,47 +0,0 @@ -import { fileURLToPath } from 'url' -import { build } from 'vite' -import strip from '@rollup/plugin-strip' - -const __dirname = fileURLToPath(new URL('.', import.meta.url)) -const buildList = [ - { - name: 'MindElixir', - enrty: __dirname + './src/index.ts', - }, - { - name: 'MindElixirLite', - enrty: __dirname + './src/index.ts', - mode: 'lite', - }, - { - name: 'example', - enrty: __dirname + './src/exampleData/1.ts', - }, - { - name: 'LayoutSsr', - enrty: __dirname + './src/utils/layout-ssr.ts', - }, -] -for (let i = 0; i < buildList.length; i++) { - const info = buildList[i] - console.log(`\n\nBuilding ${info.name}...\n\n`) - await build({ - build: { - emptyOutDir: i === 0, - lib: { - entry: info.enrty, - fileName: info.name, - name: info.name, - formats: ['iife', 'es'], - }, - rollupOptions: { - plugins: [ - strip({ - include: ['**/*.ts', '**/*.js'], - }), - ], - }, - }, - mode: info.mode, - }) -} diff --git a/mind-elixir-core-master/commitlint.config.js b/mind-elixir-core-master/commitlint.config.js deleted file mode 100644 index 277b4b0..0000000 --- a/mind-elixir-core-master/commitlint.config.js +++ /dev/null @@ -1,107 +0,0 @@ -export default { - parserPreset: 'conventional-changelog-conventionalcommits', - rules: { - 'body-leading-blank': [1, 'always'], - 'body-max-line-length': [2, 'always', 120], - 'footer-leading-blank': [1, 'always'], - 'footer-max-line-length': [2, 'always', 100], - 'header-max-length': [2, 'always', 100], - 'subject-case': [2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']], - 'subject-empty': [2, 'never'], - 'subject-full-stop': [2, 'never', '.'], - 'type-case': [2, 'always', 'lower-case'], - 'type-empty': [2, 'never'], - 'type-enum': [2, 'always', ['build', 'chore', 'ci', 'docs', 'feat', 'fix', 'perf', 'refactor', 'revert', 'style', 'test']], - }, - prompt: { - questions: { - type: { - description: "Select the type of change that you're committing", - enum: { - feat: { - description: 'A new feature', - title: 'Features', - emoji: '✨', - }, - fix: { - description: 'A bug fix', - title: 'Bug Fixes', - emoji: '🐛', - }, - docs: { - description: 'Documentation only changes', - title: 'Documentation', - emoji: '📚', - }, - style: { - description: 'Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)', - title: 'Styles', - emoji: '💎', - }, - refactor: { - description: 'A code change that neither fixes a bug nor adds a feature', - title: 'Code Refactoring', - emoji: '📦', - }, - perf: { - description: 'A code change that improves performance', - title: 'Performance Improvements', - emoji: '🚀', - }, - test: { - description: 'Adding missing tests or correcting existing tests', - title: 'Tests', - emoji: '🚨', - }, - build: { - description: 'Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)', - title: 'Builds', - emoji: '🛠', - }, - ci: { - description: 'Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)', - title: 'Continuous Integrations', - emoji: '⚙️', - }, - chore: { - description: "Other changes that don't modify src or test files", - title: 'Chores', - emoji: '♻️', - }, - revert: { - description: 'Reverts a previous commit', - title: 'Reverts', - emoji: '🗑', - }, - }, - }, - scope: { - description: 'What is the scope of this change (e.g. component or file name)', - }, - subject: { - description: 'Write a short, imperative tense description of the change', - }, - body: { - description: 'Provide a longer description of the change', - }, - isBreaking: { - description: 'Are there any breaking changes?', - }, - breakingBody: { - description: 'A BREAKING CHANGE commit requires a body. Please enter a longer description of the commit itself', - }, - breaking: { - description: 'Describe the breaking changes', - }, - isIssueAffected: { - description: 'Does this change affect any open issues?', - }, - issuesBody: { - description: 'If issues are closed, the commit requires a body. Please enter a longer description of the commit itself', - }, - issues: { - description: 'Add issue references (e.g. "fix #123", "re #123".)', - }, - }, - }, -} diff --git a/mind-elixir-core-master/index.css b/mind-elixir-core-master/index.css deleted file mode 100644 index 6dd98df..0000000 --- a/mind-elixir-core-master/index.css +++ /dev/null @@ -1,177 +0,0 @@ -code[class*='language-'], -pre[class*='language-'] { - color: black; - background: none; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -/* Code blocks */ -pre[class*='language-'] { - position: relative; - margin: 0.5em 0; - overflow: visible; - padding: 0; -} - -pre[class*='language-']>code { - position: relative; -} - -code[class*='language'] { - border-radius: 3px; - background: #faf8f5; - max-height: inherit; - height: inherit; - padding: 1em; - display: block; - overflow: auto; - margin: 0; -} - -/* Inline code */ -:not(pre)>code[class*='language-'] { - display: inline; - position: relative; - color: #c92c2c; - padding: 0.15em; - white-space: normal; -} - -.token.comment, -.token.block-comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #7d8b99; -} - -.token.punctuation { - color: #5f6364; -} - -.token.property, -.token.tag, -.token.boolean, -.token.number, -.token.function-name, -.token.constant, -.token.symbol, -.token.deleted { - color: #c92c2c; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.function, -.token.builtin, -.token.inserted { - color: #2f9c0a; -} - -.token.operator, -.token.entity, -.token.url, -.token.variable { - color: #a67f59; - background: rgba(255, 255, 255, 0.5); -} - -.token.atrule, -.token.attr-value, -.token.keyword, -.token.class-name { - color: #1990b8; -} - -.token.regex, -.token.important { - color: #e90; -} - -.language-css .token.string, -.style .token.string { - color: #a67f59; - background: rgba(255, 255, 255, 0.5); -} - -.token.important { - font-weight: normal; -} - -.token.bold { - font-weight: bold; -} - -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - -.namespace { - opacity: 0.7; -} - -@media screen and (max-width: 767px) { - - pre[class*='language-']:before, - pre[class*='language-']:after { - bottom: 14px; - box-shadow: none; - } -} - -/* Plugin styles */ -.token.tab:not(:empty):before, -.token.cr:before, -.token.lf:before { - color: #e0d7d1; -} - -/* Plugin styles: Line Numbers */ -pre[class*='language-'].line-numbers.line-numbers { - padding-left: 0; -} - -pre[class*='language-'].line-numbers.line-numbers code { - padding-left: 3.8em; -} - -pre[class*='language-'].line-numbers.line-numbers .line-numbers-rows { - left: 0; -} - -/* Plugin styles: Line Highlight */ -pre[class*='language-'][data-line] { - padding-top: 0; - padding-bottom: 0; - padding-left: 0; -} - -pre[data-line] code { - position: relative; - padding-left: 4em; -} - -pre .line-highlight { - margin-top: 0; -} \ No newline at end of file diff --git a/mind-elixir-core-master/index.html b/mind-elixir-core-master/index.html deleted file mode 100644 index 63e4de6..0000000 --- a/mind-elixir-core-master/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - Mind Elixir - - - - - -
    - -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/mind-elixir-core-master/katex.css b/mind-elixir-core-master/katex.css deleted file mode 100644 index 5787cbd..0000000 --- a/mind-elixir-core-master/katex.css +++ /dev/null @@ -1 +0,0 @@ -.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.9"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo} \ No newline at end of file diff --git a/mind-elixir-core-master/package-lock.json b/mind-elixir-core-master/package-lock.json deleted file mode 100644 index 41a1b2b..0000000 --- a/mind-elixir-core-master/package-lock.json +++ /dev/null @@ -1,7715 +0,0 @@ -{ - "name": "mind-elixir", - "version": "5.1.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "mind-elixir", - "version": "5.1.1", - "license": "MIT", - "devDependencies": { - "@commitlint/cli": "^17.8.1", - "@commitlint/config-conventional": "^17.8.1", - "@microsoft/api-documenter": "^7.25.21", - "@microsoft/api-extractor": "^7.47.11", - "@playwright/test": "^1.55.0", - "@rollup/plugin-strip": "^3.0.4", - "@types/node": "^20.14.2", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "@viselect/vanilla": "3.9.0", - "@zumer/snapdom": "^1.3.0", - "eslint": "^8.57.0", - "eslint-config-prettier": "^8.10.0", - "eslint-plugin-prettier": "^4.2.1", - "husky": "^8.0.3", - "katex": "^0.16.22", - "less": "^4.2.0", - "lint-staged": "^13.3.0", - "marked": "^16.2.0", - "nyc": "^17.1.0", - "prettier": "2.8.4", - "rimraf": "^6.0.1", - "simple-markdown-to-html": "^1.0.0", - "typescript": "^5.4.5", - "vite": "^4.5.3", - "vite-plugin-istanbul": "^7.1.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", - "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", - "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.4", - "@babel/types": "^7.28.4", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.4" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@commitlint/cli": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.8.1.tgz", - "integrity": "sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/format": "^17.8.1", - "@commitlint/lint": "^17.8.1", - "@commitlint/load": "^17.8.1", - "@commitlint/read": "^17.8.1", - "@commitlint/types": "^17.8.1", - "execa": "^5.0.0", - "lodash.isfunction": "^3.0.9", - "resolve-from": "5.0.0", - "resolve-global": "1.0.0", - "yargs": "^17.0.0" - }, - "bin": { - "commitlint": "cli.js" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/config-conventional": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.8.1.tgz", - "integrity": "sha512-NxCOHx1kgneig3VLauWJcDWS40DVjg7nKOpBEEK9E5fjJpQqLCilcnKkIIjdBH98kEO1q3NpE5NSrZ2kl/QGJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-changelog-conventionalcommits": "^6.1.0" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/config-validator": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.8.1.tgz", - "integrity": "sha512-UUgUC+sNiiMwkyiuIFR7JG2cfd9t/7MV8VB4TZ+q02ZFkHoduUS4tJGsCBWvBOGD9Btev6IecPMvlWUfJorkEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/types": "^17.8.1", - "ajv": "^8.11.0" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/ensure": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.8.1.tgz", - "integrity": "sha512-xjafwKxid8s1K23NFpL8JNo6JnY/ysetKo8kegVM7c8vs+kWLP8VrQq+NbhgVlmCojhEDbzQKp4eRXSjVOGsow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/types": "^17.8.1", - "lodash.camelcase": "^4.3.0", - "lodash.kebabcase": "^4.1.1", - "lodash.snakecase": "^4.1.1", - "lodash.startcase": "^4.4.0", - "lodash.upperfirst": "^4.3.1" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/execute-rule": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.8.1.tgz", - "integrity": "sha512-JHVupQeSdNI6xzA9SqMF+p/JjrHTcrJdI02PwesQIDCIGUrv04hicJgCcws5nzaoZbROapPs0s6zeVHoxpMwFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/format": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.8.1.tgz", - "integrity": "sha512-f3oMTyZ84M9ht7fb93wbCKmWxO5/kKSbwuYvS867duVomoOsgrgljkGGIztmT/srZnaiGbaK8+Wf8Ik2tSr5eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/types": "^17.8.1", - "chalk": "^4.1.0" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/is-ignored": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.8.1.tgz", - "integrity": "sha512-UshMi4Ltb4ZlNn4F7WtSEugFDZmctzFpmbqvpyxD3la510J+PLcnyhf9chs7EryaRFJMdAKwsEKfNK0jL/QM4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/types": "^17.8.1", - "semver": "7.5.4" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/lint": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.8.1.tgz", - "integrity": "sha512-aQUlwIR1/VMv2D4GXSk7PfL5hIaFSfy6hSHV94O8Y27T5q+DlDEgd/cZ4KmVI+MWKzFfCTiTuWqjfRSfdRllCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/is-ignored": "^17.8.1", - "@commitlint/parse": "^17.8.1", - "@commitlint/rules": "^17.8.1", - "@commitlint/types": "^17.8.1" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/load": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.8.1.tgz", - "integrity": "sha512-iF4CL7KDFstP1kpVUkT8K2Wl17h2yx9VaR1ztTc8vzByWWcbO/WaKwxsnCOqow9tVAlzPfo1ywk9m2oJ9ucMqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/config-validator": "^17.8.1", - "@commitlint/execute-rule": "^17.8.1", - "@commitlint/resolve-extends": "^17.8.1", - "@commitlint/types": "^17.8.1", - "@types/node": "20.5.1", - "chalk": "^4.1.0", - "cosmiconfig": "^8.0.0", - "cosmiconfig-typescript-loader": "^4.0.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0", - "resolve-from": "^5.0.0", - "ts-node": "^10.8.1", - "typescript": "^4.6.4 || ^5.2.2" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/load/node_modules/@types/node": { - "version": "20.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", - "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@commitlint/message": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.8.1.tgz", - "integrity": "sha512-6bYL1GUQsD6bLhTH3QQty8pVFoETfFQlMn2Nzmz3AOLqRVfNNtXBaSY0dhZ0dM6A2MEq4+2d7L/2LP8TjqGRkA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/parse": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.8.1.tgz", - "integrity": "sha512-/wLUickTo0rNpQgWwLPavTm7WbwkZoBy3X8PpkUmlSmQJyWQTj0m6bDjiykMaDt41qcUbfeFfaCvXfiR4EGnfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/types": "^17.8.1", - "conventional-changelog-angular": "^6.0.0", - "conventional-commits-parser": "^4.0.0" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/read": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.8.1.tgz", - "integrity": "sha512-Fd55Oaz9irzBESPCdMd8vWWgxsW3OWR99wOntBDHgf9h7Y6OOHjWEdS9Xzen1GFndqgyoaFplQS5y7KZe0kO2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/top-level": "^17.8.1", - "@commitlint/types": "^17.8.1", - "fs-extra": "^11.0.0", - "git-raw-commits": "^2.0.11", - "minimist": "^1.2.6" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/resolve-extends": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.8.1.tgz", - "integrity": "sha512-W/ryRoQ0TSVXqJrx5SGkaYuAaE/BUontL1j1HsKckvM6e5ZaG0M9126zcwL6peKSuIetJi7E87PRQF8O86EW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/config-validator": "^17.8.1", - "@commitlint/types": "^17.8.1", - "import-fresh": "^3.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/rules": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.8.1.tgz", - "integrity": "sha512-2b7OdVbN7MTAt9U0vKOYKCDsOvESVXxQmrvuVUZ0rGFMCrCPJWWP1GJ7f0lAypbDAhaGb8zqtdOr47192LBrIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/ensure": "^17.8.1", - "@commitlint/message": "^17.8.1", - "@commitlint/to-lines": "^17.8.1", - "@commitlint/types": "^17.8.1", - "execa": "^5.0.0" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/to-lines": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.8.1.tgz", - "integrity": "sha512-LE0jb8CuR/mj6xJyrIk8VLz03OEzXFgLdivBytoooKO5xLt5yalc8Ma5guTWobw998sbR3ogDd+2jed03CFmJA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/top-level": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.8.1.tgz", - "integrity": "sha512-l6+Z6rrNf5p333SHfEte6r+WkOxGlWK4bLuZKbtf/2TXRN+qhrvn1XE63VhD8Oe9oIHQ7F7W1nG2k/TJFhx2yA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@commitlint/types": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.8.1.tgz", - "integrity": "sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0" - }, - "engines": { - "node": ">=v14" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@microsoft/api-documenter": { - "version": "7.26.32", - "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.26.32.tgz", - "integrity": "sha512-OnfyOuiOQMvIkzh7TK8RyPHDwtkZs7Dzu48XwzUyNHc3tyrLnlZcMNvh6XxUvPsTi/jOoe9alJezESnuGKIQYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@microsoft/api-extractor-model": "7.30.7", - "@microsoft/tsdoc": "~0.15.1", - "@rushstack/node-core-library": "5.14.0", - "@rushstack/terminal": "0.15.4", - "@rushstack/ts-command-line": "5.0.2", - "js-yaml": "~3.13.1", - "resolve": "~1.22.1" - }, - "bin": { - "api-documenter": "bin/api-documenter" - } - }, - "node_modules/@microsoft/api-extractor": { - "version": "7.52.11", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.52.11.tgz", - "integrity": "sha512-IKQ7bHg6f/Io3dQds6r9QPYk4q0OlR9A4nFDtNhUt3UUIhyitbxAqRN1CLjUVtk6IBk3xzyCMOdwwtIXQ7AlGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@microsoft/api-extractor-model": "7.30.7", - "@microsoft/tsdoc": "~0.15.1", - "@microsoft/tsdoc-config": "~0.17.1", - "@rushstack/node-core-library": "5.14.0", - "@rushstack/rig-package": "0.5.3", - "@rushstack/terminal": "0.15.4", - "@rushstack/ts-command-line": "5.0.2", - "lodash": "~4.17.15", - "minimatch": "10.0.3", - "resolve": "~1.22.1", - "semver": "~7.5.4", - "source-map": "~0.6.1", - "typescript": "5.8.2" - }, - "bin": { - "api-extractor": "bin/api-extractor" - } - }, - "node_modules/@microsoft/api-extractor-model": { - "version": "7.30.7", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.30.7.tgz", - "integrity": "sha512-TBbmSI2/BHpfR9YhQA7nH0nqVmGgJ0xH0Ex4D99/qBDAUpnhA2oikGmdXanbw9AWWY/ExBYIpkmY8dBHdla3YQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@microsoft/tsdoc": "~0.15.1", - "@microsoft/tsdoc-config": "~0.17.1", - "@rushstack/node-core-library": "5.14.0" - } - }, - "node_modules/@microsoft/api-extractor/node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/@microsoft/tsdoc": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz", - "integrity": "sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@microsoft/tsdoc-config": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.17.1.tgz", - "integrity": "sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@microsoft/tsdoc": "0.15.1", - "ajv": "~8.12.0", - "jju": "~1.4.0", - "resolve": "~1.22.2" - } - }, - "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@playwright/test": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.0.tgz", - "integrity": "sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright": "1.55.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@rollup/plugin-strip": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-strip/-/plugin-strip-3.0.4.tgz", - "integrity": "sha512-LDRV49ZaavxUo2YoKKMQjCxzCxugu1rCPQa0lDYBOWLj6vtzBMr8DcoJjsmg+s450RbKbe3qI9ZLaSO+O1oNbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", - "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rushstack/node-core-library": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.14.0.tgz", - "integrity": "sha512-eRong84/rwQUlATGFW3TMTYVyqL1vfW9Lf10PH+mVGfIb9HzU3h5AASNIw+axnBLjnD0n3rT5uQBwu9fvzATrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "~8.13.0", - "ajv-draft-04": "~1.0.0", - "ajv-formats": "~3.0.1", - "fs-extra": "~11.3.0", - "import-lazy": "~4.0.0", - "jju": "~1.4.0", - "resolve": "~1.22.1", - "semver": "~7.5.4" - }, - "peerDependencies": { - "@types/node": "*" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@rushstack/node-core-library/node_modules/ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@rushstack/rig-package": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.3.tgz", - "integrity": "sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve": "~1.22.1", - "strip-json-comments": "~3.1.1" - } - }, - "node_modules/@rushstack/terminal": { - "version": "0.15.4", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.15.4.tgz", - "integrity": "sha512-OQSThV0itlwVNHV6thoXiAYZlQh4Fgvie2CzxFABsbO2MWQsI4zOh3LRNigYSTrmS+ba2j0B3EObakPzf/x6Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rushstack/node-core-library": "5.14.0", - "supports-color": "~8.1.1" - }, - "peerDependencies": { - "@types/node": "*" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@rushstack/ts-command-line": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.0.2.tgz", - "integrity": "sha512-+AkJDbu1GFMPIU8Sb7TLVXDv/Q7Mkvx+wAjEl8XiXVVq+p1FmWW6M3LYpJMmoHNckSofeMecgWg5lfMwNAAsEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rushstack/terminal": "0.15.4", - "@types/argparse": "1.0.38", - "argparse": "~1.0.9", - "string-argv": "~0.3.1" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/argparse": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", - "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.19.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.13.tgz", - "integrity": "sha512-yCAeZl7a0DxgNVteXFHt9+uyFbqXGy/ShC4BlcHkoE0AfGXYv/BUiplV72DjMYXHDBXFjhvr6DD1NiRVfB4j8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@viselect/vanilla": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@viselect/vanilla/-/vanilla-3.9.0.tgz", - "integrity": "sha512-E9eBgoi/crJ0SlZMAc+Yst7nU324LZ5LLvcXjzWEcrfllscdpTml2OLOKHC7O8Bbz19OybSLv6VexxnjlJrLxQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@zumer/snapdom": { - "version": "1.9.11", - "resolved": "https://registry.npmjs.org/@zumer/snapdom/-/snapdom-1.9.11.tgz", - "integrity": "sha512-7yEDRCz9AaksPaKEZxH6BlIZ2tpNN0/gI/8coCYgRIYE1ZIDQ8f5KsMPADtupcdj4t3et97+BP9AQYifGOvYdw==", - "dev": true, - "license": "MIT" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-draft-04": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.5.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^1.0.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true, - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true, - "license": "MIT" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.25.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.4.tgz", - "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001737", - "electron-to-chromium": "^1.5.211", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/caching-transform/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caching-transform/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001741", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz", - "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true, - "license": "MIT" - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/conventional-changelog-angular": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", - "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-6.1.0.tgz", - "integrity": "sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/conventional-commits-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", - "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.3.5", - "meow": "^8.1.2", - "split2": "^3.2.2" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz", - "integrity": "sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=v14.21.3" - }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=7", - "ts-node": ">=10", - "typescript": ">=4" - } - }, - "node_modules/cosmiconfig/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/default-require-extensions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", - "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.215", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.215.tgz", - "integrity": "sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", - "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz", - "integrity": "sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true, - "license": "MIT" - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/fs-extra": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz", - "integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", - "dev": true, - "license": "MIT", - "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "^1.3.4" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true, - "license": "MIT", - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", - "dev": true, - "license": "ISC", - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.3", - "istanbul-lib-coverage": "^3.2.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/katex": { - "version": "0.16.22", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", - "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", - "dev": true, - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], - "license": "MIT", - "dependencies": { - "commander": "^8.3.0" - }, - "bin": { - "katex": "cli.js" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/less": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/less/-/less-4.4.1.tgz", - "integrity": "sha512-X9HKyiXPi0f/ed0XhgUlBeFfxrlDP3xR4M7768Zl+WXLUViuL9AOPPJP4nCV0tgRWvTYvpNmN0SFhZOQzy16PA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=14" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lint-staged": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.3.0.tgz", - "integrity": "sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "5.3.0", - "commander": "11.0.0", - "debug": "4.3.4", - "execa": "7.2.0", - "lilconfig": "2.1.0", - "listr2": "6.6.1", - "micromatch": "4.0.5", - "pidtree": "0.6.0", - "string-argv": "0.3.2", - "yaml": "2.3.1" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "node_modules/lint-staged/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/lint-staged/node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/lint-staged/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/lint-staged/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/lint-staged/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", - "integrity": "sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^5.0.1", - "rfdc": "^1.3.0", - "wrap-ansi": "^8.1.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.startcase": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", - "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.upperfirst": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", - "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-update": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", - "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^5.0.0", - "cli-cursor": "^4.0.0", - "slice-ansi": "^5.0.0", - "strip-ansi": "^7.0.1", - "wrap-ansi": "^8.0.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/marked": { - "version": "16.2.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-16.2.1.tgz", - "integrity": "sha512-r3UrXED9lMlHF97jJByry90cwrZBBvZmjG1L68oYfuPMW+uDTnuMbyJDymCWwbTE+f+3LhpNDKfpR3a3saFyjA==", - "dev": true, - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true, - "license": "MIT" - }, - "node_modules/needle": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", - "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-releases": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.20.tgz", - "integrity": "sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", - "integrity": "sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^3.3.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^6.0.2", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/nyc/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/nyc/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nyc/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nyc/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/nyc/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.1.tgz", - "integrity": "sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true, - "license": "MIT", - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/playwright": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.0.tgz", - "integrity": "sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.55.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.0.tgz", - "integrity": "sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/process-on-spawn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.1.0.tgz", - "integrity": "sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", - "dev": true, - "license": "ISC", - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true, - "license": "ISC" - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-global": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", - "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "global-dirs": "^0.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", - "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^11.0.0", - "package-json-from-dist": "^1.0.0" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", - "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.0.3", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.29.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", - "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", - "dev": true, - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "license": "ISC" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/simple-markdown-to-html": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/simple-markdown-to-html/-/simple-markdown-to-html-1.0.0.tgz", - "integrity": "sha512-oU7mq0DjDur4O3myYbwCFXLyJEpDKrqZkUJGaHFhvWgH97OoB8rZyTMU467pxAYueH/o6qW57sd7i4WI6dVxFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/spawn-wrap/node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/spawn-wrap/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/spawn-wrap/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/spawn-wrap/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "license": "ISC", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vite": { - "version": "4.5.14", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.14.tgz", - "integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-plugin-istanbul": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/vite-plugin-istanbul/-/vite-plugin-istanbul-7.1.0.tgz", - "integrity": "sha512-md0774bPYfSrMbAMMy3Xui2+xqmEVwulCGN2ImGm4E4s+0VfO7TjFyJ4ITFIFyEmBhWoMM0sOOX0Yg0I1SsncQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.1.0", - "espree": "^10.3.0", - "istanbul-lib-instrument": "^6.0.3", - "picocolors": "^1.1.1", - "source-map": "^0.7.4", - "test-exclude": "^7.0.1" - }, - "peerDependencies": { - "vite": ">=4 <=7" - } - }, - "node_modules/vite-plugin-istanbul/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/vite-plugin-istanbul/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vite-plugin-istanbul/node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vite-plugin-istanbul/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/vite-plugin-istanbul/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/vite-plugin-istanbul/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/vite-plugin-istanbul/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/vite-plugin-istanbul/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/vite-plugin-istanbul/node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, - "node_modules/vite-plugin-istanbul/node_modules/test-exclude": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^9.0.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 14" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/mind-elixir-core-master/package.json b/mind-elixir-core-master/package.json deleted file mode 100644 index b49fd55..0000000 --- a/mind-elixir-core-master/package.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "name": "mind-elixir", - "version": "5.1.1", - "type": "module", - "description": "Mind elixir is a free open source mind map core.", - "keywords": [ - "mind-elixir", - "mindmap", - "dom", - "visualization" - ], - "scripts": { - "prepare": "husky install", - "lint": "eslint --cache --max-warnings 0 \"src/**/*.{js,json,ts}\" --fix", - "dev": "vite", - "build": "node build.js && tsc", - "tsc": "tsc", - "preview": "vite preview", - "test": "playwright test", - "test:ui": "playwright test --ui", - "test:clean": "rimraf .nyc_output coverage", - "test:coverage": "pnpm test:clean && pnpm test && pnpm nyc && npx http-server ./coverage", - "nyc": "nyc report --reporter=html", - "doc": "api-extractor run --local --verbose", - "doc:md": "api-documenter markdown --input-folder ./api --output-folder ./md", - "beta": "npm run build && npm publish --tag beta" - }, - "exports": { - ".": { - "types": "./dist/types/index.d.ts", - "import": "./dist/MindElixir.js", - "require": "./dist/MindElixir.js" - }, - "./lite": { - "import": "./dist/MindElixirLite.iife.js" - }, - "./example": { - "types": "./dist/types/exampleData/1.d.ts", - "import": "./dist/example.js", - "require": "./dist/example.js" - }, - "./LayoutSsr": { - "types": "./dist/types/utils/LayoutSsr.d.ts", - "import": "./dist/LayoutSsr.js", - "require": "./dist/LayoutSsr.js" - }, - "./readme.md": "./readme.md", - "./package.json": "./package.json", - "./style": "./dist/style.css", - "./style.css": "./dist/style.css" - }, - "typesVersions": { - "*": { - "example": [ - "./dist/types/exampleData/1.d.ts" - ] - } - }, - "main": "dist/MindElixir.js", - "types": "dist/types/index.d.ts", - "lint-staged": { - "src/**/*.{ts,js}": [ - "eslint --cache --fix" - ], - "src/**/*.{json,less}": [ - "prettier --write" - ] - }, - "files": [ - "package.json", - "dist" - ], - "repository": { - "type": "git", - "url": "https://github.com/ssshooter/mind-elixir-core" - }, - "homepage": "https://mind-elixir.com/", - "author": "ssshooter", - "license": "MIT", - "devDependencies": { - "@commitlint/cli": "^17.8.1", - "@commitlint/config-conventional": "^17.8.1", - "@microsoft/api-documenter": "^7.25.21", - "@microsoft/api-extractor": "^7.47.11", - "@playwright/test": "^1.55.0", - "@rollup/plugin-strip": "^3.0.4", - "@types/node": "^20.14.2", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "@viselect/vanilla": "3.9.0", - "@zumer/snapdom": "^1.3.0", - "eslint": "^8.57.0", - "eslint-config-prettier": "^8.10.0", - "eslint-plugin-prettier": "^4.2.1", - "husky": "^8.0.3", - "katex": "^0.16.22", - "less": "^4.2.0", - "lint-staged": "^13.3.0", - "marked": "^16.2.0", - "nyc": "^17.1.0", - "prettier": "2.8.4", - "rimraf": "^6.0.1", - "simple-markdown-to-html": "^1.0.0", - "typescript": "^5.4.5", - "vite": "^4.5.3", - "vite-plugin-istanbul": "^7.1.0" - } -} \ No newline at end of file diff --git a/mind-elixir-core-master/playwright.config.ts b/mind-elixir-core-master/playwright.config.ts deleted file mode 100644 index 7605e1f..0000000 --- a/mind-elixir-core-master/playwright.config.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { defineConfig, devices } from '@playwright/test' - -/** - * Read environment variables from file. - * https://github.com/motdotla/dotenv - */ -// require('dotenv').config(); - -/** - * See https://playwright.dev/docs/test-configuration. - */ -export default defineConfig({ - timeout: 10000, - testDir: './tests', - /* Run tests in files in parallel */ - fullyParallel: true, - /* Fail the build on CI if you accidentally left test.only in the source code. */ - forbidOnly: !!process.env.CI, - /* Retry on CI only */ - retries: process.env.CI ? 2 : 0, - /* Opt out of parallel tests on CI. */ - workers: process.env.CI ? 1 : undefined, - /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: 'html', - /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ - use: { - /* Base URL to use in actions like `await page.goto('/')`. */ - // baseURL: 'http://127.0.0.1:3000', - - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: 'on-first-retry', - }, - - /* Configure projects for major browsers */ - projects: [ - { - name: 'chromium', - use: { ...devices['Desktop Chrome'] }, - }, - - // { - // name: 'firefox', - // use: { ...devices['Desktop Firefox'] }, - // }, - - // { - // name: 'webkit', - // use: { ...devices['Desktop Safari'] }, - // }, - - /* Test against mobile viewports. */ - // { - // name: 'Mobile Chrome', - // use: { ...devices['Pixel 5'] }, - // }, - // { - // name: 'Mobile Safari', - // use: { ...devices['iPhone 12'] }, - // }, - - /* Test against branded browsers. */ - // { - // name: 'Microsoft Edge', - // use: { ...devices['Desktop Edge'], channel: 'msedge' }, - // }, - // { - // name: 'Google Chrome', - // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, - // }, - ], - - /* Run your local dev server before starting the tests */ - webServer: { - command: 'pnpm dev --port 23334', - url: 'http://127.0.0.1:23334', - reuseExistingServer: true, - env: { - VITE_COVERAGE: 'true' - }, - }, -}) diff --git a/mind-elixir-core-master/pnpm-lock.yaml b/mind-elixir-core-master/pnpm-lock.yaml deleted file mode 100644 index 52bcdc2..0000000 --- a/mind-elixir-core-master/pnpm-lock.yaml +++ /dev/null @@ -1,4550 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - '@commitlint/cli': - specifier: ^17.8.1 - version: 17.8.1 - '@commitlint/config-conventional': - specifier: ^17.8.1 - version: 17.8.1 - '@microsoft/api-documenter': - specifier: ^7.25.21 - version: 7.25.21(@types/node@20.14.2) - '@microsoft/api-extractor': - specifier: ^7.47.11 - version: 7.47.11(@types/node@20.14.2) - '@playwright/test': - specifier: ^1.55.0 - version: 1.55.0 - '@rollup/plugin-strip': - specifier: ^3.0.4 - version: 3.0.4(rollup@3.29.4) - '@types/node': - specifier: ^20.14.2 - version: 20.14.2 - '@typescript-eslint/eslint-plugin': - specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/parser': - specifier: ^5.62.0 - version: 5.62.0(eslint@8.57.0)(typescript@5.4.5) - '@viselect/vanilla': - specifier: 3.9.0 - version: 3.9.0 - '@zumer/snapdom': - specifier: ^1.3.0 - version: 1.3.0 - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^8.10.0 - version: 8.10.0(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.4) - husky: - specifier: ^8.0.3 - version: 8.0.3 - katex: - specifier: ^0.16.22 - version: 0.16.22 - less: - specifier: ^4.2.0 - version: 4.2.0 - lint-staged: - specifier: ^13.3.0 - version: 13.3.0 - marked: - specifier: ^16.2.0 - version: 16.2.0 - nyc: - specifier: ^17.1.0 - version: 17.1.0 - prettier: - specifier: 2.8.4 - version: 2.8.4 - rimraf: - specifier: ^6.0.1 - version: 6.0.1 - simple-markdown-to-html: - specifier: ^1.0.0 - version: 1.0.0 - typescript: - specifier: ^5.4.5 - version: 5.4.5 - vite: - specifier: ^4.5.3 - version: 4.5.3(@types/node@20.14.2)(less@4.2.0) - vite-plugin-istanbul: - specifier: ^7.1.0 - version: 7.1.0(vite@4.5.3(@types/node@20.14.2)(less@4.2.0)) - -packages: - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} - - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.28.0': - resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.28.0': - resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.28.0': - resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.27.3': - resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.28.2': - resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.0': - resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.2': - resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} - engines: {node: '>=6.9.0'} - - '@commitlint/cli@17.8.1': - resolution: {integrity: sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==} - engines: {node: '>=v14'} - hasBin: true - - '@commitlint/config-conventional@17.8.1': - resolution: {integrity: sha512-NxCOHx1kgneig3VLauWJcDWS40DVjg7nKOpBEEK9E5fjJpQqLCilcnKkIIjdBH98kEO1q3NpE5NSrZ2kl/QGJg==} - engines: {node: '>=v14'} - - '@commitlint/config-validator@17.8.1': - resolution: {integrity: sha512-UUgUC+sNiiMwkyiuIFR7JG2cfd9t/7MV8VB4TZ+q02ZFkHoduUS4tJGsCBWvBOGD9Btev6IecPMvlWUfJorkEA==} - engines: {node: '>=v14'} - - '@commitlint/ensure@17.8.1': - resolution: {integrity: sha512-xjafwKxid8s1K23NFpL8JNo6JnY/ysetKo8kegVM7c8vs+kWLP8VrQq+NbhgVlmCojhEDbzQKp4eRXSjVOGsow==} - engines: {node: '>=v14'} - - '@commitlint/execute-rule@17.8.1': - resolution: {integrity: sha512-JHVupQeSdNI6xzA9SqMF+p/JjrHTcrJdI02PwesQIDCIGUrv04hicJgCcws5nzaoZbROapPs0s6zeVHoxpMwFQ==} - engines: {node: '>=v14'} - - '@commitlint/format@17.8.1': - resolution: {integrity: sha512-f3oMTyZ84M9ht7fb93wbCKmWxO5/kKSbwuYvS867duVomoOsgrgljkGGIztmT/srZnaiGbaK8+Wf8Ik2tSr5eg==} - engines: {node: '>=v14'} - - '@commitlint/is-ignored@17.8.1': - resolution: {integrity: sha512-UshMi4Ltb4ZlNn4F7WtSEugFDZmctzFpmbqvpyxD3la510J+PLcnyhf9chs7EryaRFJMdAKwsEKfNK0jL/QM4g==} - engines: {node: '>=v14'} - - '@commitlint/lint@17.8.1': - resolution: {integrity: sha512-aQUlwIR1/VMv2D4GXSk7PfL5hIaFSfy6hSHV94O8Y27T5q+DlDEgd/cZ4KmVI+MWKzFfCTiTuWqjfRSfdRllCA==} - engines: {node: '>=v14'} - - '@commitlint/load@17.8.1': - resolution: {integrity: sha512-iF4CL7KDFstP1kpVUkT8K2Wl17h2yx9VaR1ztTc8vzByWWcbO/WaKwxsnCOqow9tVAlzPfo1ywk9m2oJ9ucMqA==} - engines: {node: '>=v14'} - - '@commitlint/message@17.8.1': - resolution: {integrity: sha512-6bYL1GUQsD6bLhTH3QQty8pVFoETfFQlMn2Nzmz3AOLqRVfNNtXBaSY0dhZ0dM6A2MEq4+2d7L/2LP8TjqGRkA==} - engines: {node: '>=v14'} - - '@commitlint/parse@17.8.1': - resolution: {integrity: sha512-/wLUickTo0rNpQgWwLPavTm7WbwkZoBy3X8PpkUmlSmQJyWQTj0m6bDjiykMaDt41qcUbfeFfaCvXfiR4EGnfw==} - engines: {node: '>=v14'} - - '@commitlint/read@17.8.1': - resolution: {integrity: sha512-Fd55Oaz9irzBESPCdMd8vWWgxsW3OWR99wOntBDHgf9h7Y6OOHjWEdS9Xzen1GFndqgyoaFplQS5y7KZe0kO2w==} - engines: {node: '>=v14'} - - '@commitlint/resolve-extends@17.8.1': - resolution: {integrity: sha512-W/ryRoQ0TSVXqJrx5SGkaYuAaE/BUontL1j1HsKckvM6e5ZaG0M9126zcwL6peKSuIetJi7E87PRQF8O86EW0Q==} - engines: {node: '>=v14'} - - '@commitlint/rules@17.8.1': - resolution: {integrity: sha512-2b7OdVbN7MTAt9U0vKOYKCDsOvESVXxQmrvuVUZ0rGFMCrCPJWWP1GJ7f0lAypbDAhaGb8zqtdOr47192LBrIA==} - engines: {node: '>=v14'} - - '@commitlint/to-lines@17.8.1': - resolution: {integrity: sha512-LE0jb8CuR/mj6xJyrIk8VLz03OEzXFgLdivBytoooKO5xLt5yalc8Ma5guTWobw998sbR3ogDd+2jed03CFmJA==} - engines: {node: '>=v14'} - - '@commitlint/top-level@17.8.1': - resolution: {integrity: sha512-l6+Z6rrNf5p333SHfEte6r+WkOxGlWK4bLuZKbtf/2TXRN+qhrvn1XE63VhD8Oe9oIHQ7F7W1nG2k/TJFhx2yA==} - engines: {node: '>=v14'} - - '@commitlint/types@17.8.1': - resolution: {integrity: sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==} - engines: {node: '>=v14'} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@esbuild/android-arm64@0.18.20': - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.18.20': - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.18.20': - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.18.20': - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.18.20': - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.18.20': - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.18.20': - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.18.20': - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.18.20': - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.18.20': - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.18.20': - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.18.20': - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.18.20': - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.18.20': - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.18.20': - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.18.20': - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.18.20': - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.18.20': - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.18.20': - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.18.20': - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.18.20': - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.18.20': - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.10.1': - resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} - - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@microsoft/api-documenter@7.25.21': - resolution: {integrity: sha512-Nyfidxbi9wIZ1H7VjVqw3nUhRM1fUJuGqvt2iDEI91Z4k8X+BqxSaLOsnn8n65YaAZhUJRkh1Ouxt90r7cnmjA==} - hasBin: true - - '@microsoft/api-extractor-model@7.29.8': - resolution: {integrity: sha512-t3Z/xcO6TRbMcnKGVMs4uMzv/gd5j0NhMiJIGjD4cJMeFJ1Hf8wnLSx37vxlRlL0GWlGJhnFgxvnaL6JlS+73g==} - - '@microsoft/api-extractor@7.47.11': - resolution: {integrity: sha512-lrudfbPub5wzBhymfFtgZKuBvXxoSIAdrvS2UbHjoMT2TjIEddq6Z13pcve7A03BAouw0x8sW8G4txdgfiSwpQ==} - hasBin: true - - '@microsoft/tsdoc-config@0.17.0': - resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} - - '@microsoft/tsdoc@0.15.0': - resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@playwright/test@1.55.0': - resolution: {integrity: sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==} - engines: {node: '>=18'} - hasBin: true - - '@rollup/plugin-strip@3.0.4': - resolution: {integrity: sha512-LDRV49ZaavxUo2YoKKMQjCxzCxugu1rCPQa0lDYBOWLj6vtzBMr8DcoJjsmg+s450RbKbe3qI9ZLaSO+O1oNbg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rushstack/node-core-library@5.9.0': - resolution: {integrity: sha512-MMsshEWkTbXqxqFxD4gcIUWQOCeBChlGczdZbHfqmNZQFLHB3yWxDFSMHFUdu2/OB9NUk7Awn5qRL+rws4HQNg==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - - '@rushstack/rig-package@0.5.3': - resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} - - '@rushstack/terminal@0.14.2': - resolution: {integrity: sha512-2fC1wqu1VCExKC0/L+0noVcFQEXEnoBOtCIex1TOjBzEDWcw8KzJjjj7aTP6mLxepG0XIyn9OufeFb6SFsa+sg==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - - '@rushstack/ts-command-line@4.23.0': - resolution: {integrity: sha512-jYREBtsxduPV6ptNq8jOKp9+yx0ld1Tb/Tkdnlj8gTjazl1sF3DwX2VbluyYrNd0meWIL0bNeer7WDf5tKFjaQ==} - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@types/argparse@1.0.38': - resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/minimist@1.2.5': - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - - '@types/node@20.14.2': - resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} - - '@types/node@20.5.1': - resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} - - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@typescript-eslint/eslint-plugin@5.62.0': - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@5.62.0': - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@5.62.0': - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@typescript-eslint/type-utils@5.62.0': - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@5.62.0': - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@typescript-eslint/typescript-estree@5.62.0': - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@5.62.0': - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@typescript-eslint/visitor-keys@5.62.0': - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@viselect/vanilla@3.9.0': - resolution: {integrity: sha512-E9eBgoi/crJ0SlZMAc+Yst7nU324LZ5LLvcXjzWEcrfllscdpTml2OLOKHC7O8Bbz19OybSLv6VexxnjlJrLxQ==} - - '@zumer/snapdom@1.3.0': - resolution: {integrity: sha512-JUJ1a4URTwboxwvQ01tvXgxQaPkq3TdORnpAUAe0r+d1rInndhO3Rnxb6nCGG0zCYkYoUbc9VcQjatzLX7t7Hg==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - ajv-draft-04@1.0.0: - resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} - peerDependencies: - ajv: ^8.5.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - - ajv@8.13.0: - resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} - - ajv@8.16.0: - resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} - - ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - append-transform@2.0.0: - resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} - engines: {node: '>=8'} - - archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - array-ify@1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.25.1: - resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - caching-transform@4.0.0: - resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} - engines: {node: '>=8'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - caniuse-lite@1.0.30001731: - resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - commander@11.0.0: - resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} - engines: {node: '>=16'} - - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compare-func@2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - - concat-map@0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - - conventional-changelog-angular@6.0.0: - resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} - engines: {node: '>=14'} - - conventional-changelog-conventionalcommits@6.1.0: - resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==} - engines: {node: '>=14'} - - conventional-commits-parser@4.0.0: - resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} - engines: {node: '>=14'} - hasBin: true - - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - copy-anything@2.0.6: - resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - - cosmiconfig-typescript-loader@4.4.0: - resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} - engines: {node: '>=v14.21.3'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=7' - ts-node: '>=10' - typescript: '>=4' - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - dargs@7.0.0: - resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} - engines: {node: '>=8'} - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - default-require-extensions@3.0.1: - resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} - engines: {node: '>=8'} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - electron-to-chromium@1.5.195: - resolution: {integrity: sha512-URclP0iIaDUzqcAyV1v2PgduJ9N0IdXmWsnPzPfelvBmjmZzEy6xJcjb1cXj+TbYqXgtLrjHEoaSIdTYhw4ezg==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - - esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-config-prettier@8.10.0: - resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-plugin-prettier@4.2.1: - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - - fromentries@1.3.2: - resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - git-raw-commits@2.0.11: - resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} - engines: {node: '>=10'} - hasBin: true - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - glob@11.0.3: - resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} - engines: {node: 20 || >=22} - hasBin: true - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - global-dirs@0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - hasha@5.2.2: - resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} - engines: {node: '>=8'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - - husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} - hasBin: true - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} - engines: {node: '>=0.10.0'} - hasBin: true - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-text-path@1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} - - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - - is-what@3.14.1: - resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-hook@3.0.0: - resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - - istanbul-lib-processinfo@2.0.3: - resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jackspeak@4.1.1: - resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} - engines: {node: 20 || >=22} - - jju@1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.13.1: - resolution: {integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - katex@0.16.22: - resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} - hasBin: true - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - less@4.2.0: - resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} - engines: {node: '>=6'} - hasBin: true - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - lint-staged@13.3.0: - resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - - listr2@6.6.1: - resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} - engines: {node: '>=16.0.0'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.flattendeep@4.4.0: - resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} - - lodash.isfunction@3.0.9: - resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - - lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - lru-cache@11.1.0: - resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} - engines: {node: 20 || >=22} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - - marked@16.2.0: - resolution: {integrity: sha512-LbbTuye+0dWRz2TS9KJ7wsnD4KAtpj0MVkWc90XvBa6AslXsT0hTBVH5k32pcSyHH1fst9XEFJunXHktVy0zlg==} - engines: {node: '>= 20'} - hasBin: true - - meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - minimatch@10.0.3: - resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} - engines: {node: 20 || >=22} - - minimatch@3.0.8: - resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - needle@3.3.1: - resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} - engines: {node: '>= 4.4.x'} - hasBin: true - - node-preload@0.2.1: - resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} - engines: {node: '>=8'} - - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - nyc@17.1.0: - resolution: {integrity: sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ==} - engines: {node: '>=18'} - hasBin: true - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-map@3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - package-hash@4.0.0: - resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} - engines: {node: '>=8'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse-node-version@1.0.1: - resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} - engines: {node: '>= 0.10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} - engines: {node: 20 || >=22} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - playwright-core@1.55.0: - resolution: {integrity: sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==} - engines: {node: '>=18'} - hasBin: true - - playwright@1.55.0: - resolution: {integrity: sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==} - engines: {node: '>=18'} - hasBin: true - - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier@2.8.4: - resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} - engines: {node: '>=10.13.0'} - hasBin: true - - process-on-spawn@1.1.0: - resolution: {integrity: sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q==} - engines: {node: '>=8'} - - prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - - release-zalgo@1.0.0: - resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} - engines: {node: '>=4'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve-global@1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.3.1: - resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} - engines: {node: 20 || >=22} - hasBin: true - - rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - simple-markdown-to-html@1.0.0: - resolution: {integrity: sha512-oU7mq0DjDur4O3myYbwCFXLyJEpDKrqZkUJGaHFhvWgH97OoB8rZyTMU467pxAYueH/o6qW57sd7i4WI6dVxFw==} - engines: {node: '>=14.0.0'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - source-map@0.7.6: - resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} - engines: {node: '>= 12'} - - spawn-wrap@2.0.0: - resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} - engines: {node: '>=8'} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.18: - resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} - - split2@3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - - test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} - engines: {node: '>=18'} - - text-extensions@1.9.0: - resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} - engines: {node: '>=0.10'} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - - typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} - engines: {node: '>=14.17'} - hasBin: true - - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - vite-plugin-istanbul@7.1.0: - resolution: {integrity: sha512-md0774bPYfSrMbAMMy3Xui2+xqmEVwulCGN2ImGm4E4s+0VfO7TjFyJ4ITFIFyEmBhWoMM0sOOX0Yg0I1SsncQ==} - peerDependencies: - vite: '>=4 <=7' - - vite@4.5.3: - resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} - engines: {node: '>= 14'} - - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.0.1 - - '@babel/code-frame@7.27.1': - dependencies: - '@babel/helper-validator-identifier': 7.27.1 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.28.0': {} - - '@babel/core@7.28.0': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helpers': 7.28.2 - '@babel/parser': 7.28.0 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 - convert-source-map: 2.0.0 - debug: 4.3.5 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.28.0': - dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.27.2': - dependencies: - '@babel/compat-data': 7.28.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.1 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-globals@7.28.0': {} - - '@babel/helper-module-imports@7.27.1': - dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/helper-validator-identifier@7.27.1': {} - - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helpers@7.28.2': - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.2 - - '@babel/highlight@7.24.7': - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 - - '@babel/parser@7.28.0': - dependencies: - '@babel/types': 7.28.2 - - '@babel/template@7.27.2': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 - - '@babel/traverse@7.28.0': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.0 - '@babel/template': 7.27.2 - '@babel/types': 7.28.2 - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.28.2': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - - '@commitlint/cli@17.8.1': - dependencies: - '@commitlint/format': 17.8.1 - '@commitlint/lint': 17.8.1 - '@commitlint/load': 17.8.1 - '@commitlint/read': 17.8.1 - '@commitlint/types': 17.8.1 - execa: 5.1.1 - lodash.isfunction: 3.0.9 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@commitlint/config-conventional@17.8.1': - dependencies: - conventional-changelog-conventionalcommits: 6.1.0 - - '@commitlint/config-validator@17.8.1': - dependencies: - '@commitlint/types': 17.8.1 - ajv: 8.16.0 - - '@commitlint/ensure@17.8.1': - dependencies: - '@commitlint/types': 17.8.1 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.snakecase: 4.1.1 - lodash.startcase: 4.4.0 - lodash.upperfirst: 4.3.1 - - '@commitlint/execute-rule@17.8.1': {} - - '@commitlint/format@17.8.1': - dependencies: - '@commitlint/types': 17.8.1 - chalk: 4.1.2 - - '@commitlint/is-ignored@17.8.1': - dependencies: - '@commitlint/types': 17.8.1 - semver: 7.5.4 - - '@commitlint/lint@17.8.1': - dependencies: - '@commitlint/is-ignored': 17.8.1 - '@commitlint/parse': 17.8.1 - '@commitlint/rules': 17.8.1 - '@commitlint/types': 17.8.1 - - '@commitlint/load@17.8.1': - dependencies: - '@commitlint/config-validator': 17.8.1 - '@commitlint/execute-rule': 17.8.1 - '@commitlint/resolve-extends': 17.8.1 - '@commitlint/types': 17.8.1 - '@types/node': 20.5.1 - chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.4.5) - cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.4.5))(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5))(typescript@5.4.5) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - resolve-from: 5.0.0 - ts-node: 10.9.2(@types/node@20.5.1)(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@commitlint/message@17.8.1': {} - - '@commitlint/parse@17.8.1': - dependencies: - '@commitlint/types': 17.8.1 - conventional-changelog-angular: 6.0.0 - conventional-commits-parser: 4.0.0 - - '@commitlint/read@17.8.1': - dependencies: - '@commitlint/top-level': 17.8.1 - '@commitlint/types': 17.8.1 - fs-extra: 11.2.0 - git-raw-commits: 2.0.11 - minimist: 1.2.8 - - '@commitlint/resolve-extends@17.8.1': - dependencies: - '@commitlint/config-validator': 17.8.1 - '@commitlint/types': 17.8.1 - import-fresh: 3.3.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - - '@commitlint/rules@17.8.1': - dependencies: - '@commitlint/ensure': 17.8.1 - '@commitlint/message': 17.8.1 - '@commitlint/to-lines': 17.8.1 - '@commitlint/types': 17.8.1 - execa: 5.1.1 - - '@commitlint/to-lines@17.8.1': {} - - '@commitlint/top-level@17.8.1': - dependencies: - find-up: 5.0.0 - - '@commitlint/types@17.8.1': - dependencies: - chalk: 4.1.2 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@esbuild/android-arm64@0.18.20': - optional: true - - '@esbuild/android-arm@0.18.20': - optional: true - - '@esbuild/android-x64@0.18.20': - optional: true - - '@esbuild/darwin-arm64@0.18.20': - optional: true - - '@esbuild/darwin-x64@0.18.20': - optional: true - - '@esbuild/freebsd-arm64@0.18.20': - optional: true - - '@esbuild/freebsd-x64@0.18.20': - optional: true - - '@esbuild/linux-arm64@0.18.20': - optional: true - - '@esbuild/linux-arm@0.18.20': - optional: true - - '@esbuild/linux-ia32@0.18.20': - optional: true - - '@esbuild/linux-loong64@0.18.20': - optional: true - - '@esbuild/linux-mips64el@0.18.20': - optional: true - - '@esbuild/linux-ppc64@0.18.20': - optional: true - - '@esbuild/linux-riscv64@0.18.20': - optional: true - - '@esbuild/linux-s390x@0.18.20': - optional: true - - '@esbuild/linux-x64@0.18.20': - optional: true - - '@esbuild/netbsd-x64@0.18.20': - optional: true - - '@esbuild/openbsd-x64@0.18.20': - optional: true - - '@esbuild/sunos-x64@0.18.20': - optional: true - - '@esbuild/win32-arm64@0.18.20': - optional: true - - '@esbuild/win32-ia32@0.18.20': - optional: true - - '@esbuild/win32-x64@0.18.20': - optional: true - - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.10.1': {} - - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.3.5 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@8.57.0': {} - - '@humanwhocodes/config-array@0.11.14': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.5 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/object-schema@2.0.3': {} - - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.0': - dependencies: - '@isaacs/balanced-match': 4.0.1 - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.13.1 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.3': {} - - '@jridgewell/gen-mapping@0.3.12': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/sourcemap-codec@1.5.4': {} - - '@jridgewell/trace-mapping@0.3.29': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@microsoft/api-documenter@7.25.21(@types/node@20.14.2)': - dependencies: - '@microsoft/api-extractor-model': 7.29.8(@types/node@20.14.2) - '@microsoft/tsdoc': 0.15.0 - '@rushstack/node-core-library': 5.9.0(@types/node@20.14.2) - '@rushstack/terminal': 0.14.2(@types/node@20.14.2) - '@rushstack/ts-command-line': 4.23.0(@types/node@20.14.2) - js-yaml: 3.13.1 - resolve: 1.22.8 - transitivePeerDependencies: - - '@types/node' - - '@microsoft/api-extractor-model@7.29.8(@types/node@20.14.2)': - dependencies: - '@microsoft/tsdoc': 0.15.0 - '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.9.0(@types/node@20.14.2) - transitivePeerDependencies: - - '@types/node' - - '@microsoft/api-extractor@7.47.11(@types/node@20.14.2)': - dependencies: - '@microsoft/api-extractor-model': 7.29.8(@types/node@20.14.2) - '@microsoft/tsdoc': 0.15.0 - '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.9.0(@types/node@20.14.2) - '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.2(@types/node@20.14.2) - '@rushstack/ts-command-line': 4.23.0(@types/node@20.14.2) - lodash: 4.17.21 - minimatch: 3.0.8 - resolve: 1.22.8 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.4.2 - transitivePeerDependencies: - - '@types/node' - - '@microsoft/tsdoc-config@0.17.0': - dependencies: - '@microsoft/tsdoc': 0.15.0 - ajv: 8.12.0 - jju: 1.4.0 - resolve: 1.22.8 - - '@microsoft/tsdoc@0.15.0': {} - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@playwright/test@1.55.0': - dependencies: - playwright: 1.55.0 - - '@rollup/plugin-strip@3.0.4(rollup@3.29.4)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - estree-walker: 2.0.2 - magic-string: 0.30.10 - optionalDependencies: - rollup: 3.29.4 - - '@rollup/pluginutils@5.1.0(rollup@3.29.4)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 3.29.4 - - '@rushstack/node-core-library@5.9.0(@types/node@20.14.2)': - dependencies: - ajv: 8.13.0 - ajv-draft-04: 1.0.0(ajv@8.13.0) - ajv-formats: 3.0.1(ajv@8.13.0) - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.8 - semver: 7.5.4 - optionalDependencies: - '@types/node': 20.14.2 - - '@rushstack/rig-package@0.5.3': - dependencies: - resolve: 1.22.8 - strip-json-comments: 3.1.1 - - '@rushstack/terminal@0.14.2(@types/node@20.14.2)': - dependencies: - '@rushstack/node-core-library': 5.9.0(@types/node@20.14.2) - supports-color: 8.1.1 - optionalDependencies: - '@types/node': 20.14.2 - - '@rushstack/ts-command-line@4.23.0(@types/node@20.14.2)': - dependencies: - '@rushstack/terminal': 0.14.2(@types/node@20.14.2) - '@types/argparse': 1.0.38 - argparse: 1.0.10 - string-argv: 0.3.2 - transitivePeerDependencies: - - '@types/node' - - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@types/argparse@1.0.38': {} - - '@types/estree@1.0.5': {} - - '@types/json-schema@7.0.15': {} - - '@types/minimist@1.2.5': {} - - '@types/node@20.14.2': - dependencies: - undici-types: 5.26.5 - - '@types/node@20.5.1': {} - - '@types/normalize-package-data@2.4.4': {} - - '@types/semver@7.5.8': {} - - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/regexpp': 4.10.1 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.5 - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare-lite: 1.4.0 - semver: 7.6.2 - tsutils: 3.21.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) - debug: 4.3.5 - eslint: 8.57.0 - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@5.62.0': - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - - '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.5 - eslint: 8.57.0 - tsutils: 3.21.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@5.62.0': {} - - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5)': - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.5 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.6.2 - tsutils: 3.21.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) - eslint: 8.57.0 - eslint-scope: 5.1.1 - semver: 7.6.2 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@5.62.0': - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - - '@ungap/structured-clone@1.2.0': {} - - '@viselect/vanilla@3.9.0': {} - - '@zumer/snapdom@1.3.0': {} - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - acorn-jsx@5.3.2(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - - acorn-jsx@5.3.2(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - - acorn-walk@8.3.2: {} - - acorn@8.11.3: {} - - acorn@8.15.0: {} - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - ajv-draft-04@1.0.0(ajv@8.13.0): - optionalDependencies: - ajv: 8.13.0 - - ajv-formats@3.0.1(ajv@8.13.0): - optionalDependencies: - ajv: 8.13.0 - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.12.0: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - - ajv@8.13.0: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - - ajv@8.16.0: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - - ansi-escapes@5.0.0: - dependencies: - type-fest: 1.4.0 - - ansi-regex@5.0.1: {} - - ansi-regex@6.0.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - append-transform@2.0.0: - dependencies: - default-require-extensions: 3.0.1 - - archy@1.0.0: {} - - arg@4.1.3: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - array-ify@1.0.0: {} - - array-union@2.1.0: {} - - arrify@1.0.1: {} - - balanced-match@1.0.2: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.2: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.25.1: - dependencies: - caniuse-lite: 1.0.30001731 - electron-to-chromium: 1.5.195 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.1) - - caching-transform@4.0.0: - dependencies: - hasha: 5.2.2 - make-dir: 3.1.0 - package-hash: 4.0.0 - write-file-atomic: 3.0.3 - - callsites@3.1.0: {} - - camelcase-keys@6.2.2: - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - - camelcase@5.3.1: {} - - caniuse-lite@1.0.30001731: {} - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - clean-stack@2.2.0: {} - - cli-cursor@4.0.0: - dependencies: - restore-cursor: 4.0.0 - - cli-truncate@3.1.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 - - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - colorette@2.0.20: {} - - commander@11.0.0: {} - - commander@8.3.0: {} - - commondir@1.0.1: {} - - compare-func@2.0.0: - dependencies: - array-ify: 1.0.0 - dot-prop: 5.3.0 - - concat-map@0.0.1: {} - - conventional-changelog-angular@6.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-conventionalcommits@6.1.0: - dependencies: - compare-func: 2.0.0 - - conventional-commits-parser@4.0.0: - dependencies: - JSONStream: 1.3.5 - is-text-path: 1.0.1 - meow: 8.1.2 - split2: 3.2.2 - - convert-source-map@1.9.0: {} - - convert-source-map@2.0.0: {} - - copy-anything@2.0.6: - dependencies: - is-what: 3.14.1 - - cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.4.5))(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5))(typescript@5.4.5): - dependencies: - '@types/node': 20.5.1 - cosmiconfig: 8.3.6(typescript@5.4.5) - ts-node: 10.9.2(@types/node@20.5.1)(typescript@5.4.5) - typescript: 5.4.5 - - cosmiconfig@8.3.6(typescript@5.4.5): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.4.5 - - create-require@1.1.1: {} - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - dargs@7.0.0: {} - - debug@4.3.4: - dependencies: - ms: 2.1.2 - - debug@4.3.5: - dependencies: - ms: 2.1.2 - - decamelize-keys@1.1.1: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - decamelize@1.2.0: {} - - deep-is@0.1.4: {} - - default-require-extensions@3.0.1: - dependencies: - strip-bom: 4.0.0 - - diff@4.0.2: {} - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - - dot-prop@5.3.0: - dependencies: - is-obj: 2.0.0 - - eastasianwidth@0.2.0: {} - - electron-to-chromium@1.5.195: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - errno@0.1.8: - dependencies: - prr: 1.0.1 - optional: true - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - es6-error@4.1.1: {} - - esbuild@0.18.20: - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - - escalade@3.1.2: {} - - escalade@3.2.0: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@4.0.0: {} - - eslint-config-prettier@8.10.0(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - - eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.4): - dependencies: - eslint: 8.57.0 - prettier: 2.8.4 - prettier-linter-helpers: 1.0.0 - optionalDependencies: - eslint-config-prettier: 8.10.0(eslint@8.57.0) - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.1: {} - - eslint@8.57.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.5 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - espree@10.4.0: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 - - espree@9.6.1: - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 - - esprima@4.0.1: {} - - esquery@1.5.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - - estree-walker@2.0.2: {} - - esutils@2.0.3: {} - - eventemitter3@5.0.1: {} - - execa@5.1.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@7.2.0: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - - fast-deep-equal@3.1.3: {} - - fast-diff@1.3.0: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.7 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-cache-dir@3.3.2: - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@3.2.0: - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - rimraf: 3.0.2 - - flatted@3.3.1: {} - - foreground-child@2.0.0: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 3.0.7 - - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - fromentries@1.3.2: {} - - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@7.0.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs.realpath@1.0.0: {} - - fsevents@2.3.2: - optional: true - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - gensync@1.0.0-beta.2: {} - - get-caller-file@2.0.5: {} - - get-package-type@0.1.0: {} - - get-stream@6.0.1: {} - - git-raw-commits@2.0.11: - dependencies: - dargs: 7.0.0 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - glob@11.0.3: - dependencies: - foreground-child: 3.3.1 - jackspeak: 4.1.1 - minimatch: 10.0.3 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - global-dirs@0.1.1: - dependencies: - ini: 1.3.8 - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - - graceful-fs@4.2.11: {} - - graphemer@1.4.0: {} - - hard-rejection@2.1.0: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - hasha@5.2.2: - dependencies: - is-stream: 2.0.1 - type-fest: 0.8.1 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hosted-git-info@2.8.9: {} - - hosted-git-info@4.1.0: - dependencies: - lru-cache: 6.0.0 - - html-escaper@2.0.2: {} - - human-signals@2.1.0: {} - - human-signals@4.3.1: {} - - husky@8.0.3: {} - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - optional: true - - ignore@5.3.1: {} - - image-size@0.5.5: - optional: true - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-lazy@4.0.0: {} - - imurmurhash@0.1.4: {} - - indent-string@4.0.0: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - ini@1.3.8: {} - - is-arrayish@0.2.1: {} - - is-core-module@2.13.1: - dependencies: - hasown: 2.0.2 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-fullwidth-code-point@4.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-obj@2.0.0: {} - - is-path-inside@3.0.3: {} - - is-plain-obj@1.1.0: {} - - is-stream@2.0.1: {} - - is-stream@3.0.0: {} - - is-text-path@1.0.1: - dependencies: - text-extensions: 1.9.0 - - is-typedarray@1.0.0: {} - - is-what@3.14.1: {} - - is-windows@1.0.2: {} - - isexe@2.0.0: {} - - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-hook@3.0.0: - dependencies: - append-transform: 2.0.0 - - istanbul-lib-instrument@6.0.3: - dependencies: - '@babel/core': 7.28.0 - '@babel/parser': 7.28.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.6.2 - transitivePeerDependencies: - - supports-color - - istanbul-lib-processinfo@2.0.3: - dependencies: - archy: 1.0.0 - cross-spawn: 7.0.6 - istanbul-lib-coverage: 3.2.2 - p-map: 3.0.0 - rimraf: 3.0.2 - uuid: 8.3.2 - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-lib-source-maps@4.0.1: - dependencies: - debug: 4.3.5 - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - - istanbul-reports@3.1.7: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jackspeak@4.1.1: - dependencies: - '@isaacs/cliui': 8.0.2 - - jju@1.4.0: {} - - js-tokens@4.0.0: {} - - js-yaml@3.13.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jsesc@3.1.0: {} - - json-buffer@3.0.1: {} - - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json5@2.2.3: {} - - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonparse@1.3.1: {} - - katex@0.16.22: - dependencies: - commander: 8.3.0 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - kind-of@6.0.3: {} - - less@4.2.0: - dependencies: - copy-anything: 2.0.6 - parse-node-version: 1.0.1 - tslib: 2.6.3 - optionalDependencies: - errno: 0.1.8 - graceful-fs: 4.2.11 - image-size: 0.5.5 - make-dir: 2.1.0 - mime: 1.6.0 - needle: 3.3.1 - source-map: 0.6.1 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lilconfig@2.1.0: {} - - lines-and-columns@1.2.4: {} - - lint-staged@13.3.0: - dependencies: - chalk: 5.3.0 - commander: 11.0.0 - debug: 4.3.4 - execa: 7.2.0 - lilconfig: 2.1.0 - listr2: 6.6.1 - micromatch: 4.0.5 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.3.1 - transitivePeerDependencies: - - enquirer - - supports-color - - listr2@6.6.1: - dependencies: - cli-truncate: 3.1.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 5.0.1 - rfdc: 1.3.1 - wrap-ansi: 8.1.0 - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.camelcase@4.3.0: {} - - lodash.flattendeep@4.4.0: {} - - lodash.isfunction@3.0.9: {} - - lodash.isplainobject@4.0.6: {} - - lodash.kebabcase@4.1.1: {} - - lodash.merge@4.6.2: {} - - lodash.mergewith@4.6.2: {} - - lodash.snakecase@4.1.1: {} - - lodash.startcase@4.4.0: {} - - lodash.uniq@4.5.0: {} - - lodash.upperfirst@4.3.1: {} - - lodash@4.17.21: {} - - log-update@5.0.1: - dependencies: - ansi-escapes: 5.0.0 - cli-cursor: 4.0.0 - slice-ansi: 5.0.0 - strip-ansi: 7.1.0 - wrap-ansi: 8.1.0 - - lru-cache@10.4.3: {} - - lru-cache@11.1.0: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - magic-string@0.30.10: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 5.7.2 - optional: true - - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - - make-dir@4.0.0: - dependencies: - semver: 7.6.2 - - make-error@1.3.6: {} - - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - - marked@16.2.0: {} - - meow@8.1.2: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - micromatch@4.0.5: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - micromatch@4.0.7: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime@1.6.0: - optional: true - - mimic-fn@2.1.0: {} - - mimic-fn@4.0.0: {} - - min-indent@1.0.1: {} - - minimatch@10.0.3: - dependencies: - '@isaacs/brace-expansion': 5.0.0 - - minimatch@3.0.8: - dependencies: - brace-expansion: 1.1.11 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.2 - - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - - minimist@1.2.8: {} - - minipass@7.1.2: {} - - ms@2.1.2: {} - - nanoid@3.3.7: {} - - natural-compare-lite@1.4.0: {} - - natural-compare@1.4.0: {} - - needle@3.3.1: - dependencies: - iconv-lite: 0.6.3 - sax: 1.4.1 - optional: true - - node-preload@0.2.1: - dependencies: - process-on-spawn: 1.1.0 - - node-releases@2.0.19: {} - - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - - normalize-package-data@3.0.3: - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.13.1 - semver: 7.6.2 - validate-npm-package-license: 3.0.4 - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - nyc@17.1.0: - dependencies: - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - caching-transform: 4.0.0 - convert-source-map: 1.9.0 - decamelize: 1.2.0 - find-cache-dir: 3.3.2 - find-up: 4.1.0 - foreground-child: 3.3.1 - get-package-type: 0.1.0 - glob: 7.2.3 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-hook: 3.0.0 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-processinfo: 2.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - make-dir: 3.1.0 - node-preload: 0.2.1 - p-map: 3.0.0 - process-on-spawn: 1.1.0 - resolve-from: 5.0.0 - rimraf: 3.0.2 - signal-exit: 3.0.7 - spawn-wrap: 2.0.0 - test-exclude: 6.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - supports-color - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-map@3.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-try@2.2.0: {} - - package-hash@4.0.0: - dependencies: - graceful-fs: 4.2.11 - hasha: 5.2.2 - lodash.flattendeep: 4.4.0 - release-zalgo: 1.0.0 - - package-json-from-dist@1.0.1: {} - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.24.7 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parse-node-version@1.0.1: {} - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-parse@1.0.7: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-scurry@2.0.0: - dependencies: - lru-cache: 11.1.0 - minipass: 7.1.2 - - path-type@4.0.0: {} - - picocolors@1.0.1: {} - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - pidtree@0.6.0: {} - - pify@4.0.1: - optional: true - - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - - playwright-core@1.55.0: {} - - playwright@1.55.0: - dependencies: - playwright-core: 1.55.0 - optionalDependencies: - fsevents: 2.3.2 - - postcss@8.4.38: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - prelude-ls@1.2.1: {} - - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - - prettier@2.8.4: {} - - process-on-spawn@1.1.0: - dependencies: - fromentries: 1.3.2 - - prr@1.0.1: - optional: true - - punycode@2.3.1: {} - - queue-microtask@1.2.3: {} - - quick-lru@4.0.1: {} - - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - - release-zalgo@1.0.0: - dependencies: - es6-error: 4.1.1 - - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} - - require-main-filename@2.0.0: {} - - resolve-from@4.0.0: {} - - resolve-from@5.0.0: {} - - resolve-global@1.0.0: - dependencies: - global-dirs: 0.1.1 - - resolve@1.22.8: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - restore-cursor@4.0.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - reusify@1.0.4: {} - - rfdc@1.3.1: {} - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - - rimraf@6.0.1: - dependencies: - glob: 11.0.3 - package-json-from-dist: 1.0.1 - - rollup@3.29.4: - optionalDependencies: - fsevents: 2.3.3 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.2.1: {} - - safer-buffer@2.1.2: - optional: true - - sax@1.4.1: - optional: true - - semver@5.7.2: {} - - semver@6.3.1: {} - - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.2: {} - - set-blocking@2.0.0: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - simple-markdown-to-html@1.0.0: {} - - slash@3.0.0: {} - - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - source-map-js@1.2.0: {} - - source-map@0.6.1: {} - - source-map@0.7.6: {} - - spawn-wrap@2.0.0: - dependencies: - foreground-child: 2.0.0 - is-windows: 1.0.2 - make-dir: 3.1.0 - rimraf: 3.0.2 - signal-exit: 3.0.7 - which: 2.0.2 - - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.18 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.18 - - spdx-license-ids@3.0.18: {} - - split2@3.2.2: - dependencies: - readable-stream: 3.6.2 - - sprintf-js@1.0.3: {} - - string-argv@0.3.2: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - - strip-bom@4.0.0: {} - - strip-final-newline@2.0.0: {} - - strip-final-newline@3.0.0: {} - - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - - strip-json-comments@3.1.1: {} - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - - test-exclude@7.0.1: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 - minimatch: 9.0.5 - - text-extensions@1.9.0: {} - - text-table@0.2.0: {} - - through2@4.0.2: - dependencies: - readable-stream: 3.6.2 - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - trim-newlines@3.0.1: {} - - ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.5.1 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.4.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - tslib@1.14.1: {} - - tslib@2.6.3: {} - - tsutils@3.21.0(typescript@5.4.5): - dependencies: - tslib: 1.14.1 - typescript: 5.4.5 - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-fest@0.18.1: {} - - type-fest@0.20.2: {} - - type-fest@0.6.0: {} - - type-fest@0.8.1: {} - - type-fest@1.4.0: {} - - typedarray-to-buffer@3.1.5: - dependencies: - is-typedarray: 1.0.0 - - typescript@5.4.2: {} - - typescript@5.4.5: {} - - undici-types@5.26.5: {} - - universalify@0.1.2: {} - - universalify@2.0.1: {} - - update-browserslist-db@1.1.3(browserslist@4.25.1): - dependencies: - browserslist: 4.25.1 - escalade: 3.2.0 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - util-deprecate@1.0.2: {} - - uuid@8.3.2: {} - - v8-compile-cache-lib@3.0.1: {} - - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - vite-plugin-istanbul@7.1.0(vite@4.5.3(@types/node@20.14.2)(less@4.2.0)): - dependencies: - '@istanbuljs/load-nyc-config': 1.1.0 - espree: 10.4.0 - istanbul-lib-instrument: 6.0.3 - picocolors: 1.1.1 - source-map: 0.7.6 - test-exclude: 7.0.1 - vite: 4.5.3(@types/node@20.14.2)(less@4.2.0) - transitivePeerDependencies: - - supports-color - - vite@4.5.3(@types/node@20.14.2)(less@4.2.0): - dependencies: - esbuild: 0.18.20 - postcss: 8.4.38 - rollup: 3.29.4 - optionalDependencies: - '@types/node': 20.14.2 - fsevents: 2.3.3 - less: 4.2.0 - - which-module@2.0.1: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - word-wrap@1.2.5: {} - - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - wrappy@1.0.2: {} - - write-file-atomic@3.0.3: - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - - y18n@4.0.3: {} - - y18n@5.0.8: {} - - yallist@3.1.1: {} - - yallist@4.0.0: {} - - yaml@2.3.1: {} - - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - - yargs-parser@20.2.9: {} - - yargs-parser@21.1.1: {} - - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.1.2 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yn@3.1.1: {} - - yocto-queue@0.1.0: {} diff --git a/mind-elixir-core-master/readme.md b/mind-elixir-core-master/readme.md deleted file mode 100644 index c14d29f..0000000 --- a/mind-elixir-core-master/readme.md +++ /dev/null @@ -1,432 +0,0 @@ -

    - - mindelixir logo2 - -

    Mind Elixir

    -

    - -

    - - version - - - license - - - code quality - - - dependency-count - - - package size - -

    - -[English](/readme.md) | -[中文](/readme/zh.md) | -[Español](/readme/es.md) | -[Français](/readme/fr.md) | -[Português](/readme/pt.md) | -[Русский](/readme/ru.md) | -[日本語](/readme/ja.md) | -[한국어](/readme/ko.md) - -Mind elixir is a open source JavaScript mind map core. You can use it with any frontend framework you like. - -## Features - -### 🎨 **User Experience** - -- **Fluent UX** - Smooth and intuitive interactions -- **Well designed** - Clean and modern interface -- **Mobile friendly** - Touch events for mobile devices -- **Efficient shortcuts** - Keyboard shortcuts for power users - -### ⚡ **Performance & Architecture** - -- **Lightweight** - Minimal bundle size -- **High performance** - Optimized for large mind maps -- **Framework agnostic** - Works with any frontend framework -- **Pluginable** - Extensible architecture - -### 🛠️ **Core Features** - -- **Interactive editing** - Built-in drag and drop / node edit capabilities -- **Bulk operations** - Multi-node selection and operations -- **Undo / Redo** - Complete operation history -- **Node connections & summarization** - Custom node linking and content summarization - -### 📤 **Export & Customization** - -- **Multiple export formats** - SVG / PNG / HTML export -- **Easy styling** - Customize mindmap with CSS variables -- **Theme support** - Built-in themes and custom styling - -[v5 Breaking Changes](https://github.com/SSShooter/mind-elixir-core/wiki/Breaking-Change#500) - -
    -Table of Contents - -- [Features](#features) - - [🎨 **User Experience**](#-user-experience) - - [⚡ **Performance \& Architecture**](#-performance--architecture) - - [🛠️ **Core Features**](#️-core-features) - - [📤 **Export \& Customization**](#-export--customization) -- [Try now](#try-now) - - [Playground](#playground) -- [Documentation](#documentation) -- [Usage](#usage) - - [Install](#install) - - [NPM](#npm) - - [Script tag](#script-tag) - - [Init](#init) - - [Data Structure](#data-structure) - - [Event Handling](#event-handling) - - [Data Export And Import](#data-export-and-import) - - [Operation Guards](#operation-guards) -- [Export as a Image](#export-as-a-image) -- [Theme](#theme) -- [Shortcuts](#shortcuts) -- [Who's using](#whos-using) -- [Ecosystem](#ecosystem) -- [Development](#development) -- [Thanks](#thanks) -- [Contributors](#contributors) - -
    - -## Try now - -![mindelixir](https://raw.githubusercontent.com/ssshooter/mind-elixir-core/master/images/screenshot5.jpg) - -https://mind-elixir.com/ - -### Playground - -- Vanilla JS - https://codepen.io/ssshooter/pen/vEOqWjE -- React - https://codesandbox.io/p/devbox/mind-elixir-3-x-react-18-x-forked-f3mtcd -- Vue3 - https://codesandbox.io/p/sandbox/mind-elixir-3-x-vue3-lth484 - -## Documentation - -https://docs.mind-elixir.com/ - -## Usage - -### Install - -#### NPM - -```bash -npm i mind-elixir -S -``` - -```javascript -import MindElixir from 'mind-elixir' -import 'mind-elixir/style.css' -``` - -#### Script tag - -```html - -``` - -And in your CSS file: - -```css -@import 'https://cdn.jsdelivr.net/npm/mind-elixir/dist/style.css'; -``` - -### Init - -```html -
    - -``` - -```javascript -import MindElixir from 'mind-elixir' -import 'mind-elixir/style.css' -import example from 'mind-elixir/dist/example1' - -let options = { - el: '#map', // or HTMLDivElement - direction: MindElixir.LEFT, - draggable: true, // default true - toolBar: true, // default true - nodeMenu: true, // default true - keypress: true, // default true - locale: 'en', // [zh_CN,zh_TW,en,ja,pt,ru] waiting for PRs - overflowHidden: false, // default false - mainLinkStyle: 2, // [1,2] default 1 - mouseSelectionButton: 0, // 0 for left button, 2 for right button, default 0 - contextMenu: { - focus: true, - link: true, - extend: [ - { - name: 'Node edit', - onclick: () => { - alert('extend menu') - }, - }, - ], - }, // default true - before: { - insertSibling(type, obj) { - return true - }, - }, - // Custom markdown parser (optional) - // markdown: (text) => customMarkdownParser(text), // provide your own markdown parser function -} - -let mind = new MindElixir(options) - -mind.install(plugin) // install your plugin - -// create new map data -const data = MindElixir.new('new topic') -// or `example` -// or the data return from `.getData()` -mind.init(data) - -// get a node -MindElixir.E('node-id') -``` - -### Data Structure - -```javascript -// whole node data structure up to now -const nodeData = { - topic: 'node topic', - id: 'bd1c24420cd2c2f5', - style: { fontSize: '32', color: '#3298db', background: '#ecf0f1' }, - expanded: true, - parent: null, - tags: ['Tag'], - icons: ['😀'], - hyperLink: 'https://github.com/ssshooter/mind-elixir-core', - image: { - url: 'https://raw.githubusercontent.com/ssshooter/mind-elixir-core/master/images/logo2.png', // required - // you need to query the height and width of the image and calculate the appropriate value to display the image - height: 90, // required - width: 90, // required - }, - children: [ - { - topic: 'child', - id: 'xxxx', - // ... - }, - ], -} -``` - -### Event Handling - -```javascript -mind.bus.addListener('operation', operation => { - console.log(operation) - // return { - // name: action name, - // obj: target object - // } - - // name: [insertSibling|addChild|removeNode|beginEdit|finishEdit] - // obj: target - - // name: moveNode - // obj: {from:target1,to:target2} -}) - -mind.bus.addListener('selectNodes', nodes => { - console.log(nodes) -}) - -mind.bus.addListener('expandNode', node => { - console.log('expandNode: ', node) -}) -``` - -### Data Export And Import - -```javascript -// data export -const data = mind.getData() // javascript object, see src/example.js -mind.getDataString() // stringify object - -// data import -// initiate -let mind = new MindElixir(options) -mind.init(data) -// data update -mind.refresh(data) -``` - -### Markdown Support - -Mind Elixir supports custom markdown parsing: - -```javascript -// Disable markdown (default) -let mind = new MindElixir({ - // markdown option omitted - no markdown processing -}) - -// Use custom markdown parser -let mind = new MindElixir({ - markdown: (text) => { - // Your custom markdown implementation - return text - .replace(/\*\*(.*?)\*\*/g, '$1') - .replace(/\*(.*?)\*/g, '$1') - .replace(/`(.*?)`/g, '$1') - }, -}) - -// Use any markdown library (e.g., marked, markdown-it, etc.) -import { marked } from 'marked' -let mind = new MindElixir({ - markdown: (text) => marked(text), -}) -``` - -For detailed markdown configuration examples, see [docs/markdown-configuration.md](docs/markdown-configuration.md). - -### Operation Guards - -```javascript -let mind = new MindElixir({ - // ... - before: { - async addChild(el, obj) { - await saveDataToDb() - return true - }, - }, -}) -``` - -## Export as a Image - -Install `@ssshooter/modern-screenshot`, then: - -```typescript -import { domToPng } from '@ssshooter/modern-screenshot' - -const download = async () => { - const dataUrl = await domToPng(mind.nodes, { - padding: 300, - quality: 1, - }) - const link = document.createElement('a') - link.download = 'screenshot.png' - link.href = dataUrl - link.click() -} -``` - -## Theme - -```javascript -const options = { - // ... - theme: { - name: 'Dark', - // main lines color palette - palette: ['#848FA0', '#748BE9', '#D2F9FE', '#4145A5', '#789AFA', '#706CF4', '#EF987F', '#775DD5', '#FCEECF', '#DA7FBC'], - // overwrite css variables - cssVar: { - '--main-color': '#ffffff', - '--main-bgcolor': '#4c4f69', - '--color': '#cccccc', - '--bgcolor': '#252526', - '--panel-color': '255, 255, 255', - '--panel-bgcolor': '45, 55, 72', - }, - // all variables see /src/index.less - }, - // ... -} - -// ... - -mind.changeTheme({ - name: 'Latte', - palette: ['#dd7878', '#ea76cb', '#8839ef', '#e64553', '#fe640b', '#df8e1d', '#40a02b', '#209fb5', '#1e66f5', '#7287fd'], - cssVar: { - '--main-color': '#444446', - '--main-bgcolor': '#ffffff', - '--color': '#777777', - '--bgcolor': '#f6f6f6', - }, -}) -``` - -Be aware that Mind Elixir will not observe the change of `prefers-color-scheme`. Please change the theme **manually** when the scheme changes. - -## Shortcuts - -See [Shortcuts Guide](https://docs.mind-elixir.com/docs/guides/shortcuts) for detailed information. - -## Who's using - -- [Mind Elixir Desktop](https://desktop.mind-elixir.com/) - -## Ecosystem - -- [@mind-elixir/node-menu](https://github.com/ssshooter/node-menu) -- [@mind-elixir/node-menu-neo](https://github.com/ssshooter/node-menu-neo) -- [@mind-elixir/export-xmind](https://github.com/ssshooter/export-xmind) -- [@mind-elixir/export-html](https://github.com/ssshooter/export-html) -- [mind-elixir-react](https://github.com/ssshooter/mind-elixir-react) - -PRs are welcome! - -## Development - -``` -pnpm i -pnpm dev -``` - -Test generated files with `dev.dist.ts`: - -``` -pnpm build -pnpm link ./ -``` - -Update docs: - -``` -# Install api-extractor -pnpm install -g @microsoft/api-extractor -# Maintain /src/docs.ts -# Generate docs -pnpm doc -pnpm doc:md -``` - -Use [DeepWiki](https://deepwiki.com/SSShooter/mind-elixir-core) to learn more about Mind Elixir - -## Thanks - -- [@viselect/vanilla](https://github.com/simonwep/selection/tree/master/packages/vanilla) - -## Contributors - -Thanks for your contributions to Mind Elixir! Your support and dedication make this project better. - - - - diff --git a/mind-elixir-core-master/refs/scale-calc.excalidraw b/mind-elixir-core-master/refs/scale-calc.excalidraw deleted file mode 100644 index 5d63ed3..0000000 --- a/mind-elixir-core-master/refs/scale-calc.excalidraw +++ /dev/null @@ -1,1720 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "id": "fftsa4MU7xMIsISzw-9iN", - "type": "line", - "x": 14188.00819958561, - "y": 9038.419185734798, - "width": 387, - "height": 2, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "a5", - "roundness": { - "type": 2 - }, - "seed": 847805816, - "version": 93, - "versionNonce": 413580040, - "isDeleted": false, - "boundElements": null, - "updated": 1750388362786, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 387, - -2 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "7tjFyvoY4iF52CDI-assf", - "type": "line", - "x": 14019.00819958561, - "y": 9175.419185734798, - "width": 716, - "height": 7, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "a6", - "roundness": { - "type": 2 - }, - "seed": 1844882808, - "version": 115, - "versionNonce": 235524616, - "isDeleted": false, - "boundElements": null, - "updated": 1750389998164, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 716, - -7 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "IJRz4hicvZlRATHv6a30D", - "type": "text", - "x": 14650.00819958561, - "y": 9028.419185734798, - "width": 70.05595397949219, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "a7", - "roundness": null, - "seed": 823744888, - "version": 7, - "versionNonce": 408629368, - "isDeleted": false, - "boundElements": null, - "updated": 1750388102956, - "link": null, - "locked": false, - "text": "front", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "front", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "nq9hO7J2vXqNbqIFniHwj", - "type": "text", - "x": 14783.00819958561, - "y": 9135.419185734798, - "width": 50.2039794921875, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "a8", - "roundness": null, - "seed": 571368312, - "version": 35, - "versionNonce": 950240264, - "isDeleted": false, - "boundElements": null, - "updated": 1750389784075, - "link": null, - "locked": false, - "text": "map", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "map", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "qpLIZzhNf2zq0tbWbXSbp", - "type": "line", - "x": 14026.00819958561, - "y": 8964.419185734798, - "width": 1, - "height": 233, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 10, - "groupIds": [], - "frameId": null, - "index": "aB", - "roundness": { - "type": 2 - }, - "seed": 1185229832, - "version": 53, - "versionNonce": 1131620472, - "isDeleted": false, - "boundElements": null, - "updated": 1750393267007, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -1, - 233 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "DySj58Eb20jvSib3e1zGI", - "type": "line", - "x": 14182.00819958561, - "y": 8932.419185734798, - "width": 2, - "height": 265, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 10, - "groupIds": [], - "frameId": null, - "index": "aC", - "roundness": { - "type": 2 - }, - "seed": 368721784, - "version": 73, - "versionNonce": 1057733384, - "isDeleted": false, - "boundElements": null, - "updated": 1750393267007, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 2, - 265 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "62ktAiD7KTu_nhulDVAjv", - "type": "text", - "x": 14044.00819958561, - "y": 8983.419185734798, - "width": 132.55194091796875, - "height": 35, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 10, - "groupIds": [], - "frameId": null, - "index": "aD", - "roundness": null, - "seed": 1467723896, - "version": 35, - "versionNonce": 1424447864, - "isDeleted": false, - "boundElements": null, - "updated": 1750393267007, - "link": null, - "locked": false, - "text": "d default", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "d default", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "3yE4gfSMobvLq205bqSPF", - "type": "line", - "x": 13894.906209839517, - "y": 9341.919185734798, - "width": 721, - "height": 11, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aF", - "roundness": { - "type": 2 - }, - "seed": 490312456, - "version": 252, - "versionNonce": 1754864136, - "isDeleted": false, - "boundElements": [], - "updated": 1750389709434, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 721, - -11 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "wzpOz4jRkvtuZXbMeXz_e", - "type": "text", - "x": 14638.906209839517, - "y": 9293.919185734798, - "width": 50.2039794921875, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aG", - "roundness": null, - "seed": 1570894344, - "version": 189, - "versionNonce": 1714441848, - "isDeleted": false, - "boundElements": [], - "updated": 1750389789497, - "link": null, - "locked": false, - "text": "map", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "map", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "rlZzzIpoDj38omaaHNXg7", - "type": "line", - "x": 14254.629979486843, - "y": 9126.20148489247, - "width": 0.8301982632606513, - "height": 234.9461085027643, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aI", - "roundness": { - "type": 2 - }, - "seed": 1125722376, - "version": 166, - "versionNonce": 479436808, - "isDeleted": false, - "boundElements": null, - "updated": 1750393219811, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0.8301982632606513, - 234.9461085027643 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "G7sgZl422Y8_79Tq4VMnX", - "type": "line", - "x": 14379.217674095693, - "y": 9366.392636813718, - "width": 5.8113878428245584, - "height": 227.47432413341843, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aJ", - "roundness": { - "type": 2 - }, - "seed": 853598584, - "version": 432, - "versionNonce": 1829796616, - "isDeleted": false, - "boundElements": null, - "updated": 1750393227117, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -5.8113878428245584, - -227.47432413341843 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "YnnXtQJohAbuZqNR3TgPk", - "type": "text", - "x": 14270.40425444161, - "y": 9260.919836538742, - "width": 96.25978860360448, - "height": 29.056939214122796, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aK", - "roundness": null, - "seed": 1960306808, - "version": 214, - "versionNonce": 597718136, - "isDeleted": false, - "boundElements": null, - "updated": 1750393229087, - "link": null, - "locked": false, - "text": "d before", - "fontSize": 23.245551371298234, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "d before", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "1faWHtFW4zVYNACcMQaBc", - "type": "text", - "x": 14841.00819958561, - "y": 9297.419185734798, - "width": 78.2039794921875, - "height": 35, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aL", - "roundness": null, - "seed": 1189664264, - "version": 28, - "versionNonce": 823115640, - "isDeleted": false, - "boundElements": null, - "updated": 1750389789497, - "link": null, - "locked": false, - "text": "scale1", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "scale1", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "pw8bByjEDjdIDG3An5TEd", - "type": "text", - "x": 14786.00819958561, - "y": 9452.419185734798, - "width": 90.55197143554688, - "height": 35, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aN", - "roundness": null, - "seed": 119394568, - "version": 56, - "versionNonce": 246797832, - "isDeleted": false, - "boundElements": null, - "updated": 1750389792517, - "link": null, - "locked": false, - "text": "scale2", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "scale2", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "HbLD8fPTrK2kCTA7hJ1Zt", - "type": "line", - "x": 14104.906209839517, - "y": 9497.919185734798, - "width": 465, - "height": 7, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aO", - "roundness": { - "type": 2 - }, - "seed": 19345272, - "version": 752, - "versionNonce": 1266742024, - "isDeleted": false, - "boundElements": [], - "updated": 1750390891916, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 465, - -7 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "7nrG0repC7BcZsLZ4la2c", - "type": "text", - "x": 14705.906209839517, - "y": 9446.919185734798, - "width": 50.2039794921875, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aP", - "roundness": null, - "seed": 1820491896, - "version": 229, - "versionNonce": 1833976184, - "isDeleted": false, - "boundElements": [], - "updated": 1750389789497, - "link": null, - "locked": false, - "text": "map", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "map", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "Ynsh7VzQ3CHz6ovfEt1gn", - "type": "arrow", - "x": 14258.00819958561, - "y": 9363.419185734798, - "width": 2, - "height": 31, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 10, - "groupIds": [], - "frameId": null, - "index": "aS", - "roundness": { - "type": 2 - }, - "seed": 1603517304, - "version": 21, - "versionNonce": 1743323512, - "isDeleted": false, - "boundElements": null, - "updated": 1750389973998, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -2, - -31 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "elbowed": false - }, - { - "id": "-V114Haw0sd-SivHGD-fP", - "type": "arrow", - "x": 14343.00819958561, - "y": 9524.419185734798, - "width": 3, - "height": 28, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 10, - "groupIds": [], - "frameId": null, - "index": "aT", - "roundness": { - "type": 2 - }, - "seed": 928206856, - "version": 371, - "versionNonce": 201150984, - "isDeleted": false, - "boundElements": null, - "updated": 1750390891916, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -3, - -28 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "elbowed": false - }, - { - "id": "zDk1zE1CuXR9QowFTSmC_", - "type": "line", - "x": 14489.00819958561, - "y": 8875.419185734798, - "width": 12, - "height": 694, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aU", - "roundness": { - "type": 2 - }, - "seed": 1738346360, - "version": 75, - "versionNonce": 181814280, - "isDeleted": false, - "boundElements": null, - "updated": 1750393545719, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 12, - 694 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "eTJ9ysy9BvhwfmIpRUID2", - "type": "text", - "x": 14528.00819958561, - "y": 8875.419185734798, - "width": 199.94789123535156, - "height": 35, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aV", - "roundness": null, - "seed": 713929080, - "version": 17, - "versionNonce": 1504784904, - "isDeleted": false, - "boundElements": null, - "updated": 1750389779812, - "link": null, - "locked": false, - "text": "cursor position", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "cursor position", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "rMQ33fZlPvy7mrsOg-gud", - "type": "line", - "x": 14336.00819958561, - "y": 9385.419185734798, - "width": 3, - "height": 216, - "angle": 0, - "strokeColor": "#c2255c", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aX", - "roundness": { - "type": 2 - }, - "seed": 878793848, - "version": 181, - "versionNonce": 1168038008, - "isDeleted": false, - "boundElements": null, - "updated": 1750393242566, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 3, - 216 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "SawmKUbsNiZSWYvIsCAic", - "type": "line", - "x": 14381.00819958561, - "y": 9380.419185734798, - "width": 6, - "height": 223, - "angle": 0, - "strokeColor": "#c2255c", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aZ", - "roundness": { - "type": 2 - }, - "seed": 2043778168, - "version": 135, - "versionNonce": 877566072, - "isDeleted": false, - "boundElements": null, - "updated": 1750393235459, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 6, - 223 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "h1BBl2iU_UfygBqYkbkwK", - "type": "text", - "x": 14313.00819958561, - "y": 9424.419185734798, - "width": 105.39195251464844, - "height": 35, - "angle": 0, - "strokeColor": "#c2255c", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aa", - "roundness": null, - "seed": 1782899576, - "version": 137, - "versionNonce": 248686200, - "isDeleted": false, - "boundElements": null, - "updated": 1750393878268, - "link": null, - "locked": false, - "text": "d after", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "d after", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "TckGkPuj__HLpfAIhU-jA", - "type": "arrow", - "x": 14377.00819958561, - "y": 9204.419185734798, - "width": 3, - "height": 32, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 10, - "groupIds": [], - "frameId": null, - "index": "ac", - "roundness": { - "type": 2 - }, - "seed": 668351608, - "version": 20, - "versionNonce": 2044086392, - "isDeleted": false, - "boundElements": null, - "updated": 1750390571876, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -3, - -32 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "elbowed": false - }, - { - "id": "JiKYAm_VjoeLLDgCU9Imb", - "type": "arrow", - "x": 14384.952519707009, - "y": 9075.981474695613, - "width": 3, - "height": 32, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 10, - "groupIds": [], - "frameId": null, - "index": "ad", - "roundness": { - "type": 2 - }, - "seed": 1873877000, - "version": 34, - "versionNonce": 1006262392, - "isDeleted": false, - "boundElements": [], - "updated": 1750390580454, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -3, - -32 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "elbowed": false - }, - { - "id": "IB8IGab0ltP78jhpKiDoP", - "type": "line", - "x": 14386.00819958561, - "y": 8863.419185734798, - "width": 2, - "height": 178, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "af", - "roundness": { - "type": 2 - }, - "seed": 1759198984, - "version": 42, - "versionNonce": 1473366536, - "isDeleted": false, - "boundElements": null, - "updated": 1750393520427, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 2, - 178 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "AlaW_kW_Uw5pPmXsBl1yp", - "type": "text", - "x": 14380.00819958561, - "y": 9055.419185734798, - "width": 107.32791137695312, - "height": 20, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "ag", - "roundness": null, - "seed": 639322376, - "version": 89, - "versionNonce": 642109192, - "isDeleted": false, - "boundElements": null, - "updated": 1750393533791, - "link": null, - "locked": false, - "text": "cursor offset", - "fontSize": 16, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "cursor offset", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "7DCL4zn03YTmIu8pVNf96", - "type": "text", - "x": 14182.00819958561, - "y": 9295.919185734798, - "width": 216.83981323242188, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "ah", - "roundness": null, - "seed": 999432824, - "version": 143, - "versionNonce": 695819384, - "isDeleted": false, - "boundElements": [ - { - "id": "mPKfdGj03qjEnHgjgGQq3", - "type": "arrow" - } - ], - "updated": 1750399269779, - "link": null, - "locked": false, - "text": "db = before - default", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "db = before - default", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "7jaOlsfaw7IjuJFQrh1dK", - "type": "text", - "x": 14329.00819958561, - "y": 9519.419185734798, - "width": 191.91989135742188, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "ai", - "roundness": null, - "seed": 2043097464, - "version": 147, - "versionNonce": 2043309688, - "isDeleted": false, - "boundElements": null, - "updated": 1750393870327, - "link": null, - "locked": false, - "text": "(db + co) / s1 * s2", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "(db + co) / s1 * s2", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "bs3tF5j6n1zcKMP1SKViR", - "type": "line", - "x": 14255.00819958561, - "y": 9394.419185734798, - "width": 6, - "height": 208, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aj", - "roundness": { - "type": 2 - }, - "seed": 1102478600, - "version": 47, - "versionNonce": 420568696, - "isDeleted": false, - "boundElements": null, - "updated": 1750393685442, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 6, - 208 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "oWijyV3L7O1pwcRXujKHA", - "type": "text", - "x": 14271.865342442754, - "y": 9672.704900020512, - "width": 316.59979248046875, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "ak", - "roundness": null, - "seed": 1466041352, - "version": 304, - "versionNonce": 906305544, - "isDeleted": false, - "boundElements": [ - { - "id": "FDzfnoKseh2oIgEZHcTFf", - "type": "arrow" - } - ], - "updated": 1750398615105, - "link": null, - "locked": false, - "text": "res = (db + co) * (1 - s2 / s1)", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "res = (db + co) * (1 - s2 / s1)", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "FDzfnoKseh2oIgEZHcTFf", - "type": "arrow", - "x": 14293.715586509019, - "y": 9662.847757163368, - "width": 4.292613076591806, - "height": 58.42857142857065, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "am", - "roundness": { - "type": 2 - }, - "seed": 1094624632, - "version": 284, - "versionNonce": 1332993800, - "isDeleted": false, - "boundElements": null, - "updated": 1750398615105, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 4.292613076591806, - -58.42857142857065 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "oWijyV3L7O1pwcRXujKHA", - "focus": -0.86731380739671, - "gap": 9.857142857143117 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "elbowed": false - }, - { - "id": "URFQsZz-3OzfBQ-EcLBTB", - "type": "line", - "x": 13897.640080891812, - "y": 9125.870936054285, - "width": 0.8301982632606513, - "height": 234.9461085027643, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "an", - "roundness": { - "type": 2 - }, - "seed": 205602936, - "version": 211, - "versionNonce": 901672456, - "isDeleted": false, - "boundElements": [], - "updated": 1750396271228, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0.8301982632606513, - 234.9461085027643 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "RNbxNe542ywEY-xoQ3d1u", - "type": "line", - "x": 14022.227775500662, - "y": 9366.062087975533, - "width": 5.8113878428245584, - "height": 227.47432413341843, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "ao", - "roundness": { - "type": 2 - }, - "seed": 204632440, - "version": 477, - "versionNonce": 1725132040, - "isDeleted": false, - "boundElements": [], - "updated": 1750396271228, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -5.8113878428245584, - -227.47432413341843 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null, - "polygon": false - }, - { - "id": "lR3YWmzvq4DAfPyfzSLdZ", - "type": "text", - "x": 13913.41435584658, - "y": 9260.589287700557, - "width": 96.25978860360448, - "height": 29.056939214122796, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "ap", - "roundness": null, - "seed": 953516664, - "version": 259, - "versionNonce": 1257278472, - "isDeleted": false, - "boundElements": [], - "updated": 1750396271228, - "link": null, - "locked": false, - "text": "d before", - "fontSize": 23.245551371298234, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "d before", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "ePiM1l7Bywnn31qZbSbBj", - "type": "arrow", - "x": 13901.018300990581, - "y": 9363.088636896613, - "width": 2, - "height": 31, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 10, - "groupIds": [], - "frameId": null, - "index": "aq", - "roundness": { - "type": 2 - }, - "seed": 1626239864, - "version": 66, - "versionNonce": 202492680, - "isDeleted": false, - "boundElements": [], - "updated": 1750396271228, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -2, - -31 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "elbowed": false - }, - { - "id": "6M3jUpC20SDn4YgyEkbtb", - "type": "text", - "x": 14250.865342442754, - "y": 9717.419185734798, - "width": 343.379638671875, - "height": 25, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "as", - "roundness": null, - "seed": 684619640, - "version": 122, - "versionNonce": 2083143176, - "isDeleted": false, - "boundElements": null, - "updated": 1750398702867, - "link": null, - "locked": false, - "text": "remember to reverse cursor offset", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "remember to reverse cursor offset", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "mPKfdGj03qjEnHgjgGQq3", - "type": "arrow", - "x": 14023.17142240768, - "y": 9400.27632859194, - "width": 142.33677717792852, - "height": 93.70701364718298, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "at", - "roundness": { - "type": 2 - }, - "seed": 3545096, - "version": 100, - "versionNonce": 118273400, - "isDeleted": false, - "boundElements": null, - "updated": 1750399302460, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 142.33677717792852, - -93.70701364718298 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "5zfRs5XdDX2m9StT1L5L2", - "focus": -0.2036827307099071, - "gap": 14.285714285715585 - }, - "endBinding": { - "elementId": "7DCL4zn03YTmIu8pVNf96", - "focus": 1.0025346236179729, - "gap": 14 - }, - "startArrowhead": null, - "endArrowhead": "arrow", - "elbowed": false - }, - { - "id": "5zfRs5XdDX2m9StT1L5L2", - "type": "text", - "x": 13849.436771014181, - "y": 9414.562042877655, - "width": 311.19976806640625, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "au", - "roundness": null, - "seed": 752403464, - "version": 90, - "versionNonce": 100081272, - "isDeleted": false, - "boundElements": [ - { - "id": "mPKfdGj03qjEnHgjgGQq3", - "type": "arrow" - } - ], - "updated": 1750399297136, - "link": null, - "locked": false, - "text": "data from transform translate", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "data from transform translate", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "JD2a2uahYF-uAcIhK05JJ", - "type": "text", - "x": 14572.293913871325, - "y": 8921.70490002051, - "width": 174.63986206054688, - "height": 25, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "#b2f2bb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "av", - "roundness": null, - "seed": 940853880, - "version": 30, - "versionNonce": 1615519608, - "isDeleted": false, - "boundElements": null, - "updated": 1750399354435, - "link": null, - "locked": false, - "text": "data from clientX", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "data from clientX", - "autoResize": true, - "lineHeight": 1.25 - } - ], - "appState": { - "gridSize": 20, - "gridStep": 5, - "gridModeEnabled": false, - "viewBackgroundColor": "#ffffff", - "lockedMultiSelections": {} - }, - "files": {} -} \ No newline at end of file diff --git a/mind-elixir-core-master/src/arrow.ts b/mind-elixir-core-master/src/arrow.ts deleted file mode 100644 index bc7c937..0000000 --- a/mind-elixir-core-master/src/arrow.ts +++ /dev/null @@ -1,556 +0,0 @@ -import { generateUUID, getArrowPoints, getObjById, getOffsetLT, setAttributes } from './utils/index' -import LinkDragMoveHelper from './utils/LinkDragMoveHelper' -import { createSvgGroup, createSvgText, editSvgText, svgNS } from './utils/svg' -import type { CustomSvg, Topic } from './types/dom' -import type { MindElixirInstance, Uid } from './index' - -const highlightColor = '#4dc4ff' - -export interface Arrow { - id: string - /** - * label of arrow - */ - label: string - /** - * id of start node - */ - from: Uid - /** - * id of end node - */ - to: Uid - /** - * offset of control point from start point - */ - delta1: { - x: number - y: number - } - /** - * offset of control point from end point - */ - delta2: { - x: number - y: number - } - /** - * whether the arrow is bidirectional - */ - bidirectional?: boolean - /** - * style properties for the arrow - */ - style?: { - /** - * stroke color of the arrow - */ - stroke?: string - /** - * stroke width of the arrow - */ - strokeWidth?: string | number - /** - * stroke dash array for dashed lines - */ - strokeDasharray?: string - /** - * stroke line cap style - */ - strokeLinecap?: 'butt' | 'round' | 'square' - /** - * opacity of the arrow - */ - opacity?: string | number - /** - * color of the arrow label - */ - labelColor?: string - } -} -export type DivData = { - cx: number // center x - cy: number // center y - w: number // div width - h: number // div height - ctrlX: number // control point x - ctrlY: number // control point y -} -export type ArrowOptions = { - bidirectional?: boolean - style?: { - stroke?: string - strokeWidth?: string | number - strokeDasharray?: string - strokeLinecap?: 'butt' | 'round' | 'square' - opacity?: string | number - labelColor?: string - } -} - -/** - * Calculate bezier curve midpoint position - */ -function calcBezierMidPoint(p1x: number, p1y: number, p2x: number, p2y: number, p3x: number, p3y: number, p4x: number, p4y: number) { - return { - x: p1x / 8 + (p2x * 3) / 8 + (p3x * 3) / 8 + p4x / 8, - y: p1y / 8 + (p2y * 3) / 8 + (p3y * 3) / 8 + p4y / 8, - } -} - -/** - * Update arrow label position - */ -function updateArrowLabel(label: SVGTextElement, x: number, y: number) { - setAttributes(label, { - x: x + '', - y: y + '', - }) -} - -/** - * Update control line position - */ -function updateControlLine(line: SVGElement, x1: number, y1: number, x2: number, y2: number) { - setAttributes(line, { - x1: x1 + '', - y1: y1 + '', - x2: x2 + '', - y2: y2 + '', - }) -} - -/** - * Update arrow path and related elements - */ -function updateArrowPath( - arrow: CustomSvg, - p1x: number, - p1y: number, - p2x: number, - p2y: number, - p3x: number, - p3y: number, - p4x: number, - p4y: number, - linkItem: Arrow -) { - const mainPath = `M ${p1x} ${p1y} C ${p2x} ${p2y} ${p3x} ${p3y} ${p4x} ${p4y}` - - // Update main path - arrow.line.setAttribute('d', mainPath) - - // Apply styles to the main line if they exist - if (linkItem.style) { - const style = linkItem.style - if (style.stroke) arrow.line.setAttribute('stroke', style.stroke) - if (style.strokeWidth) arrow.line.setAttribute('stroke-width', String(style.strokeWidth)) - if (style.strokeDasharray) arrow.line.setAttribute('stroke-dasharray', style.strokeDasharray) - if (style.strokeLinecap) arrow.line.setAttribute('stroke-linecap', style.strokeLinecap) - if (style.opacity !== undefined) arrow.line.setAttribute('opacity', String(style.opacity)) - } - - // Update hotzone for main path (find the first hotzone path which corresponds to the main line) - const hotzones = arrow.querySelectorAll('path[stroke="transparent"]') - if (hotzones.length > 0) { - hotzones[0].setAttribute('d', mainPath) - } - - // Update arrow head - const arrowPoint = getArrowPoints(p3x, p3y, p4x, p4y) - if (arrowPoint) { - const arrowPath1 = `M ${arrowPoint.x1} ${arrowPoint.y1} L ${p4x} ${p4y} L ${arrowPoint.x2} ${arrowPoint.y2}` - arrow.arrow1.setAttribute('d', arrowPath1) - - // Update hotzone for arrow1 - if (hotzones.length > 1) { - hotzones[1].setAttribute('d', arrowPath1) - } - - // Apply styles to arrow head - if (linkItem.style) { - const style = linkItem.style - if (style.stroke) arrow.arrow1.setAttribute('stroke', style.stroke) - if (style.strokeWidth) arrow.arrow1.setAttribute('stroke-width', String(style.strokeWidth)) - if (style.strokeLinecap) arrow.arrow1.setAttribute('stroke-linecap', style.strokeLinecap) - if (style.opacity !== undefined) arrow.arrow1.setAttribute('opacity', String(style.opacity)) - } - } - - // Update start arrow if bidirectional - if (linkItem.bidirectional) { - const arrowPointStart = getArrowPoints(p2x, p2y, p1x, p1y) - if (arrowPointStart) { - const arrowPath2 = `M ${arrowPointStart.x1} ${arrowPointStart.y1} L ${p1x} ${p1y} L ${arrowPointStart.x2} ${arrowPointStart.y2}` - arrow.arrow2.setAttribute('d', arrowPath2) - - // Update hotzone for arrow2 - if (hotzones.length > 2) { - hotzones[2].setAttribute('d', arrowPath2) - } - - // Apply styles to start arrow head - if (linkItem.style) { - const style = linkItem.style - if (style.stroke) arrow.arrow2.setAttribute('stroke', style.stroke) - if (style.strokeWidth) arrow.arrow2.setAttribute('stroke-width', String(style.strokeWidth)) - if (style.strokeLinecap) arrow.arrow2.setAttribute('stroke-linecap', style.strokeLinecap) - if (style.opacity !== undefined) arrow.arrow2.setAttribute('opacity', String(style.opacity)) - } - } - } - - // Update label position and color - const { x: halfx, y: halfy } = calcBezierMidPoint(p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) - updateArrowLabel(arrow.label, halfx, halfy) - - // Apply label color if specified - if (linkItem.style?.labelColor) { - arrow.label.setAttribute('fill', linkItem.style.labelColor) - } - - // Update highlight layer - updateArrowHighlight(arrow) -} - -/** - * calc control point, center point and div size - */ -function calcCtrlP(mei: MindElixirInstance, tpc: Topic, delta: { x: number; y: number }) { - const { offsetLeft: x, offsetTop: y } = getOffsetLT(mei.nodes, tpc) - const w = tpc.offsetWidth - const h = tpc.offsetHeight - const cx = x + w / 2 - const cy = y + h / 2 - const ctrlX = cx + delta.x - const ctrlY = cy + delta.y - return { - w, - h, - cx, - cy, - ctrlX, - ctrlY, - } -} - -/** - * calc start and end point using control point and div status - */ -function calcP(data: DivData) { - let x, y - const k = (data.cy - data.ctrlY) / (data.ctrlX - data.cx) - if (k > data.h / data.w || k < -data.h / data.w) { - if (data.cy - data.ctrlY < 0) { - x = data.cx - data.h / 2 / k - y = data.cy + data.h / 2 - } else { - x = data.cx + data.h / 2 / k - y = data.cy - data.h / 2 - } - } else { - if (data.cx - data.ctrlX < 0) { - x = data.cx + data.w / 2 - y = data.cy - (data.w * k) / 2 - } else { - x = data.cx - data.w / 2 - y = data.cy + (data.w * k) / 2 - } - } - return { - x, - y, - } -} - -/** - * FYI - * p1: start point - * p2: control point of start point - * p3: control point of end point - * p4: end point - */ -const drawArrow = function (mei: MindElixirInstance, from: Topic, to: Topic, obj: Arrow, isInitPaint?: boolean) { - if (!from || !to) { - return // not expand - } - - const fromData = calcCtrlP(mei, from, obj.delta1) - const toData = calcCtrlP(mei, to, obj.delta2) - - const { x: p1x, y: p1y } = calcP(fromData) - const { ctrlX: p2x, ctrlY: p2y } = fromData - const { ctrlX: p3x, ctrlY: p3y } = toData - const { x: p4x, y: p4y } = calcP(toData) - - const arrowT = getArrowPoints(p3x, p3y, p4x, p4y) - if (!arrowT) return - - const toArrow = `M ${arrowT.x1} ${arrowT.y1} L ${p4x} ${p4y} L ${arrowT.x2} ${arrowT.y2}` - let fromArrow = '' - if (obj.bidirectional) { - const arrowF = getArrowPoints(p2x, p2y, p1x, p1y) - if (!arrowF) return - fromArrow = `M ${arrowF.x1} ${arrowF.y1} L ${p1x} ${p1y} L ${arrowF.x2} ${arrowF.y2}` - } - const newSvgGroup = createSvgGroup(`M ${p1x} ${p1y} C ${p2x} ${p2y} ${p3x} ${p3y} ${p4x} ${p4y}`, toArrow, fromArrow, obj.style) - - // Use extracted common function to calculate midpoint - const { x: halfx, y: halfy } = calcBezierMidPoint(p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) - const labelColor = obj.style?.labelColor - const label = createSvgText(obj.label, halfx, halfy, { - anchor: 'middle', - color: labelColor, - dataType: 'custom-link', - }) - newSvgGroup.appendChild(label) - newSvgGroup.label = label - - newSvgGroup.arrowObj = obj - newSvgGroup.dataset.linkid = obj.id - mei.linkSvgGroup.appendChild(newSvgGroup) - if (!isInitPaint) { - mei.arrows.push(obj) - mei.currentArrow = newSvgGroup - showLinkController(mei, obj, fromData, toData) - } -} - -export const createArrow = function (this: MindElixirInstance, from: Topic, to: Topic, options: ArrowOptions = {}) { - const arrowObj = { - id: generateUUID(), - label: 'Custom Link', - from: from.nodeObj.id, - to: to.nodeObj.id, - delta1: { - x: from.offsetWidth / 2 + 100, - y: 0, - }, - delta2: { - x: to.offsetWidth / 2 + 100, - y: 0, - }, - ...options, - } - drawArrow(this, from, to, arrowObj) - - this.bus.fire('operation', { - name: 'createArrow', - obj: arrowObj, - }) -} - -export const createArrowFrom = function (this: MindElixirInstance, arrow: Omit) { - hideLinkController(this) - const arrowObj = { ...arrow, id: generateUUID() } - drawArrow(this, this.findEle(arrowObj.from), this.findEle(arrowObj.to), arrowObj) - - this.bus.fire('operation', { - name: 'createArrow', - obj: arrowObj, - }) -} - -export const removeArrow = function (this: MindElixirInstance, linkSvg?: CustomSvg) { - let link - if (linkSvg) { - link = linkSvg - } else { - link = this.currentArrow - } - if (!link) return - hideLinkController(this) - const id = link.arrowObj!.id - this.arrows = this.arrows.filter(arrow => arrow.id !== id) - link.remove() - this.bus.fire('operation', { - name: 'removeArrow', - obj: { - id, - }, - }) -} - -export const selectArrow = function (this: MindElixirInstance, link: CustomSvg) { - this.currentArrow = link - const obj = link.arrowObj - - const from = this.findEle(obj.from) - const to = this.findEle(obj.to) - - const fromData = calcCtrlP(this, from, obj.delta1) - const toData = calcCtrlP(this, to, obj.delta2) - - showLinkController(this, obj, fromData, toData) -} - -export const unselectArrow = function (this: MindElixirInstance) { - hideLinkController(this) - this.currentArrow = null -} - -/** - * Create a highlight path element with common attributes - */ -const createHighlightPath = function (d: string, highlightColor: string): SVGPathElement { - const path = document.createElementNS(svgNS, 'path') - setAttributes(path, { - d, - stroke: highlightColor, - fill: 'none', - 'stroke-width': '6', - 'stroke-linecap': 'round', - 'stroke-linejoin': 'round', - }) - return path -} - -const addArrowHighlight = function (arrow: CustomSvg, highlightColor: string) { - const highlightGroup = document.createElementNS(svgNS, 'g') - highlightGroup.setAttribute('class', 'arrow-highlight') - highlightGroup.setAttribute('opacity', '0.45') - - const highlightLine = createHighlightPath(arrow.line.getAttribute('d')!, highlightColor) - highlightGroup.appendChild(highlightLine) - - const highlightArrow1 = createHighlightPath(arrow.arrow1.getAttribute('d')!, highlightColor) - highlightGroup.appendChild(highlightArrow1) - - if (arrow.arrow2.getAttribute('d')) { - const highlightArrow2 = createHighlightPath(arrow.arrow2.getAttribute('d')!, highlightColor) - highlightGroup.appendChild(highlightArrow2) - } - - arrow.insertBefore(highlightGroup, arrow.firstChild) -} - -const removeArrowHighlight = function (arrow: CustomSvg) { - const highlightGroup = arrow.querySelector('.arrow-highlight') - if (highlightGroup) { - highlightGroup.remove() - } -} - -const updateArrowHighlight = function (arrow: CustomSvg) { - const highlightGroup = arrow.querySelector('.arrow-highlight') - if (!highlightGroup) return - - const highlightPaths = highlightGroup.querySelectorAll('path') - if (highlightPaths.length >= 1) { - highlightPaths[0].setAttribute('d', arrow.line.getAttribute('d')!) - } - if (highlightPaths.length >= 2) { - highlightPaths[1].setAttribute('d', arrow.arrow1.getAttribute('d')!) - } - if (highlightPaths.length >= 3 && arrow.arrow2.getAttribute('d')) { - highlightPaths[2].setAttribute('d', arrow.arrow2.getAttribute('d')!) - } -} - -const hideLinkController = function (mei: MindElixirInstance) { - mei.helper1?.destroy!() - mei.helper2?.destroy!() - mei.linkController.style.display = 'none' - mei.P2.style.display = 'none' - mei.P3.style.display = 'none' - if (mei.currentArrow) { - removeArrowHighlight(mei.currentArrow) - } -} - -const showLinkController = function (mei: MindElixirInstance, linkItem: Arrow, fromData: DivData, toData: DivData) { - const { linkController, P2, P3, line1, line2, nodes, map, currentArrow, bus } = mei - if (!currentArrow) return - linkController.style.display = 'initial' - P2.style.display = 'initial' - P3.style.display = 'initial' - nodes.appendChild(linkController) - nodes.appendChild(P2) - nodes.appendChild(P3) - - addArrowHighlight(currentArrow, highlightColor) - - // init points - let { x: p1x, y: p1y } = calcP(fromData) - let { ctrlX: p2x, ctrlY: p2y } = fromData - let { ctrlX: p3x, ctrlY: p3y } = toData - let { x: p4x, y: p4y } = calcP(toData) - - P2.style.cssText = `top:${p2y}px;left:${p2x}px;` - P3.style.cssText = `top:${p3y}px;left:${p3x}px;` - updateControlLine(line1, p1x, p1y, p2x, p2y) - updateControlLine(line2, p3x, p3y, p4x, p4y) - - mei.helper1 = LinkDragMoveHelper.create(P2) - mei.helper2 = LinkDragMoveHelper.create(P3) - - mei.helper1.init(map, (deltaX, deltaY) => { - // recalc key points - p2x = p2x + deltaX / mei.scaleVal // scale should keep the latest value - p2y = p2y + deltaY / mei.scaleVal - const p1 = calcP({ ...fromData, ctrlX: p2x, ctrlY: p2y }) - p1x = p1.x - p1y = p1.y - - // update dom position - P2.style.top = p2y + 'px' - P2.style.left = p2x + 'px' - - // Use extracted common function to update arrow - updateArrowPath(currentArrow, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y, linkItem) - updateControlLine(line1, p1x, p1y, p2x, p2y) - - linkItem.delta1.x = p2x - fromData.cx - linkItem.delta1.y = p2y - fromData.cy - - bus.fire('updateArrowDelta', linkItem) - }) - - mei.helper2.init(map, (deltaX, deltaY) => { - p3x = p3x + deltaX / mei.scaleVal - p3y = p3y + deltaY / mei.scaleVal - const p4 = calcP({ ...toData, ctrlX: p3x, ctrlY: p3y }) - p4x = p4.x - p4y = p4.y - - P3.style.top = p3y + 'px' - P3.style.left = p3x + 'px' - - // Use extracted common function to update arrow - updateArrowPath(currentArrow, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y, linkItem) - updateControlLine(line2, p3x, p3y, p4x, p4y) - - linkItem.delta2.x = p3x - toData.cx - linkItem.delta2.y = p3y - toData.cy - - bus.fire('updateArrowDelta', linkItem) - }) -} - -export function renderArrow(this: MindElixirInstance) { - this.linkSvgGroup.innerHTML = '' - for (let i = 0; i < this.arrows.length; i++) { - const link = this.arrows[i] - try { - drawArrow(this, this.findEle(link.from), this.findEle(link.to), link, true) - } catch (e) { - console.warn('Node may not be expanded') - } - } - this.nodes.appendChild(this.linkSvgGroup) -} - -export function editArrowLabel(this: MindElixirInstance, el: CustomSvg) { - hideLinkController(this) - console.time('editSummary') - if (!el) return - const textEl = el.label - editSvgText(this, textEl, el.arrowObj) - console.timeEnd('editSummary') -} - -export function tidyArrow(this: MindElixirInstance) { - this.arrows = this.arrows.filter(arrow => { - return getObjById(arrow.from, this.nodeData) && getObjById(arrow.to, this.nodeData) - }) -} diff --git a/mind-elixir-core-master/src/const.ts b/mind-elixir-core-master/src/const.ts deleted file mode 100644 index 35129e9..0000000 --- a/mind-elixir-core-master/src/const.ts +++ /dev/null @@ -1,62 +0,0 @@ -import type { Theme } from '.' - -export const LEFT = 0 -export const RIGHT = 1 -export const SIDE = 2 -export const DOWN = 3 - -export const THEME: Theme = { - name: 'Latte', - type: 'light', - palette: ['#dd7878', '#ea76cb', '#8839ef', '#e64553', '#fe640b', '#df8e1d', '#40a02b', '#209fb5', '#1e66f5', '#7287fd'], - cssVar: { - '--node-gap-x': '30px', - '--node-gap-y': '10px', - '--main-gap-x': '65px', - '--main-gap-y': '45px', - '--root-radius': '30px', - '--main-radius': '20px', - '--root-color': '#ffffff', - '--root-bgcolor': '#4c4f69', - '--root-border-color': 'rgba(0, 0, 0, 0)', - '--main-color': '#444446', - '--main-bgcolor': '#ffffff', - '--topic-padding': '3px', - '--color': '#777777', - '--bgcolor': '#f6f6f6', - '--selected': '#4dc4ff', - '--accent-color': '#e64553', - '--panel-color': '#444446', - '--panel-bgcolor': '#ffffff', - '--panel-border-color': '#eaeaea', - '--map-padding': '50px', - }, -} - -export const DARK_THEME: Theme = { - name: 'Dark', - type: 'dark', - palette: ['#848FA0', '#748BE9', '#D2F9FE', '#4145A5', '#789AFA', '#706CF4', '#EF987F', '#775DD5', '#FCEECF', '#DA7FBC'], - cssVar: { - '--node-gap-x': '30px', - '--node-gap-y': '10px', - '--main-gap-x': '65px', - '--main-gap-y': '45px', - '--root-radius': '30px', - '--main-radius': '20px', - '--root-color': '#ffffff', - '--root-bgcolor': '#2d3748', - '--root-border-color': 'rgba(255, 255, 255, 0.1)', - '--main-color': '#ffffff', - '--main-bgcolor': '#4c4f69', - '--topic-padding': '3px', - '--color': '#cccccc', - '--bgcolor': '#252526', - '--selected': '#4dc4ff', - '--accent-color': '#789AFA', - '--panel-color': '#ffffff', - '--panel-bgcolor': '#2d3748', - '--panel-border-color': '#696969', - '--map-padding': '50px 80px', - }, -} diff --git a/mind-elixir-core-master/src/dev.dist.ts b/mind-elixir-core-master/src/dev.dist.ts deleted file mode 100644 index daf7ac8..0000000 --- a/mind-elixir-core-master/src/dev.dist.ts +++ /dev/null @@ -1,68 +0,0 @@ -import MindElixir from 'mind-elixir' -import example from 'mind-elixir/example' -import type { Options } from 'mind-elixir' - -const E = MindElixir.E -const options: Options = { - el: '#map', - newTopicName: '子节点', - // direction: MindElixir.LEFT, - direction: MindElixir.RIGHT, - // data: MindElixir.new('new topic'), - locale: 'en', - draggable: true, - editable: true, - contextMenu: { - focus: true, - link: true, - extend: [ - { - name: 'Node edit', - onclick: () => { - alert('extend menu') - }, - }, - ], - }, - toolBar: true, - keypress: true, - allowUndo: false, - before: { - moveDownNode() { - return false - }, - insertSibling(el, obj) { - console.log('insertSibling', el, obj) - return true - }, - async addChild(el, obj) { - return true - }, - }, - scaleSensitivity: 0.2, -} -const mind = new MindElixir(options) -mind.init(example) -function sleep() { - return new Promise(res => { - setTimeout(() => res(), 1000) - }) -} -console.log('test E function', E('bd4313fbac40284b')) -// let mind2 = new MindElixir({ -// el: '#map2', -// direction: 2, -// data: MindElixir.example2, -// draggable: false, -// // overflowHidden: true, -// nodeMenu: true, -// }) -// mind2.init() - -mind.bus.addListener('operation', operation => { - console.log(operation) -}) - -mind.bus.addListener('selectNodes', nodes => { - console.log(nodes) -}) diff --git a/mind-elixir-core-master/src/dev.ts b/mind-elixir-core-master/src/dev.ts deleted file mode 100644 index 8bce31b..0000000 --- a/mind-elixir-core-master/src/dev.ts +++ /dev/null @@ -1,192 +0,0 @@ -import type { MindElixirCtor } from './index' -import MindElixir from './index' -import example from './exampleData/1' -import example2 from './exampleData/2' -import example3 from './exampleData/3' -import type { Options, MindElixirInstance, NodeObj } from './types/index' -import type { Operation } from './utils/pubsub' -import 'katex/dist/katex.min.css' -import katex from 'katex' -import { layoutSSR, renderSSRHTML } from './utils/layout-ssr' -import { snapdom } from '@zumer/snapdom' -import type { Tokens } from 'marked' -import { marked } from 'marked' -import { md2html } from 'simple-markdown-to-html' - -interface Window { - m?: MindElixirInstance - M: MindElixirCtor - E: typeof MindElixir.E - downloadPng: () => void - downloadSvg: () => void - destroy: () => void - testMarkdown: () => void - addMarkdownNode: () => void -} - -declare let window: Window - -const E = MindElixir.E -const options: Options = { - el: '#map', - newTopicName: '子节点', - locale: 'en', - // mouseSelectionButton: 2, - draggable: true, - editable: true, - markdown: (text: string, obj: NodeObj & { useMd?: boolean }) => { - if (!text) return '' - if (!obj.useMd) return text - try { - // Configure marked renderer to add target="_blank" to links and table classes - const renderer = { - link(token: Tokens.Link) { - const href = token.href || '' - const title = token.title ? ` title="${token.title}"` : '' - const text = token.text || '' - return `${text}` - }, - table(token: Tokens.Table) { - const header = token.header.map(cell => `
    `).join('') - const rows = token.rows.map(row => - `${row.map(cell => ``).join('')}` - ).join('') - return `
    ${cell.text}
    ${cell.text}
    ${header}${rows}
    ` - }, - } - - marked.use({ renderer, gfm: true }) - let html = marked(text) as string - // let html = md2html(text) - - // Process KaTeX math expressions - // Handle display math ($$...$$) - html = html.replace(/\$\$([^$]+)\$\$/g, (_, math) => { - return katex.renderToString(math.trim(), { displayMode: true }) - }) - - // Handle inline math ($...$) - html = html.replace(/\$([^$]+)\$/g, (_, math) => { - return katex.renderToString(math.trim(), { displayMode: false }) - }) - - return html.trim().replace(/\n/g, '') - } catch (error) { - return text - } - }, - // To disable markdown, simply omit the markdown option or set it to undefined - // if you set contextMenu to false, you should handle contextmenu event by yourself, e.g. preventDefault - contextMenu: { - focus: true, - link: true, - extend: [ - { - name: 'Node edit', - onclick: () => { - alert('extend menu') - }, - }, - ], - }, - toolBar: true, - keypress: { - e(e) { - if (!mind.currentNode) return - if (e.metaKey || e.ctrlKey) { - mind.expandNode(mind.currentNode) - } - }, - f(e) { - if (!mind.currentNode) return - if (e.altKey) { - if (mind.isFocusMode) { - mind.cancelFocus() - } else { - mind.focusNode(mind.currentNode) - } - } - }, - }, - allowUndo: true, - before: { - insertSibling(el, obj) { - console.log('insertSibling', el, obj) - return true - }, - async addChild(el, obj) { - console.log('addChild', el, obj) - // await sleep() - return true - }, - }, - // scaleMin:0.1 - // alignment: 'nodes', -} - -let mind = new MindElixir(options) - -const data = MindElixir.new('new topic') -mind.init(example) - -const m2 = new MindElixir({ - el: '#map2', - selectionContainer: 'body', // use body to make selection usable when transform is not 0 - direction: MindElixir.RIGHT, - theme: MindElixir.DARK_THEME, - // alignment: 'nodes', -}) -m2.init(data) - -function sleep() { - return new Promise(res => { - setTimeout(() => res(), 1000) - }) -} -// console.log('test E function', E('bd4313fbac40284b')) - -mind.bus.addListener('operation', (operation: Operation) => { - console.log(operation) - // return { - // name: action name, - // obj: target object - // } - - // name: [insertSibling|addChild|removeNode|beginEdit|finishEdit] - // obj: target - - // name: moveNodeIn - // obj: {from:target1,to:target2} -}) -mind.bus.addListener('selectNodes', nodes => { - console.log('selectNodes', nodes) -}) -mind.bus.addListener('unselectNodes', nodes => { - console.log('unselectNodes', nodes) -}) -mind.bus.addListener('expandNode', node => { - console.log('expandNode: ', node) -}) - -const dl2 = async () => { - const result = await snapdom(mind.nodes) - await result.download({ format: 'jpg', filename: 'my-capture' }) -} - -window.downloadPng = dl2 -window.m = mind -// window.m2 = mind2 -window.M = MindElixir -window.E = MindElixir.E - -console.log('MindElixir Version', MindElixir.version) - -window.destroy = () => { - mind.destroy() - // @ts-expect-error remove reference - mind = null - // @ts-expect-error remove reference - window.m = null -} - -document.querySelector('#ssr')!.innerHTML = renderSSRHTML(layoutSSR(window.m.nodeData)) diff --git a/mind-elixir-core-master/src/docs.ts b/mind-elixir-core-master/src/docs.ts deleted file mode 100644 index 40dbdf1..0000000 --- a/mind-elixir-core-master/src/docs.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { Arrow } from './arrow' -import type methods from './methods' -import type { MindElixirMethods } from './methods' -import type { Summary, SummarySvgGroup } from './summary' -import type { MindElixirData, MindElixirInstance, NodeObj, NodeObjExport, Options, Theme } from './types' -import type { MainLineParams, SubLineParams } from './utils/generateBranch' -import type { Locale } from './i18n' -export { - methods, - Theme, - Options, - MindElixirMethods, - MindElixirInstance, - MindElixirData, - NodeObj, - NodeObjExport, - Summary, - SummarySvgGroup, - Arrow, - MainLineParams, - SubLineParams, - Locale, -} - -export type * from './types/dom' -export type * from './utils/pubsub' diff --git a/mind-elixir-core-master/src/exampleData/1.cn.ts b/mind-elixir-core-master/src/exampleData/1.cn.ts deleted file mode 100644 index 6b7e529..0000000 --- a/mind-elixir-core-master/src/exampleData/1.cn.ts +++ /dev/null @@ -1,544 +0,0 @@ -import type { MindElixirData } from '../index' -import { codeBlock, katexHTML, styledDiv } from './htmlText' - -const aboutMindElixir: MindElixirData = { - nodeData: { - id: 'me-root', - topic: 'Mind Elixir', - tags: ['思维导图内核'], - children: [ - { - topic: 'logo2', - id: '56dae51a90d350a8', - direction: 0, - expanded: true, - children: [ - { - id: 'use-image', - topic: 'mind-elixir', - image: { - url: 'https://raw.githubusercontent.com/ssshooter/mind-elixir-core/master/images/logo2.png', - height: 100, - width: 90, - fit: 'contain', - }, - }, - ], - }, - { - topic: '什么是 Mind Elixir', - id: 'bd4313fbac40284b', - direction: 0, - expanded: true, - children: [ - { - topic: '一个思维导图内核', - id: 'beeb823afd6d2114', - }, - { - topic: '免费', - id: 'c1f068377de9f3a0', - }, - { - topic: '开源', - id: 'c1f06d38a09f23ca', - }, - { - topic: '无框架依赖', - id: 'c1f06e4cbcf16463', - expanded: true, - children: [ - { - topic: '无需 JavaScript 框架即可使用', - id: 'c1f06e4cbcf16464', - }, - { - topic: '可插件化', - id: 'c1f06e4cbcf16465', - }, - ], - }, - { - topic: '在你的项目中使用', - id: 'c1f1f11a7fbf7550', - children: [ - { - topic: "import MindElixir from 'mind-elixir'", - id: 'c1f1e245b0a89f9b', - }, - { - topic: 'new MindElixir({...}).init(data)', - id: 'c1f1ebc7072c8928', - }, - ], - }, - { - topic: '核心特性', - id: 'c1f0723c07b408d7', - expanded: true, - children: [ - { - topic: '流畅的用户体验', - id: 'c1f09612fd89920d', - }, - { - topic: '精心设计', - id: 'c1f09612fd89920e', - }, - { - topic: '移动端友好', - id: 'c1f09612fd89920f', - }, - { - topic: '轻量级 & 高性能', - id: 'c1f09612fd899210', - }, - ], - }, - ], - }, - { - topic: '高效快捷键', - id: 'bd1b66c4b56754d9', - direction: 0, - expanded: true, - children: [ - { - topic: 'Tab - 创建子节点', - id: 'bd1b6892bcab126a', - }, - { - topic: 'Enter - 创建同级节点', - id: 'bd1b6b632a434b27', - }, - { - topic: 'F1 - 居中地图', - id: 'bd1b983085187c0a', - }, - { - topic: 'F2 - 开始编辑', - id: 'bd1b983085187c0b', - }, - { - topic: 'Ctrl + C/V - 复制/粘贴', - id: 'bd1b983085187c0c', - }, - { - topic: 'Ctrl + +/- - 放大/缩小', - id: 'bd1b983085187c0d', - }, - ], - }, - { - topic: '高级功能', - id: 'bd1b66c4b56754da', - direction: 0, - expanded: true, - children: [ - { - topic: '支持批量操作', - id: 'bd1b6892bcab126b', - tags: ['新功能'], - }, - { - topic: '撤销 / 重做', - id: 'bd1b6b632a434b28', - tags: ['新功能'], - }, - { - topic: '节点总结', - id: 'bd1b983085187c0e', - }, - { - topic: '使用 CSS 变量轻松样式化', - id: 'bd1b983085187c0f', - tags: ['新功能'], - }, - ], - }, - { - topic: '专注模式', - id: 'bd1b9b94a9a7a913', - direction: 1, - expanded: true, - children: [ - { - topic: '右键点击并选择专注模式', - id: 'bd1bb2ac4bbab458', - }, - { - topic: '右键点击并选择取消专注模式', - id: 'bd1bb4b14d6697c3', - }, - ], - }, - { - topic: '左侧菜单', - id: 'bd1b9d1816ede134', - direction: 0, - expanded: true, - children: [ - { - topic: '节点分布', - id: 'bd1ba11e620c3c1a', - expanded: true, - children: [ - { - topic: '左侧', - id: 'bd1c1cb51e6745d3', - }, - { - topic: '右侧', - id: 'bd1c1e12fd603ff6', - }, - { - topic: '左右两侧', - id: 'bd1c1f03def5c97b', - }, - ], - }, - ], - }, - { - topic: '底部菜单', - id: 'bd1ba66996df4ba4', - direction: 1, - expanded: true, - children: [ - { - topic: '全屏', - id: 'bd1ba81d9bc95a7e', - }, - { - topic: '回到中心', - id: 'bd1babdd5c18a7a2', - }, - { - topic: '放大', - id: 'bd1bae68e0ab186e', - }, - { - topic: '缩小', - id: 'bd1bb06377439977', - }, - ], - }, - { - topic: '连接', - id: 'bd1beff607711025', - direction: 0, - expanded: true, - children: [ - { - topic: '右键点击并选择连接', - id: 'bd1bf320da90046a', - }, - { - topic: '点击要连接的目标', - id: 'bd1bf6f94ff2e642', - }, - { - topic: '使用控制点修改连接', - id: 'bd1c0c4a487bd036', - }, - { - topic: '双向连接', - id: '4da8dbbc7b71be99', - }, - { - topic: '也可用。', - id: '4da8ded27033a710', - }, - ], - }, - { - topic: '节点样式', - id: 'bd1c217f9d0b20bd', - direction: 0, - expanded: true, - children: [ - { - topic: '字体大小', - id: 'bd1c24420cd2c2f5', - style: { - fontSize: '32px', - color: '#3298db', - }, - }, - { - topic: '字体颜色', - id: 'bd1c2a59b9a2739c', - style: { - color: '#c0392c', - }, - }, - { - topic: '背景颜色', - id: 'bd1c2de33f057eb4', - style: { - color: '#bdc3c7', - background: '#2c3e50', - }, - }, - { - topic: '添加标签', - id: 'bd1cff58364436d0', - tags: ['已完成'], - }, - { - topic: '添加图标', - id: 'bd1d0317f7e8a61a', - icons: ['😂'], - tags: ['www'], - }, - { - topic: '加粗', - id: 'bd41fd4ca32322a4', - style: { - fontWeight: 'bold', - }, - }, - { - topic: '超链接', - id: 'bd41fd4ca32322a5', - hyperLink: 'https://github.com/ssshooter/mind-elixir-core', - }, - ], - }, - { - topic: '可拖拽', - id: 'bd1f03fee1f63bc6', - direction: 1, - expanded: true, - children: [ - { - topic: '将一个节点拖拽到另一个节点\n前者将成为后者的子节点', - id: 'bd1f07c598e729dc', - }, - ], - }, - { - topic: '导出 & 导入', - id: 'beeb7586973430db', - direction: 1, - expanded: true, - children: [ - { - topic: '导出为 SVG', - id: 'beeb7a6bec2d68e6', - }, - { - topic: '导出为 PNG', - id: 'beeb7a6bec2d68e7', - tags: ['新功能'], - }, - { - topic: '导出 JSON 数据', - id: 'beeb784cc189375f', - }, - { - topic: '导出为 HTML', - id: 'beeb7a6bec2d68f5', - }, - ], - }, - { - topic: '生态系统', - id: 'beeb7586973430dc', - direction: 1, - expanded: true, - children: [ - { - topic: '@mind-elixir/node-menu', - id: 'beeb7586973430dd', - hyperLink: 'https://github.com/ssshooter/node-menu', - }, - { - topic: '@mind-elixir/export-xmind', - id: 'beeb7586973430de', - hyperLink: 'https://github.com/ssshooter/export-xmind', - }, - { - topic: 'mind-elixir-react', - id: 'beeb7586973430df', - hyperLink: 'https://github.com/ssshooter/mind-elixir-react', - }, - ], - }, - { - topic: 'dangerouslySetInnerHTML', - id: 'c00a1cf60baa44f0', - style: { - background: '#f1c40e', - }, - children: [ - { - topic: 'Katex', - id: 'c00a2264f4532611', - children: [ - { - topic: '', - id: 'c00a2264f4532612', - dangerouslySetInnerHTML: - '
    ', - }, - ], - }, - { - topic: '代码块', - id: 'c00a2264fdaw32612', - children: [ - { - topic: '', - id: 'c00a2264f4532613', - dangerouslySetInnerHTML: - '
    let message = "Hello world"\nalert(message)
    ', - }, - ], - }, - { - topic: '自定义 Div', - id: 'c00a2264f4532615', - children: [ - { - topic: '', - id: 'c00a2264f4532614', - dangerouslySetInnerHTML: - '
    标题
    你好世界
    ', - }, - ], - }, - ], - direction: 1, - }, - { - topic: '主题系统', - id: 'bd42dad21aaf6baf', - direction: 1, - expanded: true, - children: [ - { - topic: '内置主题', - id: 'bd42e1d0163ebf05', - expanded: true, - children: [ - { - topic: 'Latte (浅色)', - id: 'bd42e619051878b4', - style: { - background: '#ffffff', - color: '#444446', - }, - }, - { - topic: '深色主题', - id: 'bd42e97d7ac35e9a', - style: { - background: '#252526', - color: '#ffffff', - }, - }, - ], - }, - { - topic: '自定义 CSS 变量', - id: 'bd42e1d0163ebf06', - tags: ['灵活'], - }, - { - topic: '调色板自定义', - id: 'bd42e1d0163ebf07', - tags: ['10 种颜色'], - }, - ], - }, - ], - expanded: true, - }, - arrows: [ - { - id: 'ac5fb1df7345e9c4', - label: '渲染', - from: 'beeb784cc189375f', - to: 'beeb7a6bec2d68f5', - delta1: { - x: 142.8828125, - y: -57, - }, - delta2: { - x: 146.1171875, - y: 45, - }, - bidirectional: false, - }, - { - id: '4da8e3367b63b640', - label: '双向!', - from: '4da8dbbc7b71be99', - to: '4da8ded27033a710', - delta1: { - x: -186, - y: 7, - }, - delta2: { - x: -155, - y: 28, - }, - bidirectional: true, - style: { - stroke: '#8839ef', - labelColor: '#8839ef', - strokeWidth: '2', - strokeDasharray: '2,5', - opacity: '1', - }, - }, - ], - summaries: [ - { - id: 'a5e68e6a2ce1b648', - parent: 'bd42e1d0163ebf04', - start: 0, - end: 1, - label: '总结', - }, - { - id: 'a5e6978f1bc69f4a', - parent: 'bd4313fbac40284b', - start: 3, - end: 5, - label: '总结', - }, - ], - direction: 2, - theme: { - name: 'Latte', - // 更新的调色板,颜色更鲜艳 - palette: ['#dd7878', '#ea76cb', '#8839ef', '#e64553', '#fe640b', '#df8e1d', '#40a02b', '#209fb5', '#1e66f5', '#7287fd'], - // 增强的 CSS 变量,更好的样式控制 - cssVar: { - '--node-gap-x': '30px', - '--node-gap-y': '10px', - '--main-gap-x': '32px', - '--main-gap-y': '12px', - '--root-radius': '30px', - '--main-radius': '20px', - '--root-color': '#ffffff', - '--root-bgcolor': '#4c4f69', - '--root-border-color': 'rgba(0, 0, 0, 0)', - '--main-color': '#444446', - '--main-bgcolor': '#ffffff', - '--topic-padding': '3px', - '--color': '#777777', - '--bgcolor': '#f6f6f6', - '--selected': '#4dc4ff', - '--accent-color': '#e64553', - '--panel-color': '#444446', - '--panel-bgcolor': '#ffffff', - '--panel-border-color': '#eaeaea', - '--map-padding': '50px 80px', - }, - }, -} - -export default aboutMindElixir diff --git a/mind-elixir-core-master/src/exampleData/1.ts b/mind-elixir-core-master/src/exampleData/1.ts deleted file mode 100644 index 04ddcbc..0000000 --- a/mind-elixir-core-master/src/exampleData/1.ts +++ /dev/null @@ -1,623 +0,0 @@ -import type { MindElixirData, NodeObj } from '../index' -import { codeBlock, katexHTML, styledDiv } from './htmlText' - -type NodeObjWithUseMd = NodeObj & { useMd?: boolean } -type MindElixirDataWithUseMd = Omit & { - nodeData: NodeObjWithUseMd & { - children?: NodeObjWithUseMd[] - } -} - -const aboutMindElixir: MindElixirDataWithUseMd = { - nodeData: { - id: 'me-root', - topic: 'Mind Elixir', - tags: ['Mind Map Core'], - children: [ - { - topic: 'logo2', - id: '56dae51a90d350a8', - direction: 0, - expanded: true, - children: [ - { - id: 'use-image', - topic: 'mind-elixir', - image: { - url: 'https://raw.githubusercontent.com/ssshooter/mind-elixir-core/master/images/logo2.png', - height: 100, - width: 90, - fit: 'contain', - }, - }, - ], - }, - { - topic: 'What is Mind Elixir', - id: 'bd4313fbac40284b', - direction: 0, - expanded: true, - children: [ - { - topic: 'A mind map core', - id: 'beeb823afd6d2114', - }, - { - topic: 'Free', - id: 'c1f068377de9f3a0', - }, - { - topic: 'Open-Source', - id: 'c1f06d38a09f23ca', - }, - { - topic: 'Framework agnostic', - id: 'c1f06e4cbcf16463', - expanded: true, - children: [ - { - topic: 'Use without JavaScript framework', - id: 'c1f06e4cbcf16464', - }, - { - topic: 'Pluginable', - id: 'c1f06e4cbcf16465', - }, - ], - }, - { - topic: 'Use in your own project', - id: 'c1f1f11a7fbf7550', - children: [ - { - topic: "import MindElixir from 'mind-elixir'", - id: 'c1f1e245b0a89f9b', - }, - { - topic: 'new MindElixir({...}).init(data)', - id: 'c1f1ebc7072c8928', - }, - ], - }, - { - topic: 'Key Features', - id: 'c1f0723c07b408d7', - expanded: true, - children: [ - { - topic: 'Fluent UX', - id: 'c1f09612fd89920d', - }, - { - topic: 'Well designed', - id: 'c1f09612fd89920e', - }, - { - topic: 'Mobile friendly', - id: 'c1f09612fd89920f', - }, - { - topic: 'Lightweight & High performance', - id: 'c1f09612fd899210', - }, - ], - }, - ], - }, - { - topic: 'Efficient Shortcuts', - id: 'bd1b66c4b56754d9', - direction: 0, - expanded: true, - children: [ - { - topic: 'Tab - Create a child node', - id: 'bd1b6892bcab126a', - }, - { - topic: 'Enter - Create a sibling node', - id: 'bd1b6b632a434b27', - }, - { - topic: 'F1 - Center the Map', - id: 'bd1b983085187c0a', - }, - { - topic: 'F2 - Begin Editing', - id: 'bd1b983085187c0b', - }, - { - topic: 'Ctrl + C/V - Copy/Paste', - id: 'bd1b983085187c0c', - }, - { - topic: 'Ctrl + +/- - Zoom In/Out', - id: 'bd1b983085187c0d', - }, - ], - }, - { - topic: 'Advanced Features', - id: 'bd1b66c4b56754da', - direction: 0, - expanded: true, - children: [ - { - topic: 'Bulk operations supported', - id: 'bd1b6892bcab126b', - tags: ['New'], - }, - { - topic: 'Undo / Redo', - id: 'bd1b6b632a434b28', - tags: ['New'], - }, - { - topic: 'Summarize nodes', - id: 'bd1b983085187c0e', - }, - { - topic: 'Easily Styling with CSS variables', - id: 'bd1b983085187c0f', - tags: ['New'], - }, - ], - }, - { - topic: 'Focus mode', - id: 'bd1b9b94a9a7a913', - direction: 1, - expanded: true, - children: [ - { - topic: 'Right click and select Focus Mode', - id: 'bd1bb2ac4bbab458', - }, - { - topic: 'Right click and select Cancel Focus Mode', - id: 'bd1bb4b14d6697c3', - }, - ], - }, - { - topic: 'Left menu', - id: 'bd1b9d1816ede134', - direction: 0, - expanded: true, - children: [ - { - topic: 'Node distribution', - id: 'bd1ba11e620c3c1a', - expanded: true, - children: [ - { - topic: 'Left', - id: 'bd1c1cb51e6745d3', - }, - { - topic: 'Right', - id: 'bd1c1e12fd603ff6', - }, - { - topic: 'Both l & r', - id: 'bd1c1f03def5c97b', - }, - ], - }, - ], - }, - { - topic: 'Bottom menu', - id: 'bd1ba66996df4ba4', - direction: 1, - expanded: true, - children: [ - { - topic: 'Full screen', - id: 'bd1ba81d9bc95a7e', - }, - { - topic: 'Return to Center', - id: 'bd1babdd5c18a7a2', - }, - { - topic: 'Zoom in', - id: 'bd1bae68e0ab186e', - }, - { - topic: 'Zoom out', - id: 'bd1bb06377439977', - }, - ], - }, - { - topic: 'Link', - id: 'bd1beff607711025', - direction: 0, - expanded: true, - children: [ - { - topic: 'Right click and select Link', - id: 'bd1bf320da90046a', - }, - { - topic: 'Click the target you want to link', - id: 'bd1bf6f94ff2e642', - }, - { - topic: 'Modify link with control points', - id: 'bd1c0c4a487bd036', - }, - { - topic: 'Bidirectional link is', - id: '4da8dbbc7b71be99', - }, - { - topic: 'Also available.', - id: '4da8ded27033a710', - }, - ], - }, - { - topic: 'Node style', - id: 'bd1c217f9d0b20bd', - direction: 0, - expanded: true, - children: [ - { - topic: 'Font Size', - id: 'bd1c24420cd2c2f5', - style: { - fontSize: '32px', - color: '#3298db', - }, - }, - { - topic: 'Font Color', - id: 'bd1c2a59b9a2739c', - style: { - color: '#c0392c', - }, - }, - { - topic: 'Background Color', - id: 'bd1c2de33f057eb4', - style: { - color: '#bdc3c7', - background: '#2c3e50', - }, - }, - { - topic: 'Add tags', - id: 'bd1cff58364436d0', - tags: ['Completed'], - }, - { - topic: 'Add icons', - id: 'bd1d0317f7e8a61a', - icons: ['😂'], - tags: ['www'], - }, - { - topic: 'Bolder', - id: 'bd41fd4ca32322a4', - style: { - fontWeight: 'bold', - }, - }, - { - topic: 'Hyper link', - id: 'bd41fd4ca32322a5', - hyperLink: 'https://github.com/ssshooter/mind-elixir-core', - }, - ], - }, - { - topic: 'Draggable', - id: 'bd1f03fee1f63bc6', - direction: 1, - expanded: true, - children: [ - { - topic: 'Drag a node to another node\nand the former one will become a child node of latter one', - id: 'bd1f07c598e729dc', - }, - ], - }, - { - topic: 'Export & Import', - id: 'beeb7586973430db', - direction: 1, - expanded: true, - children: [ - { - topic: 'Export as SVG', - id: 'beeb7a6bec2d68e6', - }, - { - topic: 'Export as PNG', - id: 'beeb7a6bec2d68e7', - tags: ['New'], - }, - { - topic: 'Export JSON data', - id: 'beeb784cc189375f', - }, - { - topic: 'Export as HTML', - id: 'beeb7a6bec2d68f5', - }, - ], - }, - { - topic: 'Ecosystem', - id: 'beeb7586973430dc', - direction: 1, - expanded: true, - children: [ - { - topic: '@mind-elixir/node-menu', - id: 'beeb7586973430dd', - hyperLink: 'https://github.com/ssshooter/node-menu', - }, - { - topic: '@mind-elixir/export-xmind', - id: 'beeb7586973430de', - hyperLink: 'https://github.com/ssshooter/export-xmind', - }, - { - topic: 'mind-elixir-react', - id: 'beeb7586973430df', - hyperLink: 'https://github.com/ssshooter/mind-elixir-react', - }, - ], - }, - { - topic: 'dangerouslySetInnerHTML', - id: 'c00a1cf60baa44f0', - style: { - background: '#f1c40e', - }, - children: [ - { - topic: 'Code Block', - id: 'c00a2264fdaw32612', - children: [ - { - topic: '', - id: 'c00a2264f4532613', - dangerouslySetInnerHTML: - '
    let message = \'Hello world\'\nalert(message)
    ', - }, - ], - }, - { - topic: 'Customized Div', - id: 'c00a2264f4532615', - children: [ - { - topic: '', - id: 'c00a2264f4532614', - dangerouslySetInnerHTML: - '
    Title
    Hello world
    ', - }, - ], - }, - // { - // topic: 'Video', - // id: 'c00a2264ffadw19', - // children: [ - // { - // topic: '', - // id: 'c00a2264f453fv14', - // dangerouslySetInnerHTML: - // '', - // }, - // ], - // }, - ], - direction: 1, - }, - { - topic: 'KaTeX', - id: 'markdown-complex-math', - direction: 1, - expanded: true, - children: [ - { - topic: 'Normal distribution: $$f(x) = \\frac{1}{\\sqrt{2\\pi\\sigma^2}} e^{-\\frac{(x-\\mu)^2}{2\\sigma^2}}$$', - id: 'markdown-normal-dist', - useMd: true, - }, - { - topic: 'Fourier transform: $$F(\\omega) = \\int_{-\\infty}^{\\infty} f(t) e^{-i\\omega t} dt$$', - id: 'markdown-fourier', - useMd: true, - }, - { - topic: 'Taylor series: $$f(x) = \\sum_{n=0}^{\\infty} \\frac{f^{(n)}(a)}{n!}(x-a)^n$$', - id: 'markdown-taylor', - useMd: true, - }, - { - topic: 'Schrödinger equation: $$i\\hbar\\frac{\\partial}{\\partial t}\\Psi = \\hat{H}\\Psi$$', - id: 'markdown-schrodinger', - useMd: true, - }, - ], - }, - { - topic: 'Basic Markdown Examples', - id: 'markdown-basic-examples', - direction: 1, - expanded: true, - children: [ - { - topic: '# Heading 1', - id: 'markdown-headings', - useMd: true, - }, - { - topic: '**Bold text** and *italic text* and ***bold italic***', - id: 'markdown-emphasis', - useMd: true, - }, - { - topic: '- Unordered list item 1\n- Unordered list item 2', - id: 'markdown-lists', - useMd: true, - }, - { - topic: '[Link to GitHub](https://github.com) and `inline code`', - id: 'markdown-links-code', - useMd: true, - }, - { - topic: '> This is a blockquote\n> with multiple lines', - id: 'markdown-blockquote', - useMd: true, - }, - { - topic: '```javascript\nconst greeting = "Hello World!";\nconsole.log(greeting);\n```', - id: 'markdown-code-block', - useMd: true, - }, - { - topic: - '| Column 1 | Column 2 | Column 3 |\n|----------|----------|----------|\n| Row 1 | Data 1 | Info 1 |\n| Row 2 | Data 2 | Info 2 |', - id: 'markdown-table', - useMd: true, - }, - ], - }, - { - topic: 'Theme System', - id: 'bd42dad21aaf6baf', - direction: 1, - expanded: true, - children: [ - { - topic: 'Built-in Themes', - id: 'bd42e1d0163ebf05', - expanded: true, - children: [ - { - topic: 'Latte (Light)', - id: 'bd42e619051878b4', - style: { - background: '#ffffff', - color: '#444446', - }, - }, - { - topic: 'Dark Theme', - id: 'bd42e97d7ac35e9a', - style: { - background: '#252526', - color: '#ffffff', - }, - }, - ], - }, - { - topic: 'Custom CSS Variables', - id: 'bd42e1d0163ebf06', - tags: ['Flexible'], - }, - { - topic: 'Color Palette Customization', - id: 'bd42e1d0163ebf07', - tags: ['10 Colors'], - }, - ], - }, - ], - expanded: true, - }, - arrows: [ - { - id: 'ac5fb1df7345e9c4', - label: 'Render', - from: 'beeb784cc189375f', - to: 'beeb7a6bec2d68f5', - delta1: { - x: 142.8828125, - y: -57, - }, - delta2: { - x: 146.1171875, - y: 45, - }, - bidirectional: false, - }, - { - id: '4da8e3367b63b640', - label: 'Bidirectional!', - from: '4da8dbbc7b71be99', - to: '4da8ded27033a710', - delta1: { - x: -186, - y: 7, - }, - delta2: { - x: -155, - y: 28, - }, - bidirectional: true, - style: { - stroke: '#8839ef', - labelColor: '#8839ef', - strokeWidth: '2', - strokeDasharray: '2,5', - opacity: '1', - }, - }, - ], - summaries: [ - { - id: 'a5e68e6a2ce1b648', - parent: 'bd42e1d0163ebf04', - start: 0, - end: 1, - label: 'summary', - }, - { - id: 'a5e6978f1bc69f4a', - parent: 'bd4313fbac40284b', - start: 3, - end: 5, - label: 'summary', - }, - ], - direction: 2, - theme: { - name: 'Latte', - // Updated color palette with more vibrant colors - palette: ['#dd7878', '#ea76cb', '#8839ef', '#e64553', '#fe640b', '#df8e1d', '#40a02b', '#209fb5', '#1e66f5', '#7287fd'], - // Enhanced CSS variables for better styling control - cssVar: { - '--node-gap-x': '30px', - '--node-gap-y': '10px', - '--main-gap-x': '32px', - '--main-gap-y': '12px', - '--root-radius': '30px', - '--main-radius': '20px', - '--root-color': '#ffffff', - '--root-bgcolor': '#4c4f69', - '--root-border-color': 'rgba(0, 0, 0, 0)', - '--main-color': '#444446', - '--main-bgcolor': '#ffffff', - '--topic-padding': '3px', - '--color': '#777777', - '--bgcolor': '#f6f6f6', - '--selected': '#4dc4ff', - '--accent-color': '#e64553', - '--panel-color': '#444446', - '--panel-bgcolor': '#ffffff', - '--panel-border-color': '#eaeaea', - '--map-padding': '50px 80px', - }, - }, -} - -export default aboutMindElixir as MindElixirData diff --git a/mind-elixir-core-master/src/exampleData/2.ts b/mind-elixir-core-master/src/exampleData/2.ts deleted file mode 100644 index c31923c..0000000 --- a/mind-elixir-core-master/src/exampleData/2.ts +++ /dev/null @@ -1,114 +0,0 @@ -import type { MindElixirData } from '../index' -import MindElixir from '../index' - -const mindElixirStruct: MindElixirData = { - direction: 1, - theme: MindElixir.DARK_THEME, - nodeData: { - id: 'me-root', - topic: 'HTML structure', - children: [ - { - topic: 'div.map-container', - id: '33905a6bde6512e4', - expanded: true, - children: [ - { - topic: 'div.map-canvas', - id: '33905d3c66649e8f', - tags: ['A special case of a `grp` tag'], - expanded: true, - children: [ - { - topic: 'me-root', - id: '33906b754897b9b9', - tags: ['A special case of a `t` tag'], - expanded: true, - children: [{ topic: 'ME-TPC', id: '33b5cbc93b9968ab' }], - }, - { - topic: 'children.box', - id: '33906db16ed7f956', - expanded: true, - children: [ - { - topic: 'grp(group)', - id: '33907d9a3664cc8a', - expanded: true, - children: [ - { - topic: 't(top)', - id: '3390856d09415b95', - expanded: true, - children: [ - { - topic: 'tpc(topic)', - id: '33908dd36c7d32c5', - expanded: true, - children: [ - { topic: 'text', id: '3391630d4227e248' }, - { topic: 'icons', id: '33916d74224b141f' }, - { topic: 'tags', id: '33916421bfff1543' }, - ], - tags: ['E() function return'], - }, - { - topic: 'epd(expander)', - id: '33909032ed7b5e8e', - tags: ['If had child'], - }, - ], - tags: ['createParent retun'], - }, - { - topic: 'me-children', - id: '339087e1a8a5ea68', - expanded: true, - children: [ - { - topic: 'me-wrapper', - id: '3390930112ea7367', - tags: ['what add node actually do is to append grp tag to children'], - }, - { topic: 'grp...', id: '3390940a8c8380a6' }, - ], - tags: ['layoutChildren return'], - }, - { topic: 'svg.subLines', id: '33908986b6336a4f' }, - ], - tags: ['have child'], - }, - { - topic: 'me-wrapper', - id: '339081c3c5f57756', - expanded: true, - children: [ - { - topic: 'ME-PARENT', - id: '33b6160ec048b997', - expanded: true, - children: [{ topic: 'ME-TPC', id: '33b616f9fe7763fc' }], - }, - ], - tags: ['no child'], - }, - { topic: 'grp...', id: '33b61346707af71a' }, - ], - }, - { topic: 'svg.lines', id: '3390707d68c0779d' }, - { topic: 'svg.linkcontroller', id: '339072cb6cf95295' }, - { topic: 'svg.topiclinks', id: '3390751acbdbdb9f' }, - ], - }, - { topic: 'cmenu', id: '33905f95aeab942d' }, - { topic: 'toolbar.rb', id: '339060ac0343f0d7' }, - { topic: 'toolbar.lt', id: '3390622b29323de9' }, - { topic: 'nmenu', id: '3390645e6d7c2b4e' }, - ], - }, - ], - }, - arrows: [], -} - -export default mindElixirStruct diff --git a/mind-elixir-core-master/src/exampleData/3.ts b/mind-elixir-core-master/src/exampleData/3.ts deleted file mode 100644 index 62ee613..0000000 --- a/mind-elixir-core-master/src/exampleData/3.ts +++ /dev/null @@ -1,2646 +0,0 @@ -import type { MindElixirData } from '../index' - -const frontEndSkill: MindElixirData = { - nodeData: { - topic: 'web前端能力地图', - id: 'me-root', - children: [ - { - topic: '专业能力', - id: '31674e797740932bd85937f60a271ce9', - children: [ - { - topic: '初阶', - id: '8aac6fd006f93acc92108dde88bbb371', - children: [ - { - topic: '前端基础', - id: '878fbc7deac7d928fce359900cf81fef', - children: [ - { - topic: '客户端', - id: 'da26d49270305392815cea3f8b6f0796', - children: [ - { - topic: '浏览器', - id: 'eec82aa0f673b7ffc6ea68fe24078309', - children: [ - { - topic: 'Chrome', - id: '660f7cd083cef15a0a38c74cc9fde4f2', - }, - { - topic: '微信内置浏览器', - id: 'e6cfa2b46b842d3899c08d73ed0b4a43', - }, - ], - }, - { - topic: 'APP', - id: '3f472c19c6dff87242e5c6aacaa7afd2', - children: [ - { - topic: '小程序', - id: '7abc617cff7a076041b8d38362c9a67c', - }, - { - topic: 'WebView', - id: 'bbbfba5924bd3f0c55bb37c8081d4ebd', - }, - ], - }, - ], - }, - { - topic: '网络', - id: '2fa503c93c56ab4b8a764df08cc57abb', - children: [ - { - topic: 'Domain', - id: '50cf1b9c278606cd47a5a3817adc638a', - }, - { - topic: 'TCP/IP', - id: 'e8e7bc4206eabc59624e17498f58249c', - }, - { - topic: 'DNS', - id: '595c0850a64785b537287eb2b468eec4', - }, - { - topic: 'HTTP', - id: '2aef90d1b0fd75713b08e2df3ff28f46', - }, - ], - }, - { - topic: '服务端', - id: 'ee6b09e9ce7be6f2742d3ffccc65a1d4', - children: [ - { - topic: 'WebServer', - id: 'bc557882b7c313b1980cbe680a14c985', - children: [ - { - topic: 'Nginx', - id: 'f3feafa53304e8a3143ed0e9f3e1fac9', - }, - { - topic: 'Apache HTTP Server', - id: '0ad21d131b8a8283f63e7a4ebf8defe1', - }, - { - topic: 'CDN', - id: 'af0bdd4b91061ebedb4a523f918bd47e', - }, - ], - }, - { - topic: '服务端语言', - id: 'f1fa46104b01102db269d1909d208ff7', - children: [ - { - topic: 'Java', - id: 'd9b2627ab5875b4c7b1b17d0a2e4b010', - }, - { - topic: 'Golang', - id: 'bc12d81e717be8059be2394788440137', - }, - { - topic: 'Python', - id: '78831f7ccaa673617adefb88250dd9de', - }, - ], - }, - { - topic: '数据库', - id: 'b8621ccd3a037349098125ebb5ed932e', - children: [ - { - topic: 'MySQL', - id: '7f4e8c09c1f19698449cb1ec8f4fea4a', - }, - { - topic: 'MongoDB', - id: '16710cea5cfb50712c8832676b87d2cc', - }, - ], - }, - { - topic: '操作系统', - id: 'a3d072a89b06377d3e27937fee021cff', - children: [ - { - topic: 'Linux', - id: 'e72c34d6886dd4dcecf2d5df342f3c4e', - }, - ], - }, - ], - }, - { - topic: '行业标准', - id: '6595463e8a33b2faf3d13bff312bfb5f', - children: [ - { - topic: 'W3C/WHATWG', - id: 'e941274d59b2a3f6fd48f15fefeb30e7', - children: [ - { - topic: 'CSS标准', - id: 'ad84cd730a702498f54b040c050c5d32', - }, - { - topic: 'HTML、XHTML、XML、HTML5标准', - id: '79dc813fb90805d518946c26424cfeb1', - }, - { - topic: 'DOM标准', - id: 'e3a3d011765a4d11a9dd73f9b4d540d4', - }, - { - topic: 'SVG标准', - id: '6b0774c945df07be86f79fb5b00bdd32', - }, - { - topic: '小程序标准', - id: '70cfcbedebae12ebd92cd2555e8d04b4', - }, - ], - }, - { - topic: 'ECMA-TC39', - id: '5c7bdc4d497f1f28ed6644a4dd2a9910', - children: [ - { - topic: 'EcmaScript标准', - id: '22a562e41becc77095c039092c4d92b7', - }, - { - topic: 'JavaScript标准', - id: 'abf39a44037669f5980a6ce807e2af72', - }, - ], - }, - ], - }, - ], - }, - { - topic: '研发工具', - id: 'a9d4061ae43393fbd00cdd19e7606215', - children: [ - { - topic: '编辑器', - id: '279efaf9e60aac9bbf99ba03cdbc2326', - children: [ - { - topic: 'Visual Studio Code', - id: 'cb07f954f6deeac8cdc8b7332e852592', - }, - { - topic: 'WebStorm', - id: '25314a128c82e73a9a77b013477c5de1', - }, - { - topic: 'Sublime Text', - id: '9e1f252caaea4b414890f03594f5aefd', - }, - ], - }, - { - topic: '调试预览', - id: 'ac6c91e905bc11c3c99b92188d0d7e33', - children: [ - { - topic: '浏览器调试工具', - id: '1ce51746dc86d04c1ea313d1db68a15d', - children: [ - { - topic: 'Chrome DevTools', - id: '72e3db2365908f96c51b3e4857060576', - }, - { - topic: '微信开发者工具', - id: '9ea4f48e0c5382940ffa388a68281e74', - }, - { - topic: 'vConsole', - id: '763e15cd76798903155c3965d961cec8', - }, - ], - }, - { - topic: '本地服务', - id: '75fceaf637f8fad547e183e3f8ab1472', - children: [ - { - topic: 'file://', - id: 'c4ff4bd9c4c0997de5f100c90d0d89a8', - }, - { - topic: 'http://、SimpleHTTPServer', - id: 'ed1698058fd5ae49d36d518d3a80a115', - }, - ], - }, - { - topic: '在线服务', - id: '93e195bb7cdf12f666b239bfb7f72ab7', - children: [ - { - topic: 'CodePen', - id: 'f91d2158ce4546b64b1b07d70f0856f3', - }, - { - topic: 'JSFiddle', - id: '5afe735ffa45d26c8470d0ab385f2f07', - }, - { - topic: 'github1s', - id: '8d6dec6609322cc20c4fec74c188319c', - }, - ], - }, - { - topic: '网络调试', - id: 'cac051fea196400dd0d43f0a4cd568f3', - children: [ - { - topic: 'hosts、Switchhosts', - id: '4eb2b342b8ed94d34ca3d56c4ac80851', - }, - { - topic: 'Debugging Proxy、Charles、wireshark', - id: '750ea29ab40d3928c73fe49d5591b698', - }, - ], - }, - ], - }, - { - topic: '图片编辑器', - id: '0f2f00568333c2408bbb7886db69d2ca', - children: [ - { - topic: 'Photoshop', - id: 'f4464dea35369505b68446c56f7ddfd6', - }, - { - topic: 'Sketch', - id: 'd2dad47f7ff75750a540daf7efe60b23', - }, - { - topic: '蓝湖', - id: '1f368c8d993b89416fc78ce437bbe746', - }, - { - topic: '摹客', - id: 'd18a47cd36ebad761d8d0464207c39d7', - }, - { - topic: 'figma', - id: '473bcb154547a41a002718b7baf8a413', - }, - ], - }, - { - topic: '版本管理', - id: 'bfe3e81cd4d8ca5258150247e7991171', - children: [ - { - topic: 'git', - id: 'bf06e9d6ce20a6e39f33fc316ef59d2c', - }, - { - topic: 'SVN', - id: '68eee02d166735e798a544960b5e6f61', - }, - ], - }, - ], - }, - { - topic: 'HTML', - id: '224d1a9501485d063e295e4734a929f2', - children: [ - { - topic: '元素', - id: '9bd8a0a2194fb18b6156e3777921c47f', - children: [ - { - topic: '根元素', - id: '11b56bf6f8a6eaf94c1041b86bd9f56f', - children: [ - { - topic: '主根元素html', - id: '35d5af054234d66be64d4051ec7782e7', - }, - { - topic: '分区根元素body', - id: '42bde3da38a0a5b860155dd1e89cec7b', - }, - ], - }, - { - topic: '元数据', - id: '8c5be907330aecb85e1739b6f213d432', - children: [ - { - topic: 'base', - id: 'be420b6f068eaf12e60f46b1e8d99636', - }, - { - topic: 'head', - id: '814836dde3998eb919a01a82c8de81a6', - }, - ], - }, - { - topic: '内容分区', - id: '20d975e504ae04130beb374dff1a10fd', - children: [ - { - topic: 'header', - id: '651ebebfd8064edd02b7eaddb6877db3', - }, - { - topic: 'footer', - id: '1482d802c366557aa742d7618955d454', - }, - ], - }, - { - topic: '内容', - id: '982c2e623f7807fbcf22f11b7b3f3da4', - children: [ - { - topic: '块级内容div、dir', - id: '551f3a84c00fb6f555aeff605fc8deb8', - }, - { - topic: '文字内容a、b、strong', - id: '7471517921b78db7ef2a01905361e35b', - }, - ], - }, - { - topic: '图片和多媒体', - id: '9a1f340cf9fedf52ceaf9b91396011ee', - children: [ - { - topic: 'audio', - id: '7bf41be43ffa20b5eee603bde38f3848', - }, - { - topic: 'img', - id: 'd4ec18739d6ce88a85bbb7d6559cc48e', - }, - ], - }, - { - topic: '内嵌内容', - id: 'dd0379bc81586da5c83a617e3e909953', - children: [ - { - topic: 'iframe', - id: '0d20c30697c4f8dbda8e99669c1c6123', - }, - { - topic: 'object', - id: '650f22160a8e58109fc0387fb2264bc1', - }, - ], - }, - { - topic: '脚本', - id: '4ddde8fbe2161af6deacc013fda0f687', - children: [ - { - topic: 'canvas', - id: 'e258a6e0d0c7d22053519d254287c1ff', - }, - { - topic: 'script', - id: '8dc66fc7802dfa72b395ab1a2dc468c9', - }, - ], - }, - { - topic: '表格', - id: 'fa8a188b2ce2774d899439c2250c0d3d', - children: [ - { - topic: 'table', - id: 'b844737e83330c6eae1aaa33e9880fa8', - }, - { - topic: 'tbody', - id: 'ac9f26165d7111a5803e5a624416af3e', - }, - ], - }, - { - topic: '表单', - id: 'b40fd0c94f641907e8748f586775eec4', - children: [ - { - topic: 'button', - id: '87aa4bbf4d73a0dab525a852a6b3a2b7', - }, - { - topic: 'input', - id: '1acb0ac6530120202106faf8d7dc8c04', - }, - ], - }, - { - topic: '可交互元素', - id: '5d0210b9bc5bbdd780d8886e78acd4f8', - children: [ - { - topic: 'menu', - id: 'a217787ad9659b6aa290995c9cb70996', - }, - { - topic: 'menuitem', - id: '2db6ffcc9338a5b458e51e79d5e9275d', - }, - ], - }, - ], - }, - { - topic: '属性', - id: '7c974d57cf5176ad7e8724be4e3c8aa2', - children: [ - { - topic: '常用属性', - id: '2a19af9139885de6c257ee0a27bcc4f6', - children: [ - { - topic: 'class', - id: '1a4c07c5e74cea4ccdbe829d5b2ff430', - }, - { - topic: 'id', - id: 'd5d612cbdeecbca87c8527557927efce', - }, - { - topic: 'style', - id: '02b9d58b26e2fb97f2477e23e4840917', - }, - { - topic: 'title', - id: 'f40981a62f1ce5351c02c5731a8535e8', - }, - ], - }, - { - topic: '全局属性', - id: '7e94765996dc13e45dadf93196e49eef', - }, - ], - }, - { - topic: '事件', - id: 'e82e8caa7030a2e2799f945c5033ba06', - children: [ - { - topic: '窗口事件', - id: '657f82ec314496b90e2528ddf48ded73', - }, - { - topic: '表单事件', - id: '954e38edebb2772a26ce90a07a179ec3', - }, - { - topic: '键盘事件', - id: 'd570b0f6fa26d87479e80fed7202197b', - }, - { - topic: '鼠标事件', - id: '1e968f11315d5090ae5f6cf3e90f83bd', - }, - { - topic: '多媒体事件', - id: '2c7dbadfc7840b430cb53f7eb3ce6989', - }, - ], - }, - { - topic: '编码', - id: '206b18c2aec8fa440f6c9a1c43084b5d', - children: [ - { - topic: 'URL编码', - id: '46a92523cd4a3eca0dcb6fc6654aaf35', - }, - { - topic: '语言编码', - id: '848c2aa695564789bc14171324c74164', - }, - { - topic: '字符集', - id: '5f250e4d0e8e7aaf6f05ebb93cf930c3', - }, - ], - }, - ], - }, - { - topic: 'CSS', - id: '2738390f5a5b5a2592e289251e153eae', - children: [ - { - topic: '语法', - id: '955e835f979dbe12402d464aae79df19', - children: [ - { - topic: '@规则', - id: '4d533b76c0b659132a87dd7a20f2348e', - }, - { - topic: '层叠', - id: '9c29d90fb30f9c36393a5f01192d61c0', - }, - { - topic: '注释', - id: '9ce4b1f6aba05533ffd7fa1e85541aee', - }, - { - topic: '解释器', - id: '276f1c16a7f3cfd1b1498ad247b53bfe', - }, - { - topic: '继承', - id: '6f47acb14c875668f5531b8c96ada1e2', - }, - { - topic: '简写', - id: 'f91c0e7332471d6ffdd3c5bf845f423c', - }, - { - topic: '优先级', - id: '2be9c9398583519e3212c4258acf8f32', - }, - { - topic: '值定义', - id: '0a37a9481ef4cb110d73ae82dc098ad5', - }, - { - topic: '单位与取值类型', - id: '96a6f5df2b0c7a426b14dc9ed1fb2574', - }, - ], - }, - { - topic: '选择器', - id: '75130ee37d2046a76ede404e5150569e', - children: [ - { - topic: '元素选择器', - id: '3241f2e67169ddef34521e2be2d608fe', - }, - { - topic: '选择器分组', - id: '800f1843d3347ef2028baa13bd40994b', - }, - { - topic: '类选择器', - id: '5eaa3f46592944d4298dfa16e1a48d06', - }, - { - topic: 'ID选择器', - id: '138492d495d99381e42535416cbadd5f', - }, - { - topic: '属性选择器', - id: '3e1ecdeef855c5d04f0c693d1576541f', - }, - { - topic: '后代选择器', - id: '5627038331a7c9130057f20b09fb9313', - }, - { - topic: '子元素选择器', - id: '477eb83f5facb7b6ca62d3a07d4aeb55', - }, - { - topic: '相邻选择器', - id: 'b3b30c773d035bdaad436c66ad1d6fbf', - }, - { - topic: '伪类', - id: 'a87eeff261316d81f9d83661bb08af9c', - }, - { - topic: '伪元素', - id: '430c8aa651b788d205f7b8eca0c3a04e', - }, - ], - }, - { - topic: '定位', - id: 'cc6ad1bac45557a7a6636609b34ff59a', - children: [ - { - topic: 'position', - id: '571b56b1dfb52ad8eb37a08741f99a90', - }, - { - topic: 'top、left、bottom、right', - id: '639d68d10450fcac5115e2a057a2f352', - }, - { - topic: 'z-index', - id: 'a932ae00fd65919839b5d4ed5d82285e', - }, - ], - }, - { - topic: '布局', - id: '2415b6e6af4966a4ed0f12e80a4b3877', - children: [ - { - topic: 'Box Model', - id: 'c49b5742280ccd61b59586d1151ff747', - }, - { - topic: 'FlexBox', - id: 'aa6ad40e1d530795cdace747ccab3863', - }, - { - topic: 'Grid', - id: 'bfcff8726f64fd823336ab22835a678c', - }, - { - topic: 'Column', - id: 'e72e8b3297a7587eda12cb357857ddb0', - }, - ], - }, - { - topic: '样式', - id: 'f39148af0020e26960a3a9978b7502b0', - children: [ - { - topic: '背景', - id: '50703eafb8d64142584d6fe070760626', - }, - { - topic: '文本', - id: 'eeba72ca38825bb15109462afd3f625c', - }, - { - topic: '轮廓', - id: 'ca27e160020891310cc7a5be616f651c', - }, - { - topic: '列表', - id: '88a829ae37794d2653f306616a59b98e', - }, - ], - }, - { - topic: '动画', - id: '9f2a9bbc90eb6a2d13d48ac6aa6d791b', - children: [ - { - topic: 'Animation', - id: '910a1ab848cb2f50524b56366d5834e9', - }, - { - topic: 'transition', - id: '1c47b503c9b774acaac991a1ed977f77', - }, - ], - }, - { - topic: '应用', - id: 'c7566490b49b837e1b9df20d8151006d', - children: [ - { - topic: '响应式', - id: '737f2adb0d9f32741ad2dc3394451822', - children: [ - { - topic: 'em', - id: '0560b062a18ac7ad28435807c8959242', - }, - { - topic: 'vh/vw', - id: 'ae98d378740b9b6289114c6d752bd30e', - }, - { - topic: '%', - id: '841ff3b9a82a41b78ff884669b091ba8', - }, - ], - }, - { - topic: '自适应', - id: '3a8b7f0eda3acb895a21464a89376835', - children: [ - { - topic: '@media', - id: '34bacf7b89b3b38a904a210f904a85c3', - }, - { - topic: 'rem', - id: 'a18a86af33a57b198125acbcaa9b6e02', - }, - ], - }, - ], - }, - ], - }, - { - topic: 'JavaScript', - id: '99557e3b804ca1ec5f184e8ba13f2134', - children: [ - { - topic: '语法', - id: '9d9492cfa118aad0b086f925b591e565', - children: [ - { - topic: '值、变量', - id: 'b6fbf7a702394a59b23257fa5e69f6d6', - }, - { - topic: '数据类型', - id: '6c7867ace5b6415619790352987ef43b', - children: [ - { - topic: '基本类型', - id: 'b2dddd77d4a130ed46165e0281fff8a1', - }, - { - topic: '类型判断', - id: 'e180f01b186d26e6acd9f00ea39bfd81', - }, - { - topic: '类型转换', - id: '2f4f77b47893f477f46513ebe6bf39f0', - }, - ], - }, - { - topic: '流程控制', - id: '2b4e5a5192cb038082c89e6c87cf36c5', - }, - { - topic: '运算(表达式、运算符)', - id: '8c94d19915fe55e5ac9fe43470780974', - children: [ - { - topic: '数学', - id: 'f5d1082326f3c4f9b05188477b63d4b7', - }, - { - topic: '比较', - id: '20c521d6aaae55d571a869876fad041b', - }, - { - topic: '逻辑', - id: 'dc4a8011779f5708c172d42d43447abf', - }, - ], - }, - { - topic: '函数', - id: 'ae9581f1332c372db5fb37f83c70e95d', - children: [ - { - topic: '函数声明', - id: 'f9a1027b72d7c50daaa6cb666f6dfe8e', - }, - { - topic: '函数表达式', - id: '963a50442a603514111581d9dd2d9eb2', - }, - { - topic: '回调函数', - id: 'acc027399883761e276b6e0befbfda8d', - }, - { - topic: '箭头函数', - id: 'af9e8393844ae895aee9a31bcd863c87', - }, - ], - }, - ], - }, - { - topic: '数据类型深入', - id: '14a7654de6e2a9f58e20f7df18263c30', - children: [ - { - topic: '原始类型的方法', - id: 'ef562f2d5f09d1f873224732c7cb25bf', - }, - { - topic: '数字类型', - id: 'ac16fa44442bdc817ad99fa116c9fd99', - }, - { - topic: '字符串', - id: '46097f6242a03e3a38493aedba106ec2', - }, - { - topic: '数组', - id: '131d8286c9e4626c7564b81abcc6c3fb', - }, - { - topic: '数组方法', - id: '13a2985a38e9e16b23beeac6231b4043', - }, - { - topic: 'Iterable object(可迭代对象)', - id: '2b277a220f58fec704e69cddd4770a03', - }, - { - topic: 'Map and Set(映射和集合)', - id: '471dbf49c97f6a5d3ee5ce175487f15f', - }, - { - topic: 'WeakMap and WeakSet(弱映射和弱集合)', - id: '18b47319c37dee157fdd512be58632c5', - }, - { - topic: 'Object.keys,values,entries', - id: '9e1e9b0f2f3cffa33f0af9821035076d', - }, - { - topic: '解构赋值', - id: '1acf6f71562b8c7f916b19218bd53bb4', - }, - { - topic: '日期和时间', - id: '0a54024c5b25d44337ee936da303cf76', - }, - { - topic: 'JSON序列化、反序列化', - id: '6b469d7db067f6b8d7de2974dd34db87', - }, - ], - }, - { - topic: '对象', - id: 'eb21dd3b6e7024f41ab41cb7e438d513', - children: [ - { - topic: '属性/字面量', - id: 'aa25bee0e7804b3a64a3993d2a4ad641', - }, - { - topic: 'in、for…in', - id: '93558df1d5a4c9e0fd35603697ef6c8e', - }, - { - topic: '对象引用', - id: '768611c858dcb9acf444583504743862', - }, - { - topic: '深拷贝、浅拷贝', - id: 'db2f67e46dd08b79bb7298954c9ea735', - }, - { - topic: 'symbol', - id: 'c5fd1fbc454d7f98b40f89f27e376179', - }, - { - topic: '垃圾收集机制', - id: 'e555428d9ad5907ae5e606e0e586e929', - }, - { - topic: 'new', - id: 'e132ec0560e2e29149d3282f3a8ddace', - }, - { - topic: "Optional chainang '?.'", - id: 'dceee85ccb695c21abe70838b751310e', - }, - { - topic: '类型转换 Symbol.toPrimitive', - id: '5a20cedb58c5c05720305c8de129ff11', - }, - { - topic: 'Property flags、descriptors', - id: 'be6dd2a5a34c8274f5dab17a16d68e02', - }, - { - topic: 'getters、setters', - id: '58948107e951adc4bd193d312d05de3c', - }, - ], - }, - { - topic: '函数', - id: 'f5d245a990c6a95e1dac54cbac802252', - children: [ - { - topic: '调用栈', - id: '3f3611484a07c9ff93b7641d4e924755', - }, - { - topic: '递归、尾递归', - id: '593d5c64df0d49404c4975f975a3759e', - }, - { - topic: 'arguments、params spread', - id: 'd0d5dfdd07a5bf8d9033231fee874e0a', - }, - { - topic: '作用域、闭包', - id: '12a32a38ef411518163c7d068c2b5a79', - }, - { - topic: 'var、变量提升', - id: 'a10f2b814fc50661b933c2eaee5ec03a', - }, - { - topic: 'IIFE、匿名自执行函数', - id: '61144140504e5f2c9c9371a4617d0405', - }, - { - topic: 'NFE、函数命名表达式', - id: '0d99c8755f14d990a22e95b691bae6c6', - }, - { - topic: '箭头函数', - id: '2a060e2129ee0a48ced08ff406595b77', - }, - { - topic: 'new Function', - id: 'af5bac9a9c4bfbc1f8cda0208a00bf66', - }, - { - topic: 'setTimeout、setInterval', - id: '995d24f7421f9bfed77087906f63ea9b', - }, - { - topic: 'call、apply、bind', - id: '5cec2a7aaac28f03a0b99622592deecb', - }, - { - topic: '部分施用、柯里化', - id: '6727ab9aca260648d519617b63ec774e', - }, - ], - }, - { - topic: '原型', - id: 'a57c1ac925998d3a1709af867145f3ba', - children: [ - { - topic: '原型链、继承', - id: 'ff4a651f8082f8760c48fcf0ca195d07', - }, - { - topic: 'F.prototype', - id: 'ffd2544ac8383b5187a19c4a7bcb532b', - }, - { - topic: 'Object.prototype', - id: 'b298a6e7c0f6984bef37d42207c0569d', - }, - ], - }, - { - topic: '类', - id: 'b55ea652d3ac3f9b49b0376a0bf0c8a6', - children: [ - { - topic: 'extend继承', - id: 'eb437075af507cfd88efb88b65823750', - }, - { - topic: '方法重载', - id: '24c7bec35e06690fd645d865cf0789c1', - }, - { - topic: '构造函数', - id: 'e35b16c68b2ee8ee7de1f7abf9564949', - }, - { - topic: 'Super', - id: 'cdfe600b9871a95cdb6a44c8682f6421', - }, - { - topic: '静态属性、静态函数', - id: '2e2202de29086e6031afbb981e4a8bd6', - }, - { - topic: '私有属性、私有函数', - id: '41a5751a2dad06920f4059e27d528034', - }, - { - topic: '混合、Mixins', - id: '7a3f1a0bae895ab2ef916fcff9b3c06a', - }, - ], - }, - { - topic: '异步流程控制', - id: '9635b8e8b6839609350edc6fbfdf037a', - children: [ - { - topic: 'Callback', - id: 'a32aaf62e735e949d56be3a559c8efd1', - }, - { - topic: 'Promise', - id: '311117b9552bab053eabe8078420f18a', - children: [ - { - topic: 'Promises/A+、Promisification、Thenable', - id: '8dcdec27e7348ec2d1aeadea3348541d', - }, - ], - }, - { - topic: 'async/await', - id: 'f3fd49874948d4631999d4e8f3a01084', - }, - { - topic: 'generator', - id: '4614cd8e445a46065a461ee1a00a0f65', - }, - { - topic: 'iterable', - id: '6a6fe61d80a8a4d4eb54ad1737619d67', - }, - ], - }, - { - topic: '模块化', - id: '84c969871d91cd733be52d993a4ecfca', - children: [ - { - topic: 'commonJS', - id: '85d3564e62a319503fe0567a649a1a4f', - }, - { - topic: 'amd、cmd、umd、es-module', - id: '8d11665e6de762ad3ef9650cf7592a11', - }, - ], - }, - { - topic: '异常捕获', - id: 'faa8788b7212148c8a52e32fa054c1be', - children: [ - { - topic: 'try…catch…finally', - id: '5176c9d386faa08451a3576fa650270d', - }, - { - topic: 'throw', - id: 'c237269343481a4c94caa74add720831', - }, - { - topic: 'Error', - id: '8190a0e4f99d854dd9d8778524dd7603', - }, - ], - }, - ], - }, - { - topic: '浏览器', - id: '7f19816c5e19cf86230e5b226e5c9903', - children: [ - { - topic: 'DOM', - id: '50fb0ac8bda54a167800753e2c9ede64', - children: [ - { - topic: 'DOM Tree', - id: '8554e27faf9ff46f06a1c358efe13f65', - }, - { - topic: 'DOM Node', - id: 'b860f58b50b0d8ce79bbdf4d328d40f9', - }, - { - topic: 'DOM Query', - id: 'ad858b6e6e34ca35ff5e0ed3167a9a4c', - }, - { - topic: 'DOM Properties', - id: '69ef5006e88ceea8396a9ea48e8a8f60', - }, - { - topic: 'DOM Modify', - id: 'eaf5537bcd7527895cd2dce509dc3a1d', - }, - { - topic: 'Styles', - id: 'ed3af5bd2dbb9a8705cc4f0b9bc70c51', - }, - { - topic: 'Coordinates、Element Scrolling', - id: '9abcdab601b97f1b6cd5f192239f6fd2', - }, - { - topic: 'DOM Events', - id: '3fd53adf82a0249470adf92a98ccdc6c', - children: [ - { - topic: 'UI Event', - id: '3dce9de8b79aa24336dd78a1e8459548', - }, - { - topic: 'Bubbling and Capturing', - id: '2b91f8f03a56aeee4bf5f4edf00d2d74', - }, - { - topic: 'Event Delegate', - id: 'eff3c7a9e6b24b8c3ca9468134f6a257', - }, - ], - }, - ], - }, - { - topic: '浏览器API', - id: 'a83b86afddaf3acfab38b1b548a8b5b9', - children: [ - { - topic: 'location', - id: 'c85eb54b437e83bec467979ee254285f', - }, - { - topic: 'history', - id: '4aa1e2d8fb13191af97c498af5dc72dd', - }, - { - topic: 'navigator', - id: '040cb2a9a0f165a58808573deb18fadf', - }, - { - topic: 'Default Actions', - id: '76be27391d41ce7c92f4301a293ea8ae', - children: [ - { - topic: 'event.preventDefault()', - id: 'a38977899b13db542e83a3678540401a', - }, - ], - }, - { - topic: 'Form', - id: '057c635a775a8f3b788486ab26979648', - children: [ - { - topic: 'change', - id: '02f28f4e87a1c0f129383f7502caa6a9', - }, - { - topic: 'focus', - id: '33e83ab232b9c47a7a3fcfdb280ea46f', - }, - { - topic: 'blur', - id: '2f6cdbcb173c7ede90c779ef370b03d6', - }, - { - topic: 'submit', - id: '1e50adf7bd97e0fb66eaa37a4e9c8701', - }, - ], - }, - ], - }, - { - topic: '网络', - id: '647f828031265ccb7d014fb189e85fde', - children: [ - { - topic: 'XHR', - id: 'e964900fab3b3d5aece93934516f974b', - }, - { - topic: 'Fetch', - id: '702d3c50dd7025bb16de3415cccec6b2', - }, - { - topic: 'JSONP', - id: 'dbe3ef65f80d932f5a4fac86713a944d', - }, - { - topic: 'WebSocket', - id: '66255d2ff5cf5b3cfd59ca60b5c8a95e', - }, - ], - }, - { - topic: '权限', - id: '79ed95a09a79212c5fba03b90db5e4de', - children: [ - { - topic: 'Cookie', - id: 'f4a471b142737acd0c0d335273545790', - }, - { - topic: 'Session', - id: 'b09520ab4683e67812e674592fe7c8e8', - }, - { - topic: 'OAuth', - id: 'b29ac332a04e751f5f5e7016e4d6c760', - }, - { - topic: 'SSO', - id: '567b341317da97fd2f96e57fcf7ab629', - }, - { - topic: 'JWT', - id: '8915f30e8652f65e5641b10bdf732387', - }, - ], - }, - { - topic: '安全与隐私', - id: '0561a37ca4bdf90af1b4e28c4dab09fe', - children: [ - { - topic: 'Content Security Policy(CSP)', - id: '62dc832240ea38fd7e735df3d2b85ae5', - }, - { - topic: 'CORS', - id: '0c0edc5e50d855f59b93dcf43cdb454a', - }, - { - topic: 'XSS', - id: '41b3977744930437487a51af2e5d57cf', - }, - { - topic: 'CSRF', - id: '341d42efc06186f3e661061091b28753', - }, - { - topic: 'MITM', - id: '26d84d37dc2bd25609b84ecb774aae62', - }, - { - topic: 'Samesite', - id: '9568b3941ad9f1aafdb426555366c308', - }, - ], - }, - { - topic: '兼容性', - id: '5e75065d21cafeccc7d96250a9053f12', - children: [ - { - topic: 'Can I Use', - id: '31e989d52093100e430bd8a2021eb23c', - }, - { - topic: 'polyfill', - id: 'eed7069c257fbe0d2a1e66a867816471', - }, - { - topic: 'shim', - id: '838f4d98c56e6fb2f12ecef617968de3', - }, - { - topic: 'browserslist', - id: 'c603f00c20df4a146b2f1f283728d606', - }, - { - topic: 'Autoprefixer', - id: '72ba8a6ab9743df1afee275b45fcc3d7', - }, - ], - }, - { - topic: '开发者工具', - id: 'b57be7204ee4a49d9bb0ccce74b54cb4', - children: [ - { - topic: '设备模式', - id: '248d6c05787fca135ac5a0df01477678', - }, - { - topic: '元素面板', - id: '83621ba6019b0e4bb843f0b249406f4e', - }, - { - topic: '控制台面板', - id: '8416c48149eb927c996747695e425198', - }, - { - topic: '源代码面板', - id: '61eca01c459db4cc5bfc507e6431bd28', - }, - { - topic: '网络面板', - id: '3f27665f18496ab0ada8aaaa22a421c1', - }, - { - topic: '性能面板', - id: 'ad642f8dd2c8f57467a550c29564c239', - }, - { - topic: '内存面板', - id: 'db0ba2995224f12098fc8fa34cae79fa', - }, - { - topic: '应用面板', - id: '87ec9ef16c68e85ddec0cd2be2a581b3', - }, - { - topic: '安全面板', - id: 'ba5567a6f9296fe63c9554ab2f76dc3a', - }, - ], - }, - ], - }, - ], - }, - { - topic: '中阶', - id: '3dab1ad6cc0a304a63b2fd2e736d4861', - children: [ - { - topic: '研发链路(工程化基础)', - id: '2ae299b85b670554cfce102177e66498', - children: [ - { - topic: '脚手架(Scaffold)', - id: 'ae967d0b7db430d4f2500b1a45e5b810', - children: [ - { - topic: 'CLI(command-line interface)', - id: 'a4e1b207e07f3b92f797ff18b3514823', - children: [ - { - topic: 'commander', - id: '2b911b6446423721f1d2b1e634d544ad', - }, - { - topic: 'inquirer', - id: '7ff61b7d790f1d33d8d98f4d97a67d15', - }, - { - topic: 'ora', - id: 'f4f3d645ce19d43eb91a32d10a624953', - }, - { - topic: 'chalk', - id: '36049a32603132d40089215d070ff7c4', - }, - { - topic: 'emoji', - id: '2e1b20b69bc2f974b66ddc2eee58a929', - }, - ], - }, - { - topic: '初始化(Boilerplate)', - id: '784c8e54adf535d95078bfcf258e36db', - children: [ - { - topic: 'web-cli', - id: 'c10442e7e2be234a10d8e568c7ee5df2', - }, - ], - }, - ], - }, - { - topic: '包管理', - id: '9b42b61be6eff55092546bb67cf3730b', - children: [ - { - topic: 'ttnpm', - id: '360dc236fc03d03aa81988ba1caa79e2', - }, - { - topic: 'NPM', - id: '572a4d7d15073762aea72014040f777a', - }, - ], - }, - { - topic: '开发', - id: 'f9a0f97795a18ffced53f8c4694fcd63', - children: [ - { - topic: 'dev-server', - id: '10375b9ff9c08af47d4898a9509a8511', - }, - { - topic: 'hot-reload', - id: '8adaffd0b7d59d357149914760ccd73c', - }, - { - topic: 'mock', - id: '2b00b2e870d7163a91499a4b8e346eee', - }, - { - topic: 'proxy', - id: '95daf738dd16cc9d7739415f7dacfb3c', - }, - ], - }, - { - topic: '构建', - id: '519ce842acb7cd2cf5f605e6f9dfec2d', - children: [ - { - topic: '构建器', - id: 'a86498be1fbc7c4ab90869e34c0d4174', - children: [ - { - topic: 'webpack4、webpack5', - id: 'c547e824103e8843ddd95875f0d885af', - }, - ], - }, - { - topic: 'JS编译', - id: '3cc185a71adb3e24f16b916c74915c6e', - children: [ - { - topic: 'babel', - id: '50f530a5967f5d5c0edb5e5b57adc706', - }, - { - topic: 'esbuild', - id: '59cdf6329433e00ead52e2f69160391f', - }, - ], - }, - { - topic: 'CSS编译', - id: '2c093b47f06831df1ab239d840834ed7', - children: [ - { - topic: 'Less', - id: 'b0e1e4e7c28dc43587ab4ca06b1ab62a', - }, - ], - }, - ], - }, - { - topic: '代码规范', - id: '1bb398caadd2920445208550ebe590ba', - children: [ - { - topic: 'TT前端组-前端规范', - id: 'ae37e760a1e441a01cbedcb972ad9ee4', - }, - { - topic: '工具', - id: 'a9c319f5418cbfff14128d9423069254', - children: [ - { - topic: 'ESLint', - id: '339eb46d1e67634fb4b41867fb4225c4', - }, - { - topic: 'commitlint', - id: '428a9e031cb7ca5995bbd8b736de780d', - }, - { - topic: 'Prettier(代码格式化)', - id: '43ed1b59190fcc52b307d8a104bc3c57', - }, - { - topic: 'husky和lint-staged(流程控制)', - id: '7600d19bfc422beae7d446f53ded1607', - }, - { - topic: 'CI-ESLint', - id: '290c4d7379de26244c011c6b9c9992cc', - }, - ], - }, - { - topic: '开发分支规范', - id: '20147645846e4f6671ef6e3ae5637cf6', - }, - ], - }, - { - topic: '测试', - id: 'ffbc34ceb328a27c8c1153ca421edb5f', - children: [ - { - topic: '单元测试', - id: '1425b3f6e4cb79ff48106f8183c483fd', - children: [ - { - topic: 'jasmine', - id: '7a2d127bdf9d6cf6b71a0e839c6dd5ec', - }, - { - topic: 'mocha', - id: '58d289eaba7e388386d40de596897f80', - }, - { - topic: 'jest', - id: '892a99e973240c35b6f9a32584582a54', - }, - { - topic: 'enzyme', - id: 'c01406cb50c9d3ed1d6b0c74b3e8c9a9', - }, - ], - }, - { - topic: 'E2E测试', - id: 'd730ba6c2322e065813e814683a2c815', - children: [ - { - topic: 'Selenium', - id: '3015ac3d28939964079b23f46849356b', - }, - { - topic: 'karma', - id: '56d6e18fcc39af3f7b635385811615e3', - }, - { - topic: 'cypress', - id: '4b2543a176c33c16149b8b4937e12cd5', - }, - { - topic: 'Puppeteer', - id: '81514e7bcbd7a369c66f1a16abd1b2ca', - }, - { - topic: 'Appium', - id: '5d067c85e90064e84f3672135fb6a9f9', - }, - ], - }, - { - topic: '覆盖率测试', - id: '5cb2fd430495f8020f24b678a4a9b7b8', - children: [ - { - topic: 'istanbul', - id: '6797e27599396f0251e289c33249f2df', - }, - ], - }, - ], - }, - { - topic: 'CI/CD', - id: 'b191b7ea48234abb1a63b1f2779dcaa8', - children: [ - { - topic: 'gitlabCI', - id: '621ea561869a20cc81c14c14377b875b', - }, - ], - }, - ], - }, - { - topic: '库', - id: '1e82b5f5ab531e1073719e975f33429a', - children: [ - { - topic: '原则', - id: 'faaeffd9d67802fc22d9d1f81d1e01ad', - children: [ - { - topic: 'DRY', - id: '62f0d13aff117601c6ddc48b46181833', - }, - ], - }, - { - topic: 'CSS', - id: '177ed00834e2011f9c5c2b707506c323', - children: [ - { - topic: '作用域', - id: '99562e5cf75b554be4226c60a6f525e3', - children: [ - { - topic: 'scoped css', - id: '93b43cb55ff303fb3493825f104b006b', - }, - { - topic: 'css modules', - id: '478e64c435a812d0be70f100c74c86db', - }, - { - topic: 'css-in-js', - id: '5840ef7506ded776617110ff721b4ab9', - }, - ], - }, - { - topic: '样式库', - id: 'de12748b366de01957d4428f47b78c3b', - children: [ - { - topic: 'normalize.css', - id: '537244e9ac9cecb2bdf964fbe6e14e91', - }, - { - topic: 'Bootstrap', - id: 'fa8d61fb035c3e5bdfb93a9194456d92', - }, - { - topic: 'Tailwind', - id: '38c81c9026fe9b0d929e10e704d75e47', - }, - { - topic: 'Bulma', - id: '6ff2a187b2906ce4e3c0c0881460385e', - }, - ], - }, - ], - }, - { - topic: 'JS', - id: '9eb5f339684546659e43c37fa84b94d9', - children: [ - { - topic: '工具类', - id: 'a74d8d8ddef62914230d265f96551a5b', - children: [ - { - topic: 'history', - id: '29249c36dc58e342317b2f6cc851d8e6', - }, - { - topic: 'path-to-regexp', - id: 'acf5213db738b84f688f084894779fb3', - }, - { - topic: 'lodash', - id: 'f4a7852a40a2aff345e0790efc2c5319', - }, - { - topic: 'fastclick', - id: '85b17cf44c8916c2b796839e4caf2b22', - }, - { - topic: 'date-fns', - id: '9209eaab16f9544415c2d388b799b78d', - }, - ], - }, - { - topic: '网络', - id: '8bbf8c792114a9faf945646911d0267a', - children: [ - { - topic: 'axios', - id: '20c5fd823f78d651d612ed3c498e67f3', - }, - { - topic: 'got', - id: '040d53150f620e84f8998ebf86744a5a', - }, - ], - }, - { - topic: '数据流', - id: '9e4c9d13ada866de825693b2755033e3', - }, - { - topic: '模板引擎', - id: 'a37f5f767d7c9a6c0abfc62d7cb3eecc', - }, - ], - }, - { - topic: '动画', - id: '815e6e8a893a0d8fa8c1e980684c60b8', - children: [ - { - topic: 'CSS动画', - id: '0796d1461805d65c54dc7262670d746e', - }, - { - topic: 'JS动画', - id: 'e35945635420a2017514d831ca5a0f70', - }, - { - topic: 'Lottie', - id: '1a69ba89ba00d653afd8a583cb69df3d', - }, - ], - }, - { - topic: '设计规范/组件', - id: '89cf39097e4964081615e4b07793108c', - children: [ - { - topic: 'Material Design', - id: '0ae21932ffcb23a5277521e3ef4e7711', - }, - { - topic: 'Apple Human Interface Guidelines', - id: 'ace744986fbb79d24c9bc8ba40355609', - }, - { - topic: 'Ant Design', - id: '75a835435d3bdb49abb9df7f4667366e', - }, - { - topic: 'WeUI', - id: 'cb28b53ac9d0eda9dc3bd2eecbabea08', - }, - ], - }, - { - topic: '文档', - id: '5c9dd0f1a7745281547d3d048742a870', - children: [ - { - topic: 'jsdoc', - id: '1e7e0c6315c4691db24d7fad108fd479', - }, - { - topic: 'bisheng', - id: '4b17d1b2c39cfec00d6a865035b90d65', - }, - { - topic: 'dumi', - id: '0bb6376505ec4e878e34bcee5cad9ff4', - }, - { - topic: 'Storybook', - id: 'd1be68dcb7cf7ac978dc9d0f73664d40', - }, - ], - }, - ], - }, - { - topic: '框架', - id: 'fedfca839fe630f15e208234fbb4efd1', - children: [ - { - topic: 'Vue2', - id: 'dcd03a8e504486de38e05eefeaf80015', - }, - ], - }, - { - topic: '性能优化', - id: '51ca35304e8d0cc20349cf95fdd00578', - children: [ - { - topic: '指标', - id: '0b0487fa55b13f889ec82c6d9a6949ff', - children: [ - { - topic: '真实指标', - id: '2a27f76a97e70cce8a2276ee5dba4bd2', - children: [ - { - topic: 'First Contentful Paint (FCP)', - id: '9b6f6151a03868ab7fea73afe4fd2d3b', - }, - { - topic: 'Largest Contentful Paint (LCP)', - id: '0732c25579333b74b1adac9caa0acb3f', - }, - { - topic: 'First Input Delay (FID)', - id: 'f4c8e18b9bed53370ca4c53d85de8b20', - }, - { - topic: 'Cumulative Layout Shift (CLS)', - id: '10ffd1bc12012bb0dc5963fdd2b4cee9', - }, - ], - }, - { - topic: '实验室指标', - id: '6daf73b6ab9b9dbf157b4a77fa4ca701', - children: [ - { - topic: 'Total Blocking Time (TBT)', - id: '811cd2448dd68094a115e2b73f75600e', - }, - { - topic: 'Time to Interactive (TTI)', - id: '1eb9219a52a81a9ed483b33d6e655801', - }, - ], - }, - ], - }, - { - topic: '评估工具', - id: '2c33f9fd71e7a7679ebfbad2baef23db', - children: [ - { - topic: 'Chrome DevTools', - id: '45f118578ce1cf703cfa1fe77ef411d4', - }, - { - topic: 'LightHouse', - id: '82f10acd96224e425778339de88b5933', - }, - { - topic: 'PageSpeed Insights', - id: '053826ca4ed651379f3d41540fe9e165', - }, - { - topic: 'WebPageTest', - id: 'e3157f88f1de5957d5b02295209e452c', - }, - ], - }, - { - topic: '优化方案', - id: 'a5080132452fa769fc21812a28894407', - children: [ - { - topic: '压缩', - id: '29ab185cc63d297acd830021be38ef54', - children: [ - { - topic: '代码压缩', - id: 'a7020c0259a0029dc333b7e1f50f7804', - }, - { - topic: '文本压缩(gzip、Brotli、Zopfli等)', - id: 'fa82f5357a83b265da79d0036a6dfe08', - }, - { - topic: 'Tree-shaking', - id: 'bb5511548ff87c19eb13b2515cacdc4c', - }, - { - topic: 'Code-splitting', - id: '7e2482c5f9a0bbf3268fe50ce1113a13', - }, - ], - }, - { - topic: '图片优化', - id: '95313d4d58011c7ae746bd65ee76b85c', - children: [ - { - topic: '小图优化(css sprite、iconfont、dataURI、svg)', - id: '084d8b04cec493c748de7a31453e1162', - }, - { - topic: '图片格式选择', - id: 'ffbe4b15921508d7cd048605dcf0f094', - }, - { - topic: '压缩(如tinypng)', - id: '794306da6f9761f10cb84adf4a9fc262', - }, - { - topic: '响应式', - id: '6488f4a87096005deac5c73c74f65c56', - }, - ], - }, - { - topic: '加载策略', - id: 'ee3bf09993748edb68b09318558e57cc', - children: [ - { - topic: '懒加载', - id: '21f0a42128f0feba272accedec8afc40', - }, - { - topic: 'DNS预解析、预加载、预渲染', - id: '96adfb2a34ee1eb1a1d24f3cc56e5451', - }, - { - topic: '离线化(ServiceWorker、AppCache、离线包等)', - id: '2da2cd04f2f347bf6c6894faba1f53ea', - }, - { - topic: 'HTTP缓存', - id: '4744297336c2984ab847a4b1b9e95770', - }, - { - topic: '数据缓存(localStorage、sessionStorage)', - id: '4ca3771548ba02ced11b41fc95403236', - }, - { - topic: '资源加载(顺序、位置、异步等)', - id: '503cafbf035aea23fce763bf14efcbc6', - }, - { - topic: '请求合并', - id: 'caadd3076a0b5a61543329c963e45a93', - }, - { - topic: 'HTTP2', - id: '0075b823d291aed1438e4cd050a7d2dc', - }, - { - topic: 'CDN', - id: 'f624f142e817c764306aa95aed7271f0', - }, - { - topic: '服务端渲染', - id: 'e324249eef67a08b1796e53a0cbb09d1', - }, - ], - }, - { - topic: '执行渲染', - id: 'b75fc104a026f22f7d72d9e9c9cf37d7', - children: [ - { - topic: 'CSS代码优化(选择器、启用GPU、避免表达式等)', - id: '4fd87681f0a8457a8fb6dfe054ae1742', - }, - { - topic: 'JS代码优化及评估', - id: 'fcf23b177efe6d89cff34038938865ec', - }, - ], - }, - { - topic: '感官体验优化', - id: 'cabef7a1790745be388bb65731fde91d', - children: [ - { - topic: '骨架屏', - id: '73ee0a67aff6ef6f4b24c5b5b93e25b1', - }, - { - topic: 'Snapshot', - id: '008054d0d8cf52009d1bb5056f86d330', - }, - { - topic: 'Loading', - id: 'cdb6a058e9f136a47dc7d83be4a6364d', - }, - ], - }, - ], - }, - ], - }, - { - topic: '工作原理', - id: 'ad56aaeccc79d3fe46143fd8c3465a7d', - children: [ - { - topic: '浏览器', - id: '365c48febbd3ae0aaeeac97365ab27b0', - children: [ - { - topic: 'DOM Tree、CSSOM', - id: 'b8c63ab9f1d34f3b6d1c2b64e204889e', - }, - { - topic: '渲染、绘制', - id: '0fea40acc0c8f55cbef6a7d7970132d1', - }, - { - topic: '会话', - id: '0590d71564588164d9306483f987e452', - }, - { - topic: '事件循环', - id: '681a3c21166d96ee3e8dd8fc4350360d', - }, - { - topic: '垃圾回收', - id: '1ba061f8fd7a89280cdd6753e6891164', - }, - { - topic: 'Webkit深入', - id: 'c37283e0af6974be953858937e218ba3', - }, - ], - }, - { - topic: 'JavaScript引擎', - id: 'aa74256a4aec487dcfe538f3bbb5239d', - children: [ - { - topic: 'V8', - id: '674e91625a1d029024dacdc672a52877', - }, - { - topic: 'SpiderMonkey', - id: 'da40ba12af5405b19ccd745a1f5bf527', - }, - { - topic: 'JavaScriptCore', - id: 'a37ba000ef7fe729c38ae4914ebefe59', - }, - ], - }, - ], - }, - { - topic: '综合能力', - id: '0f703794664149ee6926c0b18423a219', - children: [ - { - topic: '知识管理', - id: '9ce178358ae5a94454723ac547b9237a', - children: [ - { - topic: 'Markdown', - id: 'f6ad905c127f0efecd2cf1892cd5fa57', - }, - { - topic: '脑图', - id: '2fc4fb72eaebe23e27ab1212e0bead26', - }, - { - topic: 'wiki', - id: '893d4cf7f49ee7e81e9e39b804277b27', - }, - { - topic: 'GitBook', - id: '43dd4578d4201ae1154cc8aa11bc2762', - }, - ], - }, - { - topic: '软件工程', - id: '56935896bf29a34f2f1cd9cca32493fb', - children: [ - { - topic: '过程模型', - id: '78f9a3cad498a4fedd4df213a724dc75', - }, - { - topic: '需求分析', - id: 'ab6fedc0cae7fc302b5580510eb01cee', - }, - { - topic: '功能拆解', - id: 'dc99b5db199760b90fb5aa6cc9719db5', - }, - { - topic: '概念设计', - id: 'd28e544a006c44f51cf6ccd386cb7ed4', - }, - { - topic: '体系结构设计', - id: '691fc73598cf0aa2577de1a6570b9109', - }, - { - topic: '项目管理', - id: '37e7405289a8db9200d849d71f8c7cfa', - }, - ], - }, - { - topic: '交互设计', - id: '6de8ad4326ed1cfdd93de62aed9a7566', - children: [ - { - topic: '交互原型', - id: '02e0790d3269fbf4db0a8889cbb9d400', - }, - { - topic: '视觉还原', - id: '899c98c045bb6308394e17db614d93a9', - }, - ], - }, - { - topic: '开源项目', - id: '6853b82065bf562d614e907465fbc774', - children: [ - { - topic: 'GitHub', - id: '38f8580f5a829dbf3ee4309536555201', - }, - { - topic: 'OpenJS', - id: '42c78c964ad07fa3e0419442fcedd572', - }, - { - topic: 'Apache', - id: 'a2b1bef6566c6730fa5c07b8b51553ff', - }, - ], - }, - ], - }, - ], - }, - { - topic: '高阶', - id: '6527c324e340362ad18e4104676f6199', - children: [ - { - topic: '跨端技术', - id: '3549da5e57adb71515c7c38327f8a7db', - children: [ - { - topic: '跨端解决方案', - id: '81dab7d787faf1351e584bf77ab24f00', - children: [ - { - topic: '跨平台', - id: 'e2abeed2788cfbc980a8864b93f66841', - children: [ - { - topic: 'Web', - id: 'a5b15aa73142d70481d76ae53d755feb', - }, - { - topic: 'Electron', - id: 'e9e4b52c3f602751935b127955a8a7ab', - }, - ], - }, - ], - }, - { - topic: '跨端API', - id: '24c470a6493ad8f518b3776cdb7bf7ce', - children: [ - { - topic: '桥接与通信', - id: '0e3290a8c2ac52d822392cbf64611686', - children: [ - { - topic: 'JSBridge', - id: 'cd40ae824180818229d9e82b392de19a', - }, - ], - }, - ], - }, - { - topic: '跨端组件', - id: '13596ca21b764ee0e8a5599c25d487f5', - children: [ - { - topic: '跨容器(H5/小程序)', - id: 'c03dfe8d5e863a44e7b41268caf16b77', - }, - { - topic: '跨平台(PC/移动)', - id: '83a29ee9001712927d64b64f84274443', - }, - { - topic: '视觉交互', - id: '6e0d506f9f54711bb93010c14c42f11a', - children: [ - { - topic: '自适应', - id: '7c5a93d376ef9a21629fa63a3a5b2a49', - }, - { - topic: '平台特性', - id: 'd24d1e3dc997faea79c0f1a6d9c6bccb', - }, - ], - }, - { - topic: '标准与规范', - id: 'c11d704799c96d5e59e9c3229f492ddd', - children: [ - { - topic: '脚手架', - id: '0f689aed294224b4f68ff74848720ab0', - }, - { - topic: '文件结构', - id: '54c6565ba12d98aa163eb238d7a89422', - }, - { - topic: '属性与API', - id: 'db78621bc0d94608faaa29a93e0cd220', - }, - { - topic: '发布于引用', - id: '2c201e010f8852ed4591fa6922365f36', - }, - ], - }, - ], - }, - { - topic: '跨端搭建', - id: '36690d347154cd0840879d1280d52628', - children: [ - { - topic: '一码多搭', - id: 'fc690f5154bfba078064192b00f3dcfc', - children: [ - { - topic: 'web', - id: 'ca789e447d0328fd3ac69b95272e496d', - }, - { - topic: '小程序', - id: '6b01e6b617f91afe33c8e33f8a39554c', - }, - { - topic: 'Native', - id: 'd93b9e06fee8d48643d462c5a338601c', - }, - ], - }, - { - topic: '统一发布', - id: '0d30c0f2656b5cec10aeafe6c2cf0601', - }, - ], - }, - ], - }, - { - topic: 'Node.js', - id: 'c2261c54738566922c813975db535159', - children: [ - { - topic: '分布式服务', - id: '2c2c878fd1e253e307e4162ba7b9616b', - children: [ - { - topic: 'rpc', - id: 'eccfe890dc85a9ad83e941606f0ef873', - children: [ - { - topic: 'grpc', - id: 'd8cdcbb0cfe15cbfb1f35a4bf13b66ae', - }, - ], - }, - ], - }, - { - topic: '常用API', - id: 'b1350d56ba4e76e0ca1936f7367d5660', - }, - ], - }, - { - topic: '多媒体', - id: '839ee6335a18164b309d3d5e7d93adae', - children: [ - { - topic: '音视频基础', - id: '4076b24b33ff293d8a0855ed5047a609', - children: [ - { - topic: '基础概念', - id: '8c9ad408d51007d63deaaf9c987ab36a', - }, - { - topic: '容器格式', - id: 'bb6bee0681624319c07aced9f7e00c82', - }, - { - topic: '编码格式', - id: '915f0871f5eb321622b15754ecddaaba', - }, - ], - }, - { - topic: '直播技术', - id: '10d82739b3b32cf0e425ede164967be5', - children: [ - { - topic: '推流', - id: '47cb6fb60a92923b7c77f1c9e98c89b9', - }, - { - topic: '流媒体协议', - id: '20cedcae59f41321d933c1dc545e71e6', - }, - { - topic: '流媒体服务', - id: '75991e70828d220b0420629f53cbcbd1', - }, - ], - }, - { - topic: '播放器技术', - id: '1a61194a3cb1fa3ce5e60d4ecaa22ca9', - children: [ - { - topic: '拉流', - id: 'ecfe1785fae0bcbcc71c62fa87605cb2', - }, - { - topic: '解码', - id: '1ca0119a12f15e7859e12f3cb5832b9a', - }, - { - topic: '渲染', - id: 'fc644eabfab13c4e6aaaf20d369b81e4', - }, - ], - }, - { - topic: 'web媒体技术', - id: '976838b00e93bccb24620cb6465a1f2f', - children: [ - { - topic: '流操作基础', - id: '522221bc1e20c1baf233a0430aad39da', - }, - { - topic: 'webRTC', - id: '89d488a88be4e55bcc2d398e25ea386d', - }, - ], - }, - { - topic: '开源产品和框架', - id: 'f4ddb04d444c13d2eae67a9877650954', - children: [ - { - topic: 'FFmpeg', - id: 'ab832d8f16548a33c90e35927fb1db62', - }, - { - topic: 'video.js', - id: '7c98ff619e7d92486d4a032a61e443b9', - }, - { - topic: 'OBS', - id: '752aca34a3c3e0b483dae0780e568ee4', - }, - ], - }, - ], - }, - { - topic: '互动技术', - id: '32b1123a7edc479f057186cca17b435d', - children: [ - { - topic: '基础知识', - id: '86e9651fc995018f78664a6b235029b1', - children: [ - { - topic: '图形学', - id: '7b4dfa79449abc1e72eadec495c3e7f1', - }, - { - topic: '数学', - id: '1de64d571ac18c822729f321fd813bd0', - }, - { - topic: '物理学', - id: 'c1d07d6b320e8d74ed18c6efe00b8832', - }, - ], - }, - { - topic: '技术标准', - id: '021a216bab28643c7ae3eb66fdedb3ce', - children: [ - { - topic: 'canvas', - id: '9ed359eecfce8d886dd0ddd49ef129ad', - }, - { - topic: 'svg', - id: '92c9518bc8baae37b8cb36a9e0908bcf', - }, - { - topic: 'css', - id: '21c116e1e4ec16df225de7fc1e133934', - }, - { - topic: 'webGL', - id: '5ccc3acc657a3151462a543528110d89', - }, - { - topic: 'webGPU', - id: '533ee82fe926eb8b370c5290be58c206', - }, - { - topic: 'webAssembly', - id: '7ddb090acb799793423641b7a1f54feb', - }, - ], - }, - ], - }, - { - topic: '智能化', - id: '02440f45cc67563592131daf8d74f0f9', - children: [ - { - topic: '低代码/无代码', - id: 'a27b2dec76370106ba5a5ddce1962118', - }, - ], - }, - ], - }, - ], - }, - { - topic: '通用能力', - id: '343e0f14c8ee44637cd86cde48d25e05', - children: [ - { - topic: '项目管理', - id: 'e5e9de48e2f902435bada49db9d24741', - children: [ - { - topic: '项目范围说明', - id: 'd372b41bcb8d4138a9a23c1d0b62628f', - children: [ - { - topic: '目标', - id: '430853ecd916c0b87568da04ab2af99a', - }, - { - topic: '主要范围', - id: '5cb19cfc83498f4280c1ba4101bf7cec', - }, - { - topic: '灵活性矩阵', - id: '19001933fb274382c9361c86b1c2354c', - }, - { - topic: '风险范围及应对', - id: 'f1d68ac1080bbb9735eb494914937525', - }, - { - topic: '核心成员', - id: 'd8e71b52e857aa891cf89db2f47af471', - }, - { - topic: '里程碑、交付物、时间节点', - id: '06f2484f01377b17b9b218163f9f7184', - }, - { - topic: '交付检查及复盘', - id: 'fc898637e0b84235ef2946684847694e', - }, - ], - }, - { - topic: '关键能力', - id: 'aa495048cd155b233f74f7ab3a1c2c56', - children: [ - { - topic: '在他人指导下进行计划跟踪和监控', - id: '520bacbda2c4f1e229ab0bcf3755a2bd', - }, - { - topic: '组织实施小型项目', - id: 'c63dd05343f3982b57688e1a6ef2c36c', - }, - { - topic: '独立负责中型项目的实施和运作,预见部分潜在问题', - id: 'ac2db536111b625871f508996b8ec74b', - }, - { - topic: '独立负责中大型项目,充分预见潜在问题', - id: '5aa50996e821a5897042a228d285a1fe', - }, - { - topic: '独立负责过多个中大项目的实施和运作,进行风险控制', - id: '80c8aa9b0f417efac7caa6113311550d', - }, - ], - }, - { - topic: '管理者', - id: '91262d97aa6873bae0baa6b730d90d5c', - children: [ - { - topic: '时间观', - id: '7471702dfa2da8656fd542674746f46b', - }, - { - topic: '人际能力', - id: '2129aab6ba98832fa6c2e9bd7ac46b44', - }, - { - topic: '灵活性', - id: 'd76b430dab23c397d1d95b5431273359', - }, - ], - }, - ], - }, - { - topic: '沟通协作能力', - id: 'bf11d24c53f642429e1dc6b61105f130', - children: [ - { - topic: '清晰表述,参与交流', - id: '61e03b790366d19805da16dac5f5a657', - }, - { - topic: '简练表达,达成共识,赢得合作、沟通反馈', - id: '320012f3c84a1fe4bc31d034a57a5456', - }, - { - topic: '换位思考,跨业务线沟通', - id: 'aa89fd4a320a02c8f816bcfca65d7f39', - }, - { - topic: '解决分歧,获取资源,跨越合作', - id: '2374ce1512bbcbe30519e9c37fc2d610', - }, - { - topic: '提升团队沟通能力,重大问题有效沟通', - id: '57334267eaa0d11b5d6c6c49444b467f', - }, - ], - }, - { - topic: '解决问题能力', - id: '293ebf83c2c57a09ff98a4dd3127c5f5', - children: [ - { - topic: '发现问题,避免重复犯同样错误', - id: '7a6181347559ac9bb354c705636a3ccb', - }, - { - topic: '发现核心问题,协助解决问题', - id: 'b50d03cf086e1a35d7bc3ac853d81ab7', - }, - { - topic: '独立解决问题,提供解决方案', - id: '4e0db9aa9caca411f3d1e338f1c3a33d', - }, - { - topic: '拆解复杂问题,理清因果逻辑', - id: 'dd6ce6a6d695075e89ce5c43cc54577f', - }, - { - topic: '多维度思考,规避潜在风险', - id: '91087753f66e557a32d2c3349997a2f9', - }, - ], - }, - { - topic: '学习与发展能力', - id: '61248e9229d37600ae2a4efabc723497', - children: [ - { - topic: '在他人指导下学习', - id: 'de50dab04874e5da2ed9e9157c15ab5a', - }, - { - topic: '主动寻找学习机会,注意学以致用', - id: '40f9f1b3c84c8624c6f11961e6a7614a', - }, - { - topic: '高效学习技巧,乐于分享辅导', - id: '4669d40e60a880c74833238f092907e2', - }, - { - topic: '了解前沿技术,沉淀知识体系', - id: '6307dfc630e00f2abd46e5095c764c9a', - }, - { - topic: '营造学习氛围,培养接班人', - id: '54db81bab8959d9634f37a37ab5a3eb3', - }, - ], - }, - { - topic: '业务导向', - id: '2c7d19a08a59693576d4d013b490a712', - children: [ - { - topic: '清楚岗位角色、了解业务流程', - id: 'fd53f7ae68fc287389820bc3a60c2f38', - }, - { - topic: '熟悉业务逻辑,识别核心关键', - id: '718c1f3d937e07f27b5869a48b181272', - }, - { - topic: '熟悉商业模式,推动业务发展', - id: '4a4c55c9897a6f00aaed11741d4a41e1', - }, - { - topic: '了解行业趋势,未来发展建议', - id: '71eecdc4bd46e4d7eb03550f2627d847', - }, - ], - }, - ], - }, - ], - }, -} - -export default frontEndSkill diff --git a/mind-elixir-core-master/src/exampleData/htmlText.ts b/mind-elixir-core-master/src/exampleData/htmlText.ts deleted file mode 100644 index 83994b4..0000000 --- a/mind-elixir-core-master/src/exampleData/htmlText.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const katexHTML = `
    ` - -export const codeBlock = `
    let message = 'Hello world'
    -alert(message)
    ` - -export const styledDiv = `
    Title
    Hello world
    ` diff --git a/mind-elixir-core-master/src/i18n.ts b/mind-elixir-core-master/src/i18n.ts deleted file mode 100644 index 02b1217..0000000 --- a/mind-elixir-core-master/src/i18n.ts +++ /dev/null @@ -1,165 +0,0 @@ -type LangPack = { - addChild: string - addParent: string - addSibling: string - removeNode: string - focus: string - cancelFocus: string - moveUp: string - moveDown: string - link: string - linkBidirectional: string - clickTips: string - summary: string -} - -/** - * @public - */ -export type Locale = 'cn' | 'zh_CN' | 'zh_TW' | 'en' | 'ru' | 'ja' | 'pt' | 'it' | 'es' | 'fr' | 'ko' -const cn = { - addChild: '插入子节点', - addParent: '插入父节点', - addSibling: '插入同级节点', - removeNode: '删除节点', - focus: '专注', - cancelFocus: '取消专注', - moveUp: '上移', - moveDown: '下移', - link: '连接', - linkBidirectional: '双向连接', - clickTips: '请点击目标节点', - summary: '摘要', -} -const i18n: Record = { - cn, - zh_CN: cn, - zh_TW: { - addChild: '插入子節點', - addParent: '插入父節點', - addSibling: '插入同級節點', - removeNode: '刪除節點', - focus: '專注', - cancelFocus: '取消專注', - moveUp: '上移', - moveDown: '下移', - link: '連接', - linkBidirectional: '雙向連接', - clickTips: '請點擊目標節點', - summary: '摘要', - }, - en: { - addChild: 'Add child', - addParent: 'Add parent', - addSibling: 'Add sibling', - removeNode: 'Remove node', - focus: 'Focus Mode', - cancelFocus: 'Cancel Focus Mode', - moveUp: 'Move up', - moveDown: 'Move down', - link: 'Link', - linkBidirectional: 'Bidirectional Link', - clickTips: 'Please click the target node', - summary: 'Summary', - }, - ru: { - addChild: 'Добавить дочерний элемент', - addParent: 'Добавить родительский элемент', - addSibling: 'Добавить на этом уровне', - removeNode: 'Удалить узел', - focus: 'Режим фокусировки', - cancelFocus: 'Отменить режим фокусировки', - moveUp: 'Поднять выше', - moveDown: 'Опустить ниже', - link: 'Ссылка', - linkBidirectional: 'Двунаправленная ссылка', - clickTips: 'Пожалуйста, нажмите на целевой узел', - summary: 'Описание', - }, - ja: { - addChild: '子ノードを追加する', - addParent: '親ノードを追加します', - addSibling: '兄弟ノードを追加する', - removeNode: 'ノードを削除', - focus: '集中', - cancelFocus: '集中解除', - moveUp: '上へ移動', - moveDown: '下へ移動', - link: 'コネクト', - linkBidirectional: '双方向リンク', - clickTips: 'ターゲットノードをクリックしてください', - summary: '概要', - }, - pt: { - addChild: 'Adicionar item filho', - addParent: 'Adicionar item pai', - addSibling: 'Adicionar item irmao', - removeNode: 'Remover item', - focus: 'Modo Foco', - cancelFocus: 'Cancelar Modo Foco', - moveUp: 'Mover para cima', - moveDown: 'Mover para baixo', - link: 'Link', - linkBidirectional: 'Link bidirecional', - clickTips: 'Favor clicar no item alvo', - summary: 'Resumo', - }, - it: { - addChild: 'Aggiungi figlio', - addParent: 'Aggiungi genitore', - addSibling: 'Aggiungi fratello', - removeNode: 'Rimuovi nodo', - focus: 'Modalità Focus', - cancelFocus: 'Annulla Modalità Focus', - moveUp: 'Sposta su', - moveDown: 'Sposta giù', - link: 'Collega', - linkBidirectional: 'Collegamento bidirezionale', - clickTips: 'Si prega di fare clic sul nodo di destinazione', - summary: 'Unisci nodi', - }, - es: { - addChild: 'Agregar hijo', - addParent: 'Agregar padre', - addSibling: 'Agregar hermano', - removeNode: 'Eliminar nodo', - focus: 'Modo Enfoque', - cancelFocus: 'Cancelar Modo Enfoque', - moveUp: 'Mover hacia arriba', - moveDown: 'Mover hacia abajo', - link: 'Enlace', - linkBidirectional: 'Enlace bidireccional', - clickTips: 'Por favor haga clic en el nodo de destino', - summary: 'Resumen', - }, - fr: { - addChild: 'Ajout enfant', - addParent: 'Ajout parent', - addSibling: 'Ajout voisin', - removeNode: 'Supprimer', - focus: 'Cibler', - cancelFocus: 'Retour', - moveUp: 'Monter', - moveDown: 'Descendre', - link: 'Lier', - linkBidirectional: 'Lien bidirectionnel', - clickTips: 'Cliquer sur le noeud cible', - summary: 'Annoter', - }, - ko: { - addChild: '자식 추가', - addParent: '부모 추가', - addSibling: '형제 추가', - removeNode: '노드 삭제', - focus: '포커스 모드', - cancelFocus: '포커스 모드 취소', - moveUp: '위로 이동', - moveDown: '아래로 이동', - link: '연결', - linkBidirectional: '양방향 연결', - clickTips: '대상 노드를 클릭하십시오', - summary: '요약', - }, -} - -export default i18n diff --git a/mind-elixir-core-master/src/icons/add-circle.svg b/mind-elixir-core-master/src/icons/add-circle.svg deleted file mode 100644 index 245d5d9..0000000 --- a/mind-elixir-core-master/src/icons/add-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/mind-elixir-core-master/src/icons/full.svg b/mind-elixir-core-master/src/icons/full.svg deleted file mode 100644 index dd44575..0000000 --- a/mind-elixir-core-master/src/icons/full.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/mind-elixir-core-master/src/icons/left.svg b/mind-elixir-core-master/src/icons/left.svg deleted file mode 100644 index 4938eb0..0000000 --- a/mind-elixir-core-master/src/icons/left.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/mind-elixir-core-master/src/icons/living.svg b/mind-elixir-core-master/src/icons/living.svg deleted file mode 100644 index 93e4632..0000000 --- a/mind-elixir-core-master/src/icons/living.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/mind-elixir-core-master/src/icons/minus-circle.svg b/mind-elixir-core-master/src/icons/minus-circle.svg deleted file mode 100644 index 2152dfa..0000000 --- a/mind-elixir-core-master/src/icons/minus-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/mind-elixir-core-master/src/icons/right.svg b/mind-elixir-core-master/src/icons/right.svg deleted file mode 100644 index 218f094..0000000 --- a/mind-elixir-core-master/src/icons/right.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/mind-elixir-core-master/src/icons/side.svg b/mind-elixir-core-master/src/icons/side.svg deleted file mode 100644 index 8c74372..0000000 --- a/mind-elixir-core-master/src/icons/side.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/mind-elixir-core-master/src/icons/zoomin.svg b/mind-elixir-core-master/src/icons/zoomin.svg deleted file mode 100644 index 754d294..0000000 --- a/mind-elixir-core-master/src/icons/zoomin.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/mind-elixir-core-master/src/icons/zoomout.svg b/mind-elixir-core-master/src/icons/zoomout.svg deleted file mode 100644 index 07f9e5e..0000000 --- a/mind-elixir-core-master/src/icons/zoomout.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/mind-elixir-core-master/src/index.less b/mind-elixir-core-master/src/index.less deleted file mode 100644 index 4243e26..0000000 --- a/mind-elixir-core-master/src/index.less +++ /dev/null @@ -1,374 +0,0 @@ -.map-container { - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, - WenQuanYi Micro Hei, sans-serif; - user-select: none; - height: 100%; - width: 100%; - overflow: hidden; // prevent browser scroll container while dragging - font-size: 15px; - outline: none; // prevent browser default focus outline - touch-action: none; // use pointer events instead of touch events - * { - box-sizing: border-box; // must have, to make getComputedStyle work right - } - &::-webkit-scrollbar { - width: 0px; - height: 0px; - } - .selected { - outline: 2px solid var(--selected); - outline-offset: 1px; - } - .hyper-link { - text-decoration: none; - margin-left: 0.3em; - } - me-main > me-wrapper > me-parent > me-epd { - top: 50%; - transform: translateY(-50%); - } - me-epd { - top: 100%; - transform: translateY(-50%); - } - .lhs { - direction: rtl; - & > me-wrapper > me-parent > me-epd { - left: -10px; - } - me-epd { - left: 5px; - } - me-tpc { - direction: ltr; - } - } - .rhs { - & > me-wrapper > me-parent > me-epd { - right: -10px; - } - me-epd { - right: 5px; - } - } - background-color: var(--bgcolor); - .map-canvas { - position: relative; - user-select: none; - width: fit-content; // 100% width if not set - transform: scale(1); - me-nodes { - position: relative; - display: flex; - justify-content: center; - align-items: center; - height: max-content; - width: max-content; - padding: var(--map-padding); - } - } - me-main { - // primary node / main node - & > me-wrapper { - position: relative; // make subline svg's offsetParent be the main node - margin: var(--main-gap-y) var(--main-gap-x); - & > me-parent { - margin: 10px; - padding: 0; - & > me-tpc { - border-radius: var(--main-radius); - background-color: var(--main-bgcolor); - border: 2px solid var(--main-color); - color: var(--main-color); - padding: 8px 25px; - } - } - } - } - me-wrapper { - display: block; - pointer-events: none; - width: fit-content; - // position: relative; - } - me-children, - me-parent { - display: inline-block; - vertical-align: middle; - } - me-root { - position: relative; - margin: 45px 0; - z-index: 10; - me-tpc { - font-size: 25px; - color: var(--root-color); - padding: 10px 30px; - border-radius: var(--root-radius); - border: var(--root-border-color) 2px solid; - background-color: var(--root-bgcolor); - } - } - me-parent { - position: relative; // for locating expand button - cursor: pointer; - padding: 6px var(--node-gap-x); - margin-top: var(--node-gap-y); - z-index: 10; - me-tpc { - position: relative; - border-radius: 3px; - color: var(--color); - padding: var(--topic-padding); - - // drag preview - .insert-preview { - position: absolute; - width: 100%; - left: 0px; - z-index: 9; - } - .show { - background: #7ad5ff; - pointer-events: none; - opacity: 0.7; - border-radius: 3px; - } - .before { - height: 14px; - top: -14px; - } - .in { - height: 100%; - top: 0px; - } - .after { - height: 14px; - bottom: -14px; - } - } - me-epd { - position: absolute; - height: 18px; - width: 18px; - opacity: 0.8; - background-image: url('./icons/add-circle.svg'); - background-repeat: no-repeat; - background-size: contain; - background-position: center; - - pointer-events: all; - z-index: 9; - &.minus { - background-image: url('./icons/minus-circle.svg') !important; - transition: opacity 0.3s; - opacity: 0; - @media (hover: hover) { - &:hover { - opacity: 0.8; - } - } - @media (hover: none) { - & { - opacity: 0.8; - } - } - } - } - } - - // iconfont - .icon { - width: 1em; - height: 1em; - vertical-align: -0.15em; - fill: currentColor; - overflow: hidden; - } - .lines, - .summary, - .subLines, - .topiclinks, - .linkcontroller { - position: absolute; - height: 102%; - width: 100%; - top: 0; - left: 0; - } - .topiclinks, - .linkcontroller, - .summary { - pointer-events: none; - z-index: 20; - } - - .summary > g, - .topiclinks > g { - cursor: pointer; - pointer-events: stroke; - z-index: 20; - } - - .lines, - .subLines { - pointer-events: none; - } - - #input-box { - position: absolute; - top: 0; - left: 0; - width: max-content; // let words expand the div and keep max length at the same time - max-width: 35em; - direction: ltr; - user-select: auto; - pointer-events: auto; - color: var(--color); - background-color: var(--bgcolor); - z-index: 100; - } - - me-tpc { - display: block; - max-width: 35em; - white-space: pre-wrap; - pointer-events: all; - & > * { - // tags,icons,images should not response to click event - pointer-events: none; - } - & > a, - & > iframe { - pointer-events: auto; - } - & > .text { - display: inline-block; - // Allow links inside markdown text to be clickable - a { - pointer-events: auto; - } - } - & > img { - display: block; - margin-bottom: 8px; - object-fit: cover; - } - } - .circle { - position: absolute; - height: 10px; - width: 10px; - margin-top: -5px; - margin-left: -5px; - border-radius: 100%; - background: #757575; - border: 2px solid #ffffff; - z-index: 50; - - cursor: pointer; - } - - .tags { - direction: ltr; - span { - display: inline-block; - border-radius: 3px; - padding: 2px 4px; - background: #d6f0f8; - color: #276f86; - margin: 0px; - font-size: 12px; - line-height: 1.3em; - margin-right: 4px; - margin-top: 2px; - } - } - .icons { - display: inline-block; - direction: ltr; - margin-left: 5px; - span { - display: inline-block; - line-height: 1.3em; - } - } - - .mind-elixir-ghost { - position: fixed; - top: -100%; - left: -100%; - box-sizing: content-box; - opacity: 0.5; - background-color: var(--main-bgcolor); - border: 2px solid var(--main-color); - color: var(--main-color); - max-width: 200px; - width: fit-content; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - padding: 8px 16px; - border-radius: 6px; - } - - .selection-area { - background: #4f90f22d; - border: 1px solid #4f90f2; - } - - /* Markdown表格样式 */ - .markdown-table { - border-collapse: collapse; - width: 100%; - margin: 4px 0; - font-size: 11px; - border: 1px solid #e0e0e0; - border-radius: 6px; - box-shadow: 0 2px 8px rgba(0,0,0,0.08); - background-color: #fafafa; - overflow: hidden; - white-space: normal !important; /* 覆盖MindElixir的pre-wrap */ - } - - .markdown-table th, - .markdown-table td { - border: 1px solid #e0e0e0; - padding: 8px 12px; - text-align: left; - vertical-align: top; - position: relative; - white-space: normal !important; /* 覆盖MindElixir的pre-wrap */ - } - - .markdown-table th { - background-color: #f5f5f5; - font-weight: 600; - color: #333; - text-align: center; - border-bottom: 1px solid #d0d0d0; - } - - .markdown-table td { - background-color: #fff; - } - - .markdown-table tr:nth-child(even) td { - background-color: #f8f8f8; - } - - .markdown-table tr:hover td { - background-color: #f0f8ff; - } - - /* 移除多余的边框,保持简洁 */ - .markdown-table th:not(:last-child), - .markdown-table td:not(:last-child) { - border-right: 1px solid #e0e0e0; - } - - .markdown-table tr:not(:last-child) td { - border-bottom: 1px solid #e0e0e0; - } -} diff --git a/mind-elixir-core-master/src/index.ts b/mind-elixir-core-master/src/index.ts deleted file mode 100644 index 99c8b79..0000000 --- a/mind-elixir-core-master/src/index.ts +++ /dev/null @@ -1,198 +0,0 @@ -import './index.less' -import { LEFT, RIGHT, SIDE, DARK_THEME, THEME } from './const' -import { generateUUID } from './utils/index' -import initMouseEvent from './mouse' -import { createBus } from './utils/pubsub' -import { findEle } from './utils/dom' -import { createLinkSvg, createLine } from './utils/svg' -import type { MindElixirData, MindElixirInstance, MindElixirMethods, Options } from './types/index' -import methods from './methods' -import { sub, main } from './utils/generateBranch' -import { version } from '../package.json' -import { createDragMoveHelper } from './utils/dragMoveHelper' -import type { Topic } from './docs' - -// TODO show up animation -const $d = document - -function MindElixir( - this: MindElixirInstance, - { - el, - direction, - locale, - draggable, - editable, - contextMenu, - toolBar, - keypress, - mouseSelectionButton, - selectionContainer, - before, - newTopicName, - allowUndo, - generateMainBranch, - generateSubBranch, - overflowHidden, - theme, - alignment, - scaleSensitivity, - scaleMax, - scaleMin, - handleWheel, - markdown, - imageProxy, - }: Options -): void { - let ele: HTMLElement | null = null - const elType = Object.prototype.toString.call(el) - if (elType === '[object HTMLDivElement]') { - ele = el as HTMLElement - } else if (elType === '[object String]') { - ele = document.querySelector(el as string) as HTMLElement - } - if (!ele) throw new Error('MindElixir: el is not a valid element') - - ele.style.position = 'relative' - ele.innerHTML = '' - this.el = ele as HTMLElement - this.disposable = [] - this.before = before || {} - this.locale = locale || 'en' - this.newTopicName = newTopicName || 'New Node' - this.contextMenu = contextMenu ?? true - this.toolBar = toolBar ?? true - this.keypress = keypress ?? true - this.mouseSelectionButton = mouseSelectionButton ?? 0 - this.direction = direction ?? 1 - this.draggable = draggable ?? true - this.editable = editable ?? true - this.allowUndo = allowUndo ?? true - this.scaleSensitivity = scaleSensitivity ?? 0.1 - this.scaleMax = scaleMax ?? 1.4 - this.scaleMin = scaleMin ?? 0.2 - this.generateMainBranch = generateMainBranch || main - this.generateSubBranch = generateSubBranch || sub - this.overflowHidden = overflowHidden ?? false - this.alignment = alignment ?? 'root' - this.handleWheel = handleWheel ?? true - this.markdown = markdown || undefined // Custom markdown parser function - this.imageProxy = imageProxy || undefined // Image proxy function - // this.parentMap = {} // deal with large amount of nodes - this.currentNodes = [] // selected elements - this.currentArrow = null // the selected link svg element - this.scaleVal = 1 - this.tempDirection = null - - this.dragMoveHelper = createDragMoveHelper(this) - this.bus = createBus() - - this.container = $d.createElement('div') // map container - this.selectionContainer = selectionContainer || this.container - - this.container.className = 'map-container' - - const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)') - this.theme = theme || (mediaQuery.matches ? DARK_THEME : THEME) - - // infrastructure - const canvas = $d.createElement('div') // map-canvas Element - canvas.className = 'map-canvas' - this.map = canvas - this.container.setAttribute('tabindex', '0') - this.container.appendChild(this.map) - this.el.appendChild(this.container) - - this.nodes = $d.createElement('me-nodes') - - this.lines = createLinkSvg('lines') // main link container - this.summarySvg = createLinkSvg('summary') // summary container - - this.linkController = createLinkSvg('linkcontroller') // bezier controller container - this.P2 = $d.createElement('div') // bezier P2 - this.P3 = $d.createElement('div') // bezier P3 - this.P2.className = this.P3.className = 'circle' - this.P2.style.display = this.P3.style.display = 'none' - this.line1 = createLine() // bezier auxiliary line1 - this.line2 = createLine() // bezier auxiliary line2 - this.linkController.appendChild(this.line1) - this.linkController.appendChild(this.line2) - this.linkSvgGroup = createLinkSvg('topiclinks') // storage user custom link svg - - this.map.appendChild(this.nodes) - - if (this.overflowHidden) { - this.container.style.overflow = 'hidden' - } else { - this.disposable.push(initMouseEvent(this)) - } -} - -MindElixir.prototype = methods - -Object.defineProperty(MindElixir.prototype, 'currentNode', { - get() { - return this.currentNodes[this.currentNodes.length - 1] - }, - enumerable: true, -}) - -MindElixir.LEFT = LEFT -MindElixir.RIGHT = RIGHT -MindElixir.SIDE = SIDE - -MindElixir.THEME = THEME -MindElixir.DARK_THEME = DARK_THEME - -/** - * @memberof MindElixir - * @static - */ -MindElixir.version = version -/** - * @function - * @memberof MindElixir - * @static - * @name E - * @param {string} id Node id. - * @return {TargetElement} Target element. - * @example - * E('bd4313fbac40284b') - */ -MindElixir.E = findEle - -/** - * @function new - * @memberof MindElixir - * @static - * @param {String} topic root topic - */ -if (import.meta.env.MODE !== 'lite') { - MindElixir.new = (topic: string): MindElixirData => ({ - nodeData: { - id: generateUUID(), - topic: topic || 'new topic', - children: [], - }, - }) -} - -export interface MindElixirCtor { - new (options: Options): MindElixirInstance - E: (id: string, el?: HTMLElement) => Topic - new: typeof MindElixir.new - version: string - LEFT: typeof LEFT - RIGHT: typeof RIGHT - SIDE: typeof SIDE - THEME: typeof THEME - DARK_THEME: typeof DARK_THEME - prototype: MindElixirMethods -} - -export default MindElixir as unknown as MindElixirCtor - -// types -export type * from './utils/pubsub' -export type * from './types/index' -export type * from './types/dom' diff --git a/mind-elixir-core-master/src/interact.ts b/mind-elixir-core-master/src/interact.ts deleted file mode 100644 index 5f99836..0000000 --- a/mind-elixir-core-master/src/interact.ts +++ /dev/null @@ -1,407 +0,0 @@ -import type { Locale } from './i18n' -import { rmSubline } from './nodeOperation' -import type { Topic, Wrapper } from './types/dom' -import type { MindElixirData, MindElixirInstance, NodeObj } from './types/index' -import { fillParent, getTranslate, setExpand } from './utils/index' - -function collectData(instance: MindElixirInstance) { - return { - nodeData: instance.isFocusMode ? instance.nodeDataBackup : instance.nodeData, - arrows: instance.arrows, - summaries: instance.summaries, - direction: instance.direction, - theme: instance.theme, - } -} - -export const scrollIntoView = function (this: MindElixirInstance, el: HTMLElement) { - // scrollIntoView needs to be implemented manually because native scrollIntoView behaves incorrectly after transform - const container = this.container - const rect = el.getBoundingClientRect() - const containerRect = container.getBoundingClientRect() - const isOutOfView = - rect.top > containerRect.bottom || rect.bottom < containerRect.top || rect.left > containerRect.right || rect.right < containerRect.left - if (isOutOfView) { - // Calculate the offset between container center and element center - const elCenterX = rect.left + rect.width / 2 - const elCenterY = rect.top + rect.height / 2 - const containerCenterX = containerRect.left + containerRect.width / 2 - const containerCenterY = containerRect.top + containerRect.height / 2 - const offsetX = elCenterX - containerCenterX - const offsetY = elCenterY - containerCenterY - this.move(-offsetX, -offsetY, true) - } -} - -export const selectNode = function (this: MindElixirInstance, tpc: Topic, isNewNode?: boolean, e?: MouseEvent): void { - // selectNode clears all selected nodes by default - this.clearSelection() - this.scrollIntoView(tpc) - this.selection.select(tpc) - if (isNewNode) { - this.bus.fire('selectNewNode', tpc.nodeObj) - } -} - -export const selectNodes = function (this: MindElixirInstance, tpc: Topic[]): void { - // update currentNodes in selection.ts to keep sync with SelectionArea cache - this.selection.select(tpc) -} - -export const unselectNodes = function (this: MindElixirInstance, tpc: Topic[]) { - this.selection.deselect(tpc) -} - -export const clearSelection = function (this: MindElixirInstance) { - this.unselectNodes(this.currentNodes) - this.unselectSummary() - this.unselectArrow() -} - -/** - * @function - * @instance - * @name getDataString - * @description Get all node data as string. - * @memberof MapInteraction - * @return {string} - */ -export const getDataString = function (this: MindElixirInstance) { - const data = collectData(this) - return JSON.stringify(data, (k, v) => { - if (k === 'parent' && typeof v !== 'string') return undefined - return v - }) -} -/** - * @function - * @instance - * @name getData - * @description Get all node data as object. - * @memberof MapInteraction - * @return {Object} - */ -export const getData = function (this: MindElixirInstance) { - return JSON.parse(this.getDataString()) as MindElixirData -} - -/** - * @function - * @instance - * @name enableEdit - * @memberof MapInteraction - */ -export const enableEdit = function (this: MindElixirInstance) { - this.editable = true -} - -/** - * @function - * @instance - * @name disableEdit - * @memberof MapInteraction - */ -export const disableEdit = function (this: MindElixirInstance) { - this.editable = false -} - -/** - * @function - * @instance - * @name scale - * @description Change the scale of the mind map. - * @memberof MapInteraction - * @param {number} - */ -export const scale = function (this: MindElixirInstance, scaleVal: number, offset: { x: number; y: number } = { x: 0, y: 0 }) { - if (scaleVal < this.scaleMin || scaleVal > this.scaleMax) return - const rect = this.container.getBoundingClientRect() - // refer to /refs/scale-calc.excalidraw for the process - // remove coordinate system influence and calculate quantities directly - // cursor xy - const xc = offset.x ? offset.x - rect.left - rect.width / 2 : 0 - const yc = offset.y ? offset.y - rect.top - rect.height / 2 : 0 - - const { dx, dy } = getCenterDefault(this) - const oldTransform = this.map.style.transform - const { x: xCurrent, y: yCurrent } = getTranslate(oldTransform) // current offset - // before xy - const xb = xCurrent - dx - const yb = yCurrent - dy - - const oldScale = this.scaleVal - // Note: cursor needs to be reversed, probably because transform itself is reversed - const xres = (-xc + xb) * (1 - scaleVal / oldScale) - const yres = (-yc + yb) * (1 - scaleVal / oldScale) - - this.map.style.transform = `translate(${xCurrent - xres}px, ${yCurrent - yres}px) scale(${scaleVal})` - this.scaleVal = scaleVal - this.bus.fire('scale', scaleVal) -} - -/** - * Better to use with option `alignment: 'nodes'`. - */ -export const scaleFit = function (this: MindElixirInstance) { - const heightPercent = this.nodes.offsetHeight / this.container.offsetHeight - const widthPercent = this.nodes.offsetWidth / this.container.offsetWidth - const scale = 1 / Math.max(1, Math.max(heightPercent, widthPercent)) - this.scaleVal = scale - this.map.style.transform = 'scale(' + scale + ')' - this.bus.fire('scale', scale) -} - -/** - * Move the map by `dx` and `dy`. - */ -export const move = function (this: MindElixirInstance, dx: number, dy: number, smooth = false) { - const { map, scaleVal, bus } = this - const transform = map.style.transform - let { x, y } = getTranslate(transform) - x += dx - y += dy - - if (smooth) { - map.style.transition = 'transform 0.3s' - setTimeout(() => { - map.style.transition = 'none' - }, 300) - } - map.style.transform = `translate(${x}px, ${y}px) scale(${scaleVal})` - - bus.fire('move', { dx, dy }) -} - -/** - * 获取默认居中的偏移 - */ -const getCenterDefault = (mei: MindElixirInstance) => { - const { container, map, nodes } = mei - - const root = map.querySelector('me-root') as HTMLElement - const pT = root.offsetTop - const pL = root.offsetLeft - const pW = root.offsetWidth - const pH = root.offsetHeight - - let dx, dy - if (mei.alignment === 'root') { - dx = container.offsetWidth / 2 - pL - pW / 2 - dy = container.offsetHeight / 2 - pT - pH / 2 - map.style.transformOrigin = `${pL + pW / 2}px 50%` - } else { - dx = (container.offsetWidth - nodes.offsetWidth) / 2 - dy = (container.offsetHeight - nodes.offsetHeight) / 2 - map.style.transformOrigin = `50% 50%` - } - return { dx, dy } -} - -/** - * @function - * @instance - * @name toCenter - * @description Reset position of the map to center. - * @memberof MapInteraction - */ -export const toCenter = function (this: MindElixirInstance) { - const { map } = this - const { dx, dy } = getCenterDefault(this) - map.style.transform = `translate(${dx}px, ${dy}px) scale(${this.scaleVal})` -} - -/** - * @function - * @instance - * @name install - * @description Install plugin. - * @memberof MapInteraction - */ -export const install = function (this: MindElixirInstance, plugin: (instance: MindElixirInstance) => void) { - plugin(this) -} - -/** - * @function - * @instance - * @name focusNode - * @description Enter focus mode, set the target element as root. - * @memberof MapInteraction - * @param {TargetElement} el - Target element return by E('...'), default value: currentTarget. - */ -export const focusNode = function (this: MindElixirInstance, el: Topic) { - if (!el.nodeObj.parent) return - this.clearSelection() - if (this.tempDirection === null) { - this.tempDirection = this.direction - } - if (!this.isFocusMode) { - this.nodeDataBackup = this.nodeData // help reset focus mode - this.isFocusMode = true - } - this.nodeData = el.nodeObj - this.initRight() - this.toCenter() -} -/** - * @function - * @instance - * @name cancelFocus - * @description Exit focus mode. - * @memberof MapInteraction - */ -export const cancelFocus = function (this: MindElixirInstance) { - this.isFocusMode = false - if (this.tempDirection !== null) { - this.nodeData = this.nodeDataBackup - this.direction = this.tempDirection - this.tempDirection = null - this.refresh() - this.toCenter() - } -} -/** - * @function - * @instance - * @name initLeft - * @description Child nodes will distribute on the left side of the root node. - * @memberof MapInteraction - */ -export const initLeft = function (this: MindElixirInstance) { - this.direction = 0 - this.refresh() - this.toCenter() -} -/** - * @function - * @instance - * @name initRight - * @description Child nodes will distribute on the right side of the root node. - * @memberof MapInteraction - */ -export const initRight = function (this: MindElixirInstance) { - this.direction = 1 - this.refresh() - this.toCenter() -} -/** - * @function - * @instance - * @name initSide - * @description Child nodes will distribute on both left and right side of the root node. - * @memberof MapInteraction - */ -export const initSide = function (this: MindElixirInstance) { - this.direction = 2 - this.refresh() - this.toCenter() -} - -/** - * @function - * @instance - * @name setLocale - * @memberof MapInteraction - */ -export const setLocale = function (this: MindElixirInstance, locale: Locale) { - this.locale = locale - this.refresh() -} - -export const expandNode = function (this: MindElixirInstance, el: Topic, isExpand?: boolean) { - const node = el.nodeObj - if (typeof isExpand === 'boolean') { - node.expanded = isExpand - } else if (node.expanded !== false) { - node.expanded = false - } else { - node.expanded = true - } - - // Calculate position before expansion - const expanderRect = el.getBoundingClientRect() - const beforePosition = { - x: expanderRect.left, - y: expanderRect.top, - } - - const parent = el.parentNode - const expander = parent.children[1]! - expander.expanded = node.expanded - expander.className = node.expanded ? 'minus' : '' - - rmSubline(el) - if (node.expanded) { - const children = this.createChildren( - node.children!.map(child => { - const wrapper = this.createWrapper(child) - return wrapper.grp - }) - ) - parent.parentNode.appendChild(children) - } else { - const children = parent.parentNode.children[1] - children.remove() - } - - this.linkDiv(el.closest('me-main > me-wrapper') as Wrapper) - - // Calculate position after expansion and compensate for drift - const afterRect = el.getBoundingClientRect() - const afterPosition = { - x: afterRect.left, - y: afterRect.top, - } - - // Calculate the drift and move to compensate - const driftX = beforePosition.x - afterPosition.x - const driftY = beforePosition.y - afterPosition.y - - this.move(driftX, driftY) - - this.bus.fire('expandNode', node) -} - -export const expandNodeAll = function (this: MindElixirInstance, el: Topic, isExpand?: boolean) { - const node = el.nodeObj - const beforeRect = el.getBoundingClientRect() - const beforePosition = { - x: beforeRect.left, - y: beforeRect.top, - } - setExpand(node, isExpand ?? !node.expanded) - this.refresh() - const afterRect = this.findEle(node.id).getBoundingClientRect() - const afterPosition = { - x: afterRect.left, - y: afterRect.top, - } - const driftX = beforePosition.x - afterPosition.x - const driftY = beforePosition.y - afterPosition.y - - this.move(driftX, driftY) -} - -/** - * @function - * @instance - * @name refresh - * @description Refresh mind map, you can use it after modified `this.nodeData` - * @memberof MapInteraction - * @param {TargetElement} data mind elixir data - */ -export const refresh = function (this: MindElixirInstance, data?: MindElixirData) { - this.clearSelection() - if (data) { - data = JSON.parse(JSON.stringify(data)) as MindElixirData // it shouldn't contanimate the original data - this.nodeData = data.nodeData - this.arrows = data.arrows || [] - this.summaries = data.summaries || [] - data.theme && this.changeTheme(data.theme) - } - fillParent(this.nodeData) - // create dom element for every node - this.layout() - // generate links between nodes - this.linkDiv() -} diff --git a/mind-elixir-core-master/src/linkDiv.ts b/mind-elixir-core-master/src/linkDiv.ts deleted file mode 100644 index 85388da..0000000 --- a/mind-elixir-core-master/src/linkDiv.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { createPath, createLinkSvg } from './utils/svg' -import { getOffsetLT } from './utils/index' -import type { Wrapper, Topic } from './types/dom' -import type { DirectionClass, MindElixirInstance } from './types/index' - -/** - * Link nodes with svg, - * only link specific node if `mainNode` is present - * - * procedure: - * 1. generate main link - * 2. generate links inside main node, if `mainNode` is presented, only generate the link of the specific main node - * 3. generate custom link - * 4. generate summary - * @param mainNode regenerate sublink of the specific main node - */ -const linkDiv = function (this: MindElixirInstance, mainNode?: Wrapper) { - console.time('linkDiv') - - const root = this.map.querySelector('me-root') as HTMLElement - const pT = root.offsetTop - const pL = root.offsetLeft - const pW = root.offsetWidth - const pH = root.offsetHeight - - const mainNodeList = this.map.querySelectorAll('me-main > me-wrapper') - this.lines.innerHTML = '' - - for (let i = 0; i < mainNodeList.length; i++) { - const el = mainNodeList[i] as Wrapper - const tpc = el.querySelector('me-tpc') as Topic - const { offsetLeft: cL, offsetTop: cT } = getOffsetLT(this.nodes, tpc) - const cW = tpc.offsetWidth - const cH = tpc.offsetHeight - const direction = el.parentNode.className as DirectionClass - - const mainPath = this.generateMainBranch({ pT, pL, pW, pH, cT, cL, cW, cH, direction, containerHeight: this.nodes.offsetHeight }) - const palette = this.theme.palette - const branchColor = tpc.nodeObj.branchColor || palette[i % palette.length] - tpc.style.borderColor = branchColor - this.lines.appendChild(createPath(mainPath, branchColor, '3')) - - // generate link inside main node - if (mainNode && mainNode !== el) { - continue - } - - const svg = createLinkSvg('subLines') - // svg tag name is lower case - const svgLine = el.lastChild as SVGSVGElement - if (svgLine.tagName === 'svg') svgLine.remove() - el.appendChild(svg) - - traverseChildren(this, svg, branchColor, el, direction, true) - } - - this.renderArrow() - this.renderSummary() - console.timeEnd('linkDiv') - this.bus.fire('linkDiv') -} - -// core function of generate subLines - -const traverseChildren = function ( - mei: MindElixirInstance, - svgContainer: SVGSVGElement, - branchColor: string, - wrapper: Wrapper, - direction: DirectionClass, - isFirst?: boolean -) { - const parent = wrapper.firstChild - const children = wrapper.children[1].children - if (children.length === 0) return - - const pT = parent.offsetTop - const pL = parent.offsetLeft - const pW = parent.offsetWidth - const pH = parent.offsetHeight - for (let i = 0; i < children.length; i++) { - const child = children[i] - const childP = child.firstChild - const cT = childP.offsetTop - const cL = childP.offsetLeft - const cW = childP.offsetWidth - const cH = childP.offsetHeight - - const bc = childP.firstChild.nodeObj.branchColor || branchColor - const path = mei.generateSubBranch({ pT, pL, pW, pH, cT, cL, cW, cH, direction, isFirst }) - svgContainer.appendChild(createPath(path, bc, '2')) - - const expander = childP.children[1] - - if (expander) { - // this property is added in the layout phase - if (!expander.expanded) continue - } else { - // expander not exist - continue - } - - traverseChildren(mei, svgContainer, bc, child, direction) - } -} - -export default linkDiv diff --git a/mind-elixir-core-master/src/methods.ts b/mind-elixir-core-master/src/methods.ts deleted file mode 100644 index 10d713c..0000000 --- a/mind-elixir-core-master/src/methods.ts +++ /dev/null @@ -1,131 +0,0 @@ -import type { MindElixirInstance, MindElixirData } from './index' -import linkDiv from './linkDiv' -import contextMenu from './plugin/contextMenu' -import keypressInit from './plugin/keypress' -import nodeDraggable from './plugin/nodeDraggable' -import operationHistory from './plugin/operationHistory' -import toolBar from './plugin/toolBar' -import selection from './plugin/selection' -import { editTopic, createWrapper, createParent, createChildren, createTopic, findEle } from './utils/dom' -import { getObjById, generateNewObj, fillParent } from './utils/index' -import { layout } from './utils/layout' -import { changeTheme } from './utils/theme' -import * as interact from './interact' -import * as nodeOperation from './nodeOperation' -import * as arrow from './arrow' -import * as summary from './summary' -import * as exportImage from './plugin/exportImage' - -export type OperationMap = typeof nodeOperation -export type Operations = keyof OperationMap -type NodeOperation = { - [K in Operations]: ReturnType> -} - -function beforeHook( - fn: OperationMap[T], - fnName: T -): (this: MindElixirInstance, ...args: Parameters) => Promise { - return async function (this: MindElixirInstance, ...args: Parameters) { - const hook = this.before[fnName] - if (hook) { - const res = await hook.apply(this, args) - if (!res) return - } - ;(fn as any).apply(this, args) - } -} - -const operations = Object.keys(nodeOperation) as Array -const nodeOperationHooked = {} as NodeOperation -if (import.meta.env.MODE !== 'lite') { - for (let i = 0; i < operations.length; i++) { - const operation = operations[i] - nodeOperationHooked[operation] = beforeHook(nodeOperation[operation], operation) - } -} - -export type MindElixirMethods = typeof methods - -/** - * Methods that mind-elixir instance can use - * - * @public - */ -const methods = { - getObjById, - generateNewObj, - layout, - linkDiv, - editTopic, - createWrapper, - createParent, - createChildren, - createTopic, - findEle, - changeTheme, - ...interact, - ...(nodeOperationHooked as NodeOperation), - ...arrow, - ...summary, - ...exportImage, - init(this: MindElixirInstance, data: MindElixirData) { - data = JSON.parse(JSON.stringify(data)) - if (!data || !data.nodeData) return new Error('MindElixir: `data` is required') - if (data.direction !== undefined) { - this.direction = data.direction - } - this.changeTheme(data.theme || this.theme, false) - this.nodeData = data.nodeData - fillParent(this.nodeData) - this.arrows = data.arrows || [] - this.summaries = data.summaries || [] - this.tidyArrow() - // plugins - this.toolBar && toolBar(this) - if (import.meta.env.MODE !== 'lite') { - this.keypress && keypressInit(this, this.keypress) - - if (this.editable) { - selection(this) - } - if (this.contextMenu) { - this.disposable.push(contextMenu(this, this.contextMenu)) - } - this.draggable && this.disposable.push(nodeDraggable(this)) - this.allowUndo && this.disposable.push(operationHistory(this)) - } - this.layout() - this.linkDiv() - this.toCenter() - }, - destroy(this: Partial) { - this.disposable!.forEach(fn => fn()) - if (this.el) this.el.innerHTML = '' - this.el = undefined - this.nodeData = undefined - this.arrows = undefined - this.summaries = undefined - this.currentArrow = undefined - this.currentNodes = undefined - this.currentSummary = undefined - this.waitCopy = undefined - this.theme = undefined - this.direction = undefined - this.bus = undefined - this.container = undefined - this.map = undefined - this.lines = undefined - this.linkController = undefined - this.linkSvgGroup = undefined - this.P2 = undefined - this.P3 = undefined - this.line1 = undefined - this.line2 = undefined - this.nodes = undefined - this.selection?.destroy() - this.selection = undefined - }, -} - -export default methods diff --git a/mind-elixir-core-master/src/mouse.ts b/mind-elixir-core-master/src/mouse.ts deleted file mode 100644 index 9bba19f..0000000 --- a/mind-elixir-core-master/src/mouse.ts +++ /dev/null @@ -1,161 +0,0 @@ -import { handleZoom } from './plugin/keypress' -import type { SummarySvgGroup } from './summary' -import type { Expander, CustomSvg, Topic } from './types/dom' -import type { MindElixirInstance } from './types/index' -import { isTopic, on } from './utils' - -export default function (mind: MindElixirInstance) { - const { dragMoveHelper } = mind - - const handleClick = (e: MouseEvent) => { - console.log('handleClick', e) - // Only handle primary button clicks - if (e.button !== 0) return - if (mind.helper1?.moved) { - mind.helper1.clear() - return - } - if (mind.helper2?.moved) { - mind.helper2.clear() - return - } - if (dragMoveHelper.moved) { - dragMoveHelper.clear() - return - } - const target = e.target as HTMLElement - if (target.tagName === 'ME-EPD') { - if (e.ctrlKey || e.metaKey) { - mind.expandNodeAll((target as Expander).previousSibling) - } else { - mind.expandNode((target as Expander).previousSibling) - } - } else if (target.tagName === 'ME-TPC' && mind.currentNodes.length > 1) { - // This is a bit complex, intertwined with selection and nodeDraggable - // The main conflict is between multi-node dragging and selecting a single node when multiple nodes are already selected - mind.selectNode(target as Topic) - } else if (!mind.editable) { - return - } - const trySvg = target.parentElement?.parentElement as unknown as SVGElement - if (trySvg.getAttribute('class') === 'topiclinks') { - mind.selectArrow(target.parentElement as unknown as CustomSvg) - } else if (trySvg.getAttribute('class') === 'summary') { - mind.selectSummary(target.parentElement as unknown as SummarySvgGroup) - } - } - - const handleDblClick = (e: MouseEvent) => { - if (!mind.editable) return - const target = e.target as HTMLElement - if (isTopic(target)) { - mind.beginEdit(target) - } - const trySvg = target.parentElement?.parentElement as unknown as SVGElement - if (trySvg.getAttribute('class') === 'topiclinks') { - mind.editArrowLabel(target.parentElement as unknown as CustomSvg) - } else if (trySvg.getAttribute('class') === 'summary') { - mind.editSummary(target.parentElement as unknown as SummarySvgGroup) - } - } - - let lastTap = 0 - const handleTouchDblClick = (e: PointerEvent) => { - if (e.pointerType === 'mouse') return - const currentTime = new Date().getTime() - const tapLength = currentTime - lastTap - console.log('tapLength', tapLength) - if (tapLength < 300 && tapLength > 0) { - handleDblClick(e) - } - - lastTap = currentTime - } - - const handlePointerDown = (e: PointerEvent) => { - dragMoveHelper.moved = false - const mouseMoveButton = mind.mouseSelectionButton === 0 ? 2 : 0 - if (e.button !== mouseMoveButton && e.pointerType === 'mouse') return - - // Store initial position for movement calculation - dragMoveHelper.x = e.clientX - dragMoveHelper.y = e.clientY - - const target = e.target as HTMLElement - if (target.className === 'circle') return - if (target.contentEditable !== 'plaintext-only') { - dragMoveHelper.mousedown = true - // Capture pointer to ensure we receive all pointer events even if pointer moves outside the element - target.setPointerCapture(e.pointerId) - } - } - - const handlePointerMove = (e: PointerEvent) => { - // click trigger pointermove in windows chrome - if ((e.target as HTMLElement).contentEditable !== 'plaintext-only') { - // drag and move the map - // Calculate movement delta manually since pointer events don't have movementX/Y - const movementX = e.clientX - dragMoveHelper.x - const movementY = e.clientY - dragMoveHelper.y - - dragMoveHelper.onMove(movementX, movementY) - } - - dragMoveHelper.x = e.clientX - dragMoveHelper.y = e.clientY - } - - const handlePointerUp = (e: PointerEvent) => { - const mouseMoveButton = mind.mouseSelectionButton === 0 ? 2 : 0 - if (e.button !== mouseMoveButton && e.pointerType === 'mouse') return - const target = e.target as HTMLElement - // Release pointer capture - if (target.hasPointerCapture && target.hasPointerCapture(e.pointerId)) { - target.releasePointerCapture(e.pointerId) - } - dragMoveHelper.clear() - } - - const handleContextMenu = (e: MouseEvent) => { - console.log('handleContextMenu', e) - e.preventDefault() - // Only handle right-click for context menu - if (e.button !== 2) return - if (!mind.editable) return - const target = e.target as HTMLElement - if (isTopic(target) && !target.classList.contains('selected')) { - mind.selectNode(target) - } - setTimeout(() => { - // delay to avoid conflict with click event on Mac - if (mind.dragMoveHelper.moved) return - mind.bus.fire('showContextMenu', e) - }, 200) - } - - const handleWheel = (e: WheelEvent) => { - e.stopPropagation() - e.preventDefault() - if (e.ctrlKey || e.metaKey) { - if (e.deltaY < 0) handleZoom(mind, 'in', mind.dragMoveHelper) - else if (mind.scaleVal - mind.scaleSensitivity > 0) handleZoom(mind, 'out', mind.dragMoveHelper) - } else if (e.shiftKey) { - mind.move(-e.deltaY, 0) - } else { - mind.move(-e.deltaX, -e.deltaY) - } - } - - const { container } = mind - const off = on([ - { dom: container, evt: 'pointerdown', func: handlePointerDown }, - { dom: container, evt: 'pointermove', func: handlePointerMove }, - { dom: container, evt: 'pointerup', func: handlePointerUp }, - { dom: container, evt: 'pointerup', func: handleTouchDblClick }, - { dom: container, evt: 'click', func: handleClick }, - { dom: container, evt: 'dblclick', func: handleDblClick }, - { dom: container, evt: 'contextmenu', func: handleContextMenu }, - { dom: container, evt: 'wheel', func: typeof mind.handleWheel === 'function' ? mind.handleWheel : handleWheel }, - ]) - return off -} diff --git a/mind-elixir-core-master/src/nodeOperation.ts b/mind-elixir-core-master/src/nodeOperation.ts deleted file mode 100644 index 7ba44fa..0000000 --- a/mind-elixir-core-master/src/nodeOperation.ts +++ /dev/null @@ -1,314 +0,0 @@ -import { fillParent, refreshIds, unionTopics } from './utils/index' -import { createExpander, shapeTpc } from './utils/dom' -import { deepClone } from './utils/index' -import type { Children, Topic } from './types/dom' -import { DirectionClass, type MindElixirInstance, type NodeObj } from './types/index' -import { insertNodeObj, insertParentNodeObj, moveUpObj, moveDownObj, removeNodeObj, moveNodeObj } from './utils/objectManipulation' -import { addChildDom, removeNodeDom } from './utils/domManipulation' -import { LEFT, RIGHT } from './const' - -const typeMap: Record = { - before: 'beforebegin', - after: 'afterend', -} - -export const rmSubline = function (tpc: Topic) { - const mainNode = tpc.parentElement.parentElement - const lc = mainNode.lastElementChild - if (lc?.tagName === 'svg') lc?.remove() // clear svg group of main node -} - -export const reshapeNode = function (this: MindElixirInstance, tpc: Topic, patchData: Partial) { - const nodeObj = tpc.nodeObj - const origin = deepClone(nodeObj) - // merge styles - if (origin.style && patchData.style) { - patchData.style = Object.assign(origin.style, patchData.style) - } - const newObj = Object.assign(nodeObj, patchData) - shapeTpc.call(this, tpc, newObj) - this.linkDiv() - this.bus.fire('operation', { - name: 'reshapeNode', - obj: newObj, - origin, - }) -} - -const addChildFunc = function (mei: MindElixirInstance, tpc: Topic, node?: NodeObj) { - if (!tpc) return null - const nodeObj = tpc.nodeObj - if (nodeObj.expanded === false) { - mei.expandNode(tpc, true) - // dom had resetted - tpc = mei.findEle(nodeObj.id) as Topic - } - const newNodeObj = node || mei.generateNewObj() - if (nodeObj.children) nodeObj.children.push(newNodeObj) - else nodeObj.children = [newNodeObj] - fillParent(mei.nodeData) - - const { grp, top: newTop } = mei.createWrapper(newNodeObj) - addChildDom(mei, tpc, grp) - return { newTop, newNodeObj } -} - -export const insertSibling = function (this: MindElixirInstance, type: 'before' | 'after', el?: Topic, node?: NodeObj) { - const nodeEle = el || this.currentNode - if (!nodeEle) return - const nodeObj = nodeEle.nodeObj - if (!nodeObj.parent) { - this.addChild() - return - } else if (!nodeObj.parent?.parent && nodeObj.parent?.children?.length === 1 && this.direction === 2) { - // add at least one node to another side - this.addChild(this.findEle(nodeObj.parent!.id), node) - return - } - const newNodeObj = node || this.generateNewObj() - if (!nodeObj.parent?.parent) { - const direction = nodeEle.closest('me-main')!.className === DirectionClass.LHS ? LEFT : RIGHT - newNodeObj.direction = direction - } - insertNodeObj(newNodeObj, type, nodeObj) - fillParent(this.nodeData) - const t = nodeEle.parentElement - console.time('insertSibling_DOM') - - const { grp, top } = this.createWrapper(newNodeObj) - - t.parentElement.insertAdjacentElement(typeMap[type], grp) - - this.linkDiv(grp.offsetParent) - - if (!node) { - this.editTopic(top.firstChild) - } - console.timeEnd('insertSibling_DOM') - this.bus.fire('operation', { - name: 'insertSibling', - type, - obj: newNodeObj, - }) - this.selectNode(top.firstChild, true) -} - -export const insertParent = function (this: MindElixirInstance, el?: Topic, node?: NodeObj) { - const nodeEle = el || this.currentNode - if (!nodeEle) return - rmSubline(nodeEle) - const nodeObj = nodeEle.nodeObj - if (!nodeObj.parent) { - return - } - const newNodeObj = node || this.generateNewObj() - insertParentNodeObj(nodeObj, newNodeObj) - fillParent(this.nodeData) - - const grp0 = nodeEle.parentElement.parentElement - console.time('insertParent_DOM') - const { grp, top } = this.createWrapper(newNodeObj, true) - top.appendChild(createExpander(true)) - grp0.insertAdjacentElement('afterend', grp) - - const c = this.createChildren([grp0]) - top.insertAdjacentElement('afterend', c) - - this.linkDiv() - - if (!node) { - this.editTopic(top.firstChild) - } - this.selectNode(top.firstChild, true) - console.timeEnd('insertParent_DOM') - this.bus.fire('operation', { - name: 'insertParent', - obj: newNodeObj, - }) -} - -export const addChild = function (this: MindElixirInstance, el?: Topic, node?: NodeObj) { - console.time('addChild') - const nodeEle = el || this.currentNode - if (!nodeEle) return - const res = addChildFunc(this, nodeEle, node) - if (!res) return - const { newTop, newNodeObj } = res - // 添加节点关注添加节点前选择的节点,所以先触发事件再选择节点 - this.bus.fire('operation', { - name: 'addChild', - obj: newNodeObj, - }) - console.timeEnd('addChild') - if (!node) { - this.editTopic(newTop.firstChild) - } - this.selectNode(newTop.firstChild, true) -} - -export const copyNode = function (this: MindElixirInstance, node: Topic, to: Topic) { - console.time('copyNode') - const deepCloneObj = deepClone(node.nodeObj) - refreshIds(deepCloneObj) - const res = addChildFunc(this, to, deepCloneObj) - if (!res) return - const { newNodeObj } = res - console.timeEnd('copyNode') - this.selectNode(this.findEle(newNodeObj.id)) - this.bus.fire('operation', { - name: 'copyNode', - obj: newNodeObj, - }) -} - -export const copyNodes = function (this: MindElixirInstance, tpcs: Topic[], to: Topic) { - tpcs = unionTopics(tpcs) - const objs = [] - for (let i = 0; i < tpcs.length; i++) { - const node = tpcs[i] - const deepCloneObj = deepClone(node.nodeObj) - refreshIds(deepCloneObj) - const res = addChildFunc(this, to, deepCloneObj) - if (!res) return - const { newNodeObj } = res - objs.push(newNodeObj) - } - this.unselectNodes(this.currentNodes) - this.selectNodes(objs.map(obj => this.findEle(obj.id))) - this.bus.fire('operation', { - name: 'copyNodes', - objs, - }) -} - -export const moveUpNode = function (this: MindElixirInstance, el?: Topic) { - const nodeEle = el || this.currentNode - if (!nodeEle) return - const obj = nodeEle.nodeObj - moveUpObj(obj) - const grp = nodeEle.parentNode.parentNode - grp.parentNode.insertBefore(grp, grp.previousSibling) - this.linkDiv() - this.bus.fire('operation', { - name: 'moveUpNode', - obj, - }) -} - -export const moveDownNode = function (this: MindElixirInstance, el?: Topic) { - const nodeEle = el || this.currentNode - if (!nodeEle) return - const obj = nodeEle.nodeObj - moveDownObj(obj) - const grp = nodeEle.parentNode.parentNode - if (grp.nextSibling) { - grp.nextSibling.insertAdjacentElement('afterend', grp) - } else { - grp.parentNode.prepend(grp) - } - this.linkDiv() - this.bus.fire('operation', { - name: 'moveDownNode', - obj, - }) -} - -export const removeNodes = function (this: MindElixirInstance, tpcs: Topic[]) { - if (tpcs.length === 0) return - tpcs = unionTopics(tpcs) - for (const tpc of tpcs) { - const nodeObj = tpc.nodeObj - const siblingLength = removeNodeObj(nodeObj) - removeNodeDom(tpc, siblingLength) - } - const last = tpcs[tpcs.length - 1] - this.selectNode(this.findEle(last.nodeObj.parent!.id)) - this.linkDiv() - // 删除关注的是删除后选择的节点,所以先选择节点再触发 removeNodes 事件可以在事件中通过 currentNodes 获取之后选择的节点 - this.bus.fire('operation', { - name: 'removeNodes', - objs: tpcs.map(tpc => tpc.nodeObj), - }) -} - -export const moveNodeIn = function (this: MindElixirInstance, from: Topic[], to: Topic) { - from = unionTopics(from) - const toObj = to.nodeObj - if (toObj.expanded === false) { - // TODO - this.expandNode(to, true) - to = this.findEle(toObj.id) as Topic - } - console.time('moveNodeIn') - for (const f of from) { - const obj = f.nodeObj - moveNodeObj('in', obj, toObj) - fillParent(this.nodeData) // update parent property - const fromTop = f.parentElement - addChildDom(this, to, fromTop.parentElement) - } - this.linkDiv() - this.bus.fire('operation', { - name: 'moveNodeIn', - objs: from.map(f => f.nodeObj), - toObj, - }) - console.timeEnd('moveNodeIn') -} - -const moveNode = (from: Topic[], type: 'before' | 'after', to: Topic, mei: MindElixirInstance) => { - from = unionTopics(from) - if (type === 'after') { - from = from.reverse() - } - const toObj = to.nodeObj - const c: Children[] = [] - for (const f of from) { - const obj = f.nodeObj - moveNodeObj(type, obj, toObj) - fillParent(mei.nodeData) - rmSubline(f) - const fromWrp = f.parentElement.parentNode - if (!c.includes(fromWrp.parentElement)) { - c.push(fromWrp.parentElement) - } - const toWrp = to.parentElement.parentNode - toWrp.insertAdjacentElement(typeMap[type], fromWrp) - } - // When nodes are moved away, the original parent node may become childless - // In this case, we need to clean up the related DOM structure: - // remove expander buttons and empty wrapper containers - for (const item of c) { - if (item.childElementCount === 0 && item.tagName !== 'ME-MAIN') { - item.previousSibling.children[1]!.remove() - item.remove() - } - } - mei.linkDiv() - mei.bus.fire('operation', { - name: type === 'before' ? 'moveNodeBefore' : 'moveNodeAfter', - objs: from.map(f => f.nodeObj), - toObj, - }) -} - -export const moveNodeBefore = function (this: MindElixirInstance, from: Topic[], to: Topic) { - moveNode(from, 'before', to, this) -} - -export const moveNodeAfter = function (this: MindElixirInstance, from: Topic[], to: Topic) { - moveNode(from, 'after', to, this) -} - -export const beginEdit = function (this: MindElixirInstance, el?: Topic) { - const nodeEle = el || this.currentNode - if (!nodeEle) return - if (nodeEle.nodeObj.dangerouslySetInnerHTML) return - this.editTopic(nodeEle) -} - -export const setNodeTopic = function (this: MindElixirInstance, el: Topic, topic: string) { - el.text.textContent = topic - el.nodeObj.topic = topic - this.linkDiv() -} diff --git a/mind-elixir-core-master/src/plugin/contextMenu.less b/mind-elixir-core-master/src/plugin/contextMenu.less deleted file mode 100644 index d4377b8..0000000 --- a/mind-elixir-core-master/src/plugin/contextMenu.less +++ /dev/null @@ -1,66 +0,0 @@ -.map-container .context-menu { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 99; - .menu-list { - position: fixed; - list-style: none; - margin: 0; - padding: 0; - color: var(--panel-color); - box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.2); - border-radius: 5px; - overflow: hidden; - li { - min-width: 200px; - overflow: hidden; - white-space: nowrap; - padding: 6px 10px; - background: var(--panel-bgcolor); - border-bottom: 1px solid var(--panel-border-color); - cursor: pointer; - span { - line-height: 20px; - } - a { - color: #333; - text-decoration: none; - } - &.disabled { - display: none; - } - &:hover { - filter: brightness(0.95); - } - &:last-child { - border-bottom: 0; - } - span:last-child { - float: right; - } - } - } - .key { - font-size: 10px; - background-color: #f1f1f1; - color: #333; - padding: 2px 5px; - border-radius: 3px; - } -} - -.map-container .tips { - position: absolute; - bottom: 28px; - left: 50%; - transform: translateX(-50%); - color: var(--panel-color); - background: var(--panel-bgcolor); - opacity: 0.8; - padding: 5px 10px; - border-radius: 5px; - font-weight: bold; -} diff --git a/mind-elixir-core-master/src/plugin/contextMenu.ts b/mind-elixir-core-master/src/plugin/contextMenu.ts deleted file mode 100644 index 99e324a..0000000 --- a/mind-elixir-core-master/src/plugin/contextMenu.ts +++ /dev/null @@ -1,229 +0,0 @@ -import i18n from '../i18n' -import type { Topic } from '../types/dom' -import type { MindElixirInstance } from '../types/index' -import { encodeHTML, isTopic } from '../utils/index' -import './contextMenu.less' -import type { ArrowOptions } from '../arrow' - -export type ContextMenuOption = { - focus?: boolean - link?: boolean - extend?: { - name: string - key?: string - onclick: (e: MouseEvent) => void - }[] -} - -export default function (mind: MindElixirInstance, option: true | ContextMenuOption) { - option = - option === true - ? { - focus: true, - link: true, - } - : option - const createTips = (words: string) => { - const div = document.createElement('div') - div.innerText = words - div.className = 'tips' - return div - } - const createLi = (id: string, name: string, keyname: string) => { - const li = document.createElement('li') - li.id = id - li.innerHTML = `${encodeHTML(name)}${encodeHTML(keyname)}` - return li - } - const locale = i18n[mind.locale] ? mind.locale : 'en' - const lang = i18n[locale] - const add_child = createLi('cm-add_child', lang.addChild, 'Tab') - const add_parent = createLi('cm-add_parent', lang.addParent, 'Ctrl + Enter') - const add_sibling = createLi('cm-add_sibling', lang.addSibling, 'Enter') - const remove_child = createLi('cm-remove_child', lang.removeNode, 'Delete') - const focus = createLi('cm-fucus', lang.focus, '') - const unfocus = createLi('cm-unfucus', lang.cancelFocus, '') - const up = createLi('cm-up', lang.moveUp, 'PgUp') - const down = createLi('cm-down', lang.moveDown, 'Pgdn') - const link = createLi('cm-link', lang.link, '') - const linkBidirectional = createLi('cm-link-bidirectional', lang.linkBidirectional, '') - const summary = createLi('cm-summary', lang.summary, '') - - const menuUl = document.createElement('ul') - menuUl.className = 'menu-list' - menuUl.appendChild(add_child) - menuUl.appendChild(add_parent) - menuUl.appendChild(add_sibling) - menuUl.appendChild(remove_child) - if (option.focus) { - menuUl.appendChild(focus) - menuUl.appendChild(unfocus) - } - menuUl.appendChild(up) - menuUl.appendChild(down) - menuUl.appendChild(summary) - if (option.link) { - menuUl.appendChild(link) - menuUl.appendChild(linkBidirectional) - } - if (option && option.extend) { - for (let i = 0; i < option.extend.length; i++) { - const item = option.extend[i] - const dom = createLi(item.name, item.name, item.key || '') - menuUl.appendChild(dom) - dom.onclick = e => { - item.onclick(e) - } - } - } - const menuContainer = document.createElement('div') - menuContainer.className = 'context-menu' - menuContainer.appendChild(menuUl) - menuContainer.hidden = true - - mind.container.append(menuContainer) - let isRoot = true - // Helper function to actually render and position context menu. - const showMenu = (e: MouseEvent) => { - console.log('showContextMenu', e) - const target = e.target as HTMLElement - if (isTopic(target)) { - if (target.parentElement!.tagName === 'ME-ROOT') { - isRoot = true - } else { - isRoot = false - } - if (isRoot) { - focus.className = 'disabled' - up.className = 'disabled' - down.className = 'disabled' - add_parent.className = 'disabled' - add_sibling.className = 'disabled' - remove_child.className = 'disabled' - } else { - focus.className = '' - up.className = '' - down.className = '' - add_parent.className = '' - add_sibling.className = '' - remove_child.className = '' - } - menuContainer.hidden = false - - menuUl.style.top = '' - menuUl.style.bottom = '' - menuUl.style.left = '' - menuUl.style.right = '' - const rect = menuUl.getBoundingClientRect() - const height = menuUl.offsetHeight - const width = menuUl.offsetWidth - - const relativeY = e.clientY - rect.top - const relativeX = e.clientX - rect.left - - if (height + relativeY > window.innerHeight) { - menuUl.style.top = '' - menuUl.style.bottom = '0px' - } else { - menuUl.style.bottom = '' - menuUl.style.top = relativeY + 15 + 'px' - } - - if (width + relativeX > window.innerWidth) { - menuUl.style.left = '' - menuUl.style.right = '0px' - } else { - menuUl.style.right = '' - menuUl.style.left = relativeX + 10 + 'px' - } - } - } - - mind.bus.addListener('showContextMenu', showMenu) - - menuContainer.onclick = e => { - if (e.target === menuContainer) menuContainer.hidden = true - } - - add_child.onclick = () => { - mind.addChild() - menuContainer.hidden = true - } - add_parent.onclick = () => { - mind.insertParent() - menuContainer.hidden = true - } - add_sibling.onclick = () => { - if (isRoot) return - mind.insertSibling('after') - menuContainer.hidden = true - } - remove_child.onclick = () => { - if (isRoot) return - mind.removeNodes(mind.currentNodes || []) - menuContainer.hidden = true - } - focus.onclick = () => { - if (isRoot) return - mind.focusNode(mind.currentNode as Topic) - menuContainer.hidden = true - } - unfocus.onclick = () => { - mind.cancelFocus() - menuContainer.hidden = true - } - up.onclick = () => { - if (isRoot) return - mind.moveUpNode() - menuContainer.hidden = true - } - down.onclick = () => { - if (isRoot) return - mind.moveDownNode() - menuContainer.hidden = true - } - const linkFunc = (options?: ArrowOptions) => { - menuContainer.hidden = true - const from = mind.currentNode as Topic - const tips = createTips(lang.clickTips) - mind.container.appendChild(tips) - mind.map.addEventListener( - 'click', - e => { - e.preventDefault() - tips.remove() - const target = e.target as Topic - if (target.parentElement.tagName === 'ME-PARENT' || target.parentElement.tagName === 'ME-ROOT') { - mind.createArrow(from, target, options) - } else { - console.log('link cancel') - } - }, - { - once: true, - } - ) - } - link.onclick = () => linkFunc() - linkBidirectional.onclick = () => linkFunc({ bidirectional: true }) - summary.onclick = () => { - menuContainer.hidden = true - mind.createSummary() - mind.unselectNodes(mind.currentNodes) - } - return () => { - // maybe useful? - add_child.onclick = null - add_parent.onclick = null - add_sibling.onclick = null - remove_child.onclick = null - focus.onclick = null - unfocus.onclick = null - up.onclick = null - down.onclick = null - link.onclick = null - summary.onclick = null - menuContainer.onclick = null - mind.container.oncontextmenu = null - } -} diff --git a/mind-elixir-core-master/src/plugin/exportImage.ts b/mind-elixir-core-master/src/plugin/exportImage.ts deleted file mode 100644 index 7a41465..0000000 --- a/mind-elixir-core-master/src/plugin/exportImage.ts +++ /dev/null @@ -1,263 +0,0 @@ -import type { Topic } from '../types/dom' -import type { MindElixirInstance } from '../types' -import { setAttributes } from '../utils' -import { getOffsetLT, isTopic } from '../utils' - -const ns = 'http://www.w3.org/2000/svg' -function createSvgDom(height: string, width: string) { - const svg = document.createElementNS(ns, 'svg') - setAttributes(svg, { - version: '1.1', - xmlns: ns, - height, - width, - }) - return svg -} - -function lineHightToPadding(lineHeight: string, fontSize: string) { - return (parseInt(lineHeight) - parseInt(fontSize)) / 2 -} - -function generateSvgText(tpc: HTMLElement, tpcStyle: CSSStyleDeclaration, x: number, y: number) { - const g = document.createElementNS(ns, 'g') - let content = '' - if ((tpc as Topic).text) { - content = (tpc as Topic).text.textContent! - } else { - content = tpc.childNodes[0].textContent! - } - const lines = content!.split('\n') - lines.forEach((line, index) => { - const text = document.createElementNS(ns, 'text') - setAttributes(text, { - x: x + parseInt(tpcStyle.paddingLeft) + '', - y: - y + - parseInt(tpcStyle.paddingTop) + - lineHightToPadding(tpcStyle.lineHeight, tpcStyle.fontSize) * (index + 1) + - parseFloat(tpcStyle.fontSize) * (index + 1) + - '', - 'text-anchor': 'start', - 'font-family': tpcStyle.fontFamily, - 'font-size': `${tpcStyle.fontSize}`, - 'font-weight': `${tpcStyle.fontWeight}`, - fill: `${tpcStyle.color}`, - }) - text.innerHTML = line - g.appendChild(text) - }) - return g -} - -function generateSvgTextUsingForeignObject(tpc: HTMLElement, tpcStyle: CSSStyleDeclaration, x: number, y: number) { - let content = '' - if ((tpc as Topic).nodeObj?.dangerouslySetInnerHTML) { - content = (tpc as Topic).nodeObj.dangerouslySetInnerHTML! - } else if ((tpc as Topic).text) { - content = (tpc as Topic).text.textContent! - } else { - content = tpc.childNodes[0].textContent! - } - const foreignObject = document.createElementNS(ns, 'foreignObject') - setAttributes(foreignObject, { - x: x + parseInt(tpcStyle.paddingLeft) + '', - y: y + parseInt(tpcStyle.paddingTop) + '', - width: tpcStyle.width, - height: tpcStyle.height, - }) - const div = document.createElement('div') - setAttributes(div, { - xmlns: 'http://www.w3.org/1999/xhtml', - style: `font-family: ${tpcStyle.fontFamily}; font-size: ${tpcStyle.fontSize}; font-weight: ${tpcStyle.fontWeight}; color: ${tpcStyle.color}; white-space: pre-wrap;`, - }) - div.innerHTML = content - foreignObject.appendChild(div) - return foreignObject -} - -function createElBox(mei: MindElixirInstance, tpc: Topic) { - const tpcStyle = getComputedStyle(tpc) - const { offsetLeft: x, offsetTop: y } = getOffsetLT(mei.nodes, tpc) - - const bg = document.createElementNS(ns, 'rect') - setAttributes(bg, { - x: x + '', - y: y + '', - rx: tpcStyle.borderRadius, - ry: tpcStyle.borderRadius, - width: tpcStyle.width, - height: tpcStyle.height, - fill: tpcStyle.backgroundColor, - stroke: tpcStyle.borderColor, - 'stroke-width': tpcStyle.borderWidth, - }) - return bg -} -function convertDivToSvg(mei: MindElixirInstance, tpc: HTMLElement, useForeignObject = false) { - const tpcStyle = getComputedStyle(tpc) - const { offsetLeft: x, offsetTop: y } = getOffsetLT(mei.nodes, tpc) - - const bg = document.createElementNS(ns, 'rect') - setAttributes(bg, { - x: x + '', - y: y + '', - rx: tpcStyle.borderRadius, - ry: tpcStyle.borderRadius, - width: tpcStyle.width, - height: tpcStyle.height, - fill: tpcStyle.backgroundColor, - stroke: tpcStyle.borderColor, - 'stroke-width': tpcStyle.borderWidth, - }) - const g = document.createElementNS(ns, 'g') - g.appendChild(bg) - let text: SVGGElement | null - if (useForeignObject) { - text = generateSvgTextUsingForeignObject(tpc, tpcStyle, x, y) - } else text = generateSvgText(tpc, tpcStyle, x, y) - g.appendChild(text) - return g -} - -function convertAToSvg(mei: MindElixirInstance, a: HTMLAnchorElement) { - const aStyle = getComputedStyle(a) - const { offsetLeft: x, offsetTop: y } = getOffsetLT(mei.nodes, a) - const svgA = document.createElementNS(ns, 'a') - const text = document.createElementNS(ns, 'text') - setAttributes(text, { - x: x + '', - y: y + parseInt(aStyle.fontSize) + '', - 'text-anchor': 'start', - 'font-family': aStyle.fontFamily, - 'font-size': `${aStyle.fontSize}`, - 'font-weight': `${aStyle.fontWeight}`, - fill: `${aStyle.color}`, - }) - text.innerHTML = a.textContent! - svgA.appendChild(text) - svgA.setAttribute('href', a.href) - return svgA -} - -function convertImgToSvg(mei: MindElixirInstance, a: HTMLImageElement) { - const aStyle = getComputedStyle(a) - const { offsetLeft: x, offsetTop: y } = getOffsetLT(mei.nodes, a) - const svgI = document.createElementNS(ns, 'image') - setAttributes(svgI, { - x: x + '', - y: y + '', - width: aStyle.width + '', - height: aStyle.height + '', - href: a.src, - }) - return svgI -} - -const padding = 100 - -const head = `` - -const generateSvg = (mei: MindElixirInstance, noForeignObject = false) => { - const mapDiv = mei.nodes - const height = mapDiv.offsetHeight + padding * 2 - const width = mapDiv.offsetWidth + padding * 2 - const svg = createSvgDom(height + 'px', width + 'px') - const g = document.createElementNS(ns, 'svg') - const bgColor = document.createElementNS(ns, 'rect') - setAttributes(bgColor, { - x: '0', - y: '0', - width: `${width}`, - height: `${height}`, - fill: mei.theme.cssVar['--bgcolor'] as string, - }) - svg.appendChild(bgColor) - mapDiv.querySelectorAll('.subLines').forEach(item => { - const clone = item.cloneNode(true) as SVGSVGElement - const { offsetLeft, offsetTop } = getOffsetLT(mapDiv, item.parentElement as HTMLElement) - clone.setAttribute('x', `${offsetLeft}`) - clone.setAttribute('y', `${offsetTop}`) - g.appendChild(clone) - }) - - const mainLine = mapDiv.querySelector('.lines')?.cloneNode(true) - mainLine && g.appendChild(mainLine) - const topiclinks = mapDiv.querySelector('.topiclinks')?.cloneNode(true) - topiclinks && g.appendChild(topiclinks) - const summaries = mapDiv.querySelector('.summary')?.cloneNode(true) - summaries && g.appendChild(summaries) - - mapDiv.querySelectorAll('me-tpc').forEach(tpc => { - if (tpc.nodeObj.dangerouslySetInnerHTML) { - g.appendChild(convertDivToSvg(mei, tpc, noForeignObject ? false : true)) - } else { - g.appendChild(createElBox(mei, tpc)) - g.appendChild(convertDivToSvg(mei, tpc.text, noForeignObject ? false : true)) - } - }) - mapDiv.querySelectorAll('.tags > span').forEach(tag => { - g.appendChild(convertDivToSvg(mei, tag as HTMLElement)) - }) - mapDiv.querySelectorAll('.icons > span').forEach(icon => { - g.appendChild(convertDivToSvg(mei, icon as HTMLElement)) - }) - mapDiv.querySelectorAll('.hyper-link').forEach(hl => { - g.appendChild(convertAToSvg(mei, hl as HTMLAnchorElement)) - }) - mapDiv.querySelectorAll('img').forEach(img => { - g.appendChild(convertImgToSvg(mei, img)) - }) - setAttributes(g, { - x: padding + '', - y: padding + '', - overflow: 'visible', - }) - svg.appendChild(g) - return svg -} - -const generateSvgStr = (svgEl: SVGSVGElement, injectCss?: string) => { - if (injectCss) svgEl.insertAdjacentHTML('afterbegin', '') - return head + svgEl.outerHTML -} - -function blobToUrl(blob: Blob): Promise { - return new Promise((resolve, reject) => { - const reader = new FileReader() - reader.onload = evt => { - resolve(evt.target!.result as string) - } - reader.onerror = err => { - reject(err) - } - reader.readAsDataURL(blob) - }) -} - -export const exportSvg = function (this: MindElixirInstance, noForeignObject = false, injectCss?: string) { - const svgEl = generateSvg(this, noForeignObject) - const svgString = generateSvgStr(svgEl, injectCss) - const blob = new Blob([svgString], { type: 'image/svg+xml' }) - return blob -} - -export const exportPng = async function (this: MindElixirInstance, noForeignObject = false, injectCss?: string): Promise { - const blob = this.exportSvg(noForeignObject, injectCss) - // use base64 to bypass canvas taint - const url = await blobToUrl(blob) - return new Promise((resolve, reject) => { - const img = new Image() - img.setAttribute('crossOrigin', 'anonymous') - img.onload = () => { - const canvas = document.createElement('canvas') - canvas.width = img.width - canvas.height = img.height - const ctx = canvas.getContext('2d')! - ctx.drawImage(img, 0, 0) - canvas.toBlob(resolve, 'image/png', 1) - } - img.src = url - img.onerror = reject - }) -} diff --git a/mind-elixir-core-master/src/plugin/keypress.ts b/mind-elixir-core-master/src/plugin/keypress.ts deleted file mode 100644 index 512b949..0000000 --- a/mind-elixir-core-master/src/plugin/keypress.ts +++ /dev/null @@ -1,242 +0,0 @@ -import type { Topic } from '../types/dom' -import type { KeypressOptions, MindElixirInstance } from '../types/index' -import { DirectionClass } from '../types/index' -import { setExpand } from '../utils' - -const selectRootLeft = (mei: MindElixirInstance) => { - const tpcs = mei.map.querySelectorAll('.lhs>me-wrapper>me-parent>me-tpc') - mei.selectNode(tpcs[Math.ceil(tpcs.length / 2) - 1] as Topic) -} -const selectRootRight = (mei: MindElixirInstance) => { - const tpcs = mei.map.querySelectorAll('.rhs>me-wrapper>me-parent>me-tpc') - mei.selectNode(tpcs[Math.ceil(tpcs.length / 2) - 1] as Topic) -} -const selectRoot = (mei: MindElixirInstance) => { - mei.selectNode(mei.map.querySelector('me-root>me-tpc') as Topic) -} -const selectParent = function (mei: MindElixirInstance, currentNode: Topic) { - const parent = currentNode.parentElement.parentElement.parentElement.previousSibling - if (parent) { - const target = parent.firstChild - mei.selectNode(target) - } -} -const selectFirstChild = function (mei: MindElixirInstance, currentNode: Topic) { - const children = currentNode.parentElement.nextSibling - if (children && children.firstChild) { - const target = children.firstChild.firstChild.firstChild - mei.selectNode(target) - } -} -const handleLeftRight = function (mei: MindElixirInstance, direction: DirectionClass) { - const current = mei.currentNode || mei.currentNodes?.[0] - if (!current) return - const nodeObj = current.nodeObj - const main = current.offsetParent.offsetParent.parentElement - if (!nodeObj.parent) { - direction === DirectionClass.LHS ? selectRootLeft(mei) : selectRootRight(mei) - } else if (main.className === direction) { - selectFirstChild(mei, current) - } else { - if (!nodeObj.parent?.parent) { - selectRoot(mei) - } else { - selectParent(mei, current) - } - } -} -const handlePrevNext = function (mei: MindElixirInstance, direction: 'previous' | 'next') { - const current = mei.currentNode - if (!current) return - const nodeObj = current.nodeObj - if (!nodeObj.parent) return - const s = (direction + 'Sibling') as 'previousSibling' | 'nextSibling' - const sibling = current.parentElement.parentElement[s] - if (sibling) { - mei.selectNode(sibling.firstChild.firstChild) - } else { - // handle multiple nodes including last node - mei.selectNode(current) - } -} -export const handleZoom = function ( - mei: MindElixirInstance, - direction: 'in' | 'out', - offset?: { - x: number - y: number - } -) { - const { scaleVal, scaleSensitivity } = mei - switch (direction) { - case 'in': - mei.scale(scaleVal + scaleSensitivity, offset) - break - case 'out': - mei.scale(scaleVal - scaleSensitivity, offset) - } -} - -export default function (mind: MindElixirInstance, options: boolean | KeypressOptions) { - options = options === true ? {} : options - const handleRemove = () => { - if (mind.currentArrow) mind.removeArrow() - else if (mind.currentSummary) mind.removeSummary(mind.currentSummary.summaryObj.id) - else if (mind.currentNodes) { - mind.removeNodes(mind.currentNodes) - } - } - - // Track key sequence for Ctrl+K+Ctrl+0 - let ctrlKPressed = false - let ctrlKTimeout: number | null = null - const handleControlKPlusX = (e: KeyboardEvent) => { - const nodeData = mind.nodeData - if (e.key === '0') { - // Ctrl+K+Ctrl+0: Collapse all nodes - for (const node of nodeData.children!) { - setExpand(node, false) - } - } - if (e.key === '=') { - // Ctrl+K+Ctrl+1: Expand all nodes - for (const node of nodeData.children!) { - setExpand(node, true) - } - } - if (['1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(e.key)) { - for (const node of nodeData.children!) { - setExpand(node, true, Number(e.key) - 1) - } - } - mind.refresh() - mind.toCenter() - - ctrlKPressed = false - if (ctrlKTimeout) { - clearTimeout(ctrlKTimeout) - ctrlKTimeout = null - mind.container.removeEventListener('keydown', handleControlKPlusX) - } - } - const key2func: Record void> = { - Enter: e => { - if (e.shiftKey) { - mind.insertSibling('before') - } else if (e.ctrlKey || e.metaKey) { - mind.insertParent() - } else { - mind.insertSibling('after') - } - }, - Tab: () => { - mind.addChild() - }, - F1: () => { - mind.toCenter() - }, - F2: () => { - mind.beginEdit() - }, - ArrowUp: e => { - if (e.altKey) { - mind.moveUpNode() - } else if (e.metaKey || e.ctrlKey) { - return mind.initSide() - } else { - handlePrevNext(mind, 'previous') - } - }, - ArrowDown: e => { - if (e.altKey) { - mind.moveDownNode() - } else { - handlePrevNext(mind, 'next') - } - }, - ArrowLeft: e => { - if (e.metaKey || e.ctrlKey) { - return mind.initLeft() - } - handleLeftRight(mind, DirectionClass.LHS) - }, - ArrowRight: e => { - if (e.metaKey || e.ctrlKey) { - return mind.initRight() - } - handleLeftRight(mind, DirectionClass.RHS) - }, - PageUp: () => { - return mind.moveUpNode() - }, - PageDown: () => { - mind.moveDownNode() - }, - c: (e: KeyboardEvent) => { - if (e.metaKey || e.ctrlKey) { - mind.waitCopy = mind.currentNodes - } - }, - x: (e: KeyboardEvent) => { - if (e.metaKey || e.ctrlKey) { - mind.waitCopy = mind.currentNodes - handleRemove() - } - }, - v: (e: KeyboardEvent) => { - if (!mind.waitCopy || !mind.currentNode) return - if (e.metaKey || e.ctrlKey) { - if (mind.waitCopy.length === 1) { - mind.copyNode(mind.waitCopy[0], mind.currentNode) - } else { - mind.copyNodes(mind.waitCopy, mind.currentNode) - } - } - }, - '=': (e: KeyboardEvent) => { - if (e.metaKey || e.ctrlKey) { - handleZoom(mind, 'in') - } - }, - '-': (e: KeyboardEvent) => { - if (e.metaKey || e.ctrlKey) { - handleZoom(mind, 'out') - } - }, - '0': (e: KeyboardEvent) => { - if (e.metaKey || e.ctrlKey) { - if (ctrlKPressed) { - return - } else { - // Regular Ctrl+0: Reset zoom - mind.scale(1) - } - } - }, - k: (e: KeyboardEvent) => { - if (e.metaKey || e.ctrlKey) { - ctrlKPressed = true - // Reset the flag after 2 seconds if no follow-up key is pressed - if (ctrlKTimeout) { - clearTimeout(ctrlKTimeout) - mind.container.removeEventListener('keydown', handleControlKPlusX) - } - ctrlKTimeout = window.setTimeout(() => { - ctrlKPressed = false - ctrlKTimeout = null - }, 2000) - mind.container.addEventListener('keydown', handleControlKPlusX) - } - }, - Delete: handleRemove, - Backspace: handleRemove, - ...options, - } - mind.container.onkeydown = e => { - // it will prevent all input in children node, so we have to stop propagation in input element - e.preventDefault() - if (!mind.editable) return - const keyHandler = key2func[e.key] - keyHandler && keyHandler(e) - } -} diff --git a/mind-elixir-core-master/src/plugin/nodeDraggable.ts b/mind-elixir-core-master/src/plugin/nodeDraggable.ts deleted file mode 100644 index 9dc0a00..0000000 --- a/mind-elixir-core-master/src/plugin/nodeDraggable.ts +++ /dev/null @@ -1,174 +0,0 @@ -import type { Topic } from '../types/dom' -import type { MindElixirInstance } from '../types/index' -import { on } from '../utils' -// https://html.spec.whatwg.org/multipage/dnd.html#drag-and-drop-processing-model -type InsertType = 'before' | 'after' | 'in' | null -const $d = document -const insertPreview = function (tpc: Topic, insertTpye: InsertType) { - if (!insertTpye) { - clearPreview(tpc) - return tpc - } - let el = tpc.querySelector('.insert-preview') - const className = `insert-preview ${insertTpye} show` - if (!el) { - el = $d.createElement('div') - tpc.appendChild(el) - } - el.className = className - return tpc -} - -const clearPreview = function (el: Element | null) { - if (!el) return - const query = el.querySelectorAll('.insert-preview') - for (const queryElement of query || []) { - queryElement.remove() - } -} - -const canMove = function (el: Element, dragged: Topic[]) { - for (const node of dragged) { - const isContain = node.parentElement.parentElement.contains(el) - const ok = el && el.tagName === 'ME-TPC' && el !== node && !isContain && (el as Topic).nodeObj.parent - if (!ok) return false - } - return true -} - -const createGhost = function (mei: MindElixirInstance) { - const ghost = document.createElement('div') - ghost.className = 'mind-elixir-ghost' - mei.container.appendChild(ghost) - return ghost -} - -class EdgeMoveController { - private mind: MindElixirInstance - private isMoving = false - private interval: NodeJS.Timeout | null = null - private speed = 20 - constructor(mind: MindElixirInstance) { - this.mind = mind - } - move(dx: number, dy: number) { - if (this.isMoving) return - this.isMoving = true - this.interval = setInterval(() => { - this.mind.move(dx * this.speed * this.mind.scaleVal, dy * this.speed * this.mind.scaleVal) - }, 100) - } - stop() { - this.isMoving = false - clearInterval(this.interval!) - } -} - -export default function (mind: MindElixirInstance) { - let insertTpye: InsertType = null - let meet: Topic | null = null - const ghost = createGhost(mind) - const edgeMoveController = new EdgeMoveController(mind) - - const handleDragStart = (e: DragEvent) => { - mind.selection.cancel() - const target = e.target as Topic - if (target?.tagName !== 'ME-TPC') { - // it should be a topic element, return if not - e.preventDefault() - return - } - let nodes = mind.currentNodes - if (!nodes?.includes(target)) { - mind.selectNode(target) - nodes = mind.currentNodes - } - mind.dragged = nodes - if (nodes.length > 1) ghost.innerHTML = nodes.length + '' - else ghost.innerHTML = target.innerHTML - - for (const node of nodes) { - node.parentElement.parentElement.style.opacity = '0.5' - } - e.dataTransfer!.setDragImage(ghost, 0, 0) - e.dataTransfer!.dropEffect = 'move' - mind.dragMoveHelper.clear() - } - const handleDragEnd = (e: DragEvent) => { - const { dragged } = mind - if (!dragged) return - edgeMoveController.stop() - for (const node of dragged) { - node.parentElement.parentElement.style.opacity = '1' - } - const target = e.target as Topic - target.style.opacity = '' - if (!meet) return - clearPreview(meet) - if (insertTpye === 'before') { - mind.moveNodeBefore(dragged, meet) - } else if (insertTpye === 'after') { - mind.moveNodeAfter(dragged, meet) - } else if (insertTpye === 'in') { - mind.moveNodeIn(dragged, meet) - } - mind.dragged = null - ghost.innerHTML = '' - } - const handleDragOver = (e: DragEvent) => { - e.preventDefault() - const threshold = 12 * mind.scaleVal - const { dragged } = mind - - if (!dragged) return - - // border detection - const rect = mind.container.getBoundingClientRect() - if (e.clientX < rect.x + 50) { - edgeMoveController.move(1, 0) - } else if (e.clientX > rect.x + rect.width - 50) { - edgeMoveController.move(-1, 0) - } else if (e.clientY < rect.y + 50) { - edgeMoveController.move(0, 1) - } else if (e.clientY > rect.y + rect.height - 50) { - edgeMoveController.move(0, -1) - } else { - edgeMoveController.stop() - } - - clearPreview(meet) - // minus threshold infer that postion of the cursor is above topic - const topMeet = $d.elementFromPoint(e.clientX, e.clientY - threshold) as Topic - if (canMove(topMeet, dragged)) { - meet = topMeet - const rect = topMeet.getBoundingClientRect() - const y = rect.y - if (e.clientY > y + rect.height) { - insertTpye = 'after' - } else { - insertTpye = 'in' - } - } else { - const bottomMeet = $d.elementFromPoint(e.clientX, e.clientY + threshold) as Topic - const rect = bottomMeet.getBoundingClientRect() - if (canMove(bottomMeet, dragged)) { - meet = bottomMeet - const y = rect.y - if (e.clientY < y) { - insertTpye = 'before' - } else { - insertTpye = 'in' - } - } else { - insertTpye = meet = null - } - } - if (meet) insertPreview(meet, insertTpye) - } - const off = on([ - { dom: mind.map, evt: 'dragstart', func: handleDragStart }, - { dom: mind.map, evt: 'dragend', func: handleDragEnd }, - { dom: mind.map, evt: 'dragover', func: handleDragOver }, - ]) - return off -} diff --git a/mind-elixir-core-master/src/plugin/operationHistory.ts b/mind-elixir-core-master/src/plugin/operationHistory.ts deleted file mode 100644 index cd1815b..0000000 --- a/mind-elixir-core-master/src/plugin/operationHistory.ts +++ /dev/null @@ -1,124 +0,0 @@ -import type { MindElixirData, NodeObj, OperationType } from '../index' -import { type MindElixirInstance } from '../index' -import type { Operation } from '../utils/pubsub' - -type History = { - prev: MindElixirData - next: MindElixirData - currentSelected: string[] - operation: OperationType - currentTarget: - | { - type: 'summary' | 'arrow' - value: string - } - | { - type: 'nodes' - value: string[] - } -} - -const calcCurentObject = function (operation: Operation): History['currentTarget'] { - if (['createSummary', 'removeSummary', 'finishEditSummary'].includes(operation.name)) { - return { - type: 'summary', - value: (operation as any).obj.id, - } - } else if (['createArrow', 'removeArrow', 'finishEditArrowLabel'].includes(operation.name)) { - return { - type: 'arrow', - value: (operation as any).obj.id, - } - } else if (['removeNodes', 'copyNodes', 'moveNodeBefore', 'moveNodeAfter', 'moveNodeIn'].includes(operation.name)) { - return { - type: 'nodes', - value: (operation as any).objs.map((obj: NodeObj) => obj.id), - } - } else { - return { - type: 'nodes', - value: [(operation as any).obj.id], - } - } -} - -export default function (mei: MindElixirInstance) { - let history = [] as History[] - let currentIndex = -1 - let current = mei.getData() - let currentSelectedNodes: NodeObj[] = [] - mei.undo = function () { - // 操作是删除时,undo 恢复内容,应选中操作的目标 - // 操作是新增时,undo 删除内容,应选中当前选中节点 - if (currentIndex > -1) { - const h = history[currentIndex] - current = h.prev - mei.refresh(h.prev) - try { - if (h.currentTarget.type === 'nodes') { - if (h.operation === 'removeNodes') { - mei.selectNodes(h.currentTarget.value.map(id => this.findEle(id))) - } else { - mei.selectNodes(h.currentSelected.map(id => this.findEle(id))) - } - } - } catch (e) { - // undo add node cause node not found - } finally { - currentIndex-- - } - } - } - mei.redo = function () { - if (currentIndex < history.length - 1) { - currentIndex++ - const h = history[currentIndex] - current = h.next - mei.refresh(h.next) - try { - if (h.currentTarget.type === 'nodes') { - if (h.operation === 'removeNodes') { - mei.selectNodes(h.currentSelected.map(id => this.findEle(id))) - } else { - mei.selectNodes(h.currentTarget.value.map(id => this.findEle(id))) - } - } - } catch (e) { - // redo delete node cause node not found - } - } - } - const handleOperation = function (operation: Operation) { - if (operation.name === 'beginEdit') return - history = history.slice(0, currentIndex + 1) - const next = mei.getData() - const item = { - prev: current, - operation: operation.name, - currentSelected: currentSelectedNodes.map(n => n.id), - currentTarget: calcCurentObject(operation), - next, - } - history.push(item) - current = next - currentIndex = history.length - 1 - console.log('operation', item.currentSelected, item.currentTarget.value) - } - const handleKeyDown = function (e: KeyboardEvent) { - // console.log(`mei.map.addEventListener('keydown', handleKeyDown)`, e.key, history.length, currentIndex) - if ((e.metaKey || e.ctrlKey) && ((e.shiftKey && e.key === 'Z') || e.key === 'y')) mei.redo() - else if ((e.metaKey || e.ctrlKey) && e.key === 'z') mei.undo() - } - const handleSelectNodes = function (nodes: NodeObj[]) { - console.log('selectNodes', nodes) - currentSelectedNodes = mei.currentNodes.map(n => n.nodeObj) - } - mei.bus.addListener('operation', handleOperation) - mei.bus.addListener('selectNodes', handleSelectNodes) - mei.container.addEventListener('keydown', handleKeyDown) - return () => { - mei.bus.removeListener('operation', handleOperation) - mei.bus.removeListener('selectNodes', handleSelectNodes) - mei.container.removeEventListener('keydown', handleKeyDown) - } -} diff --git a/mind-elixir-core-master/src/plugin/selection.ts b/mind-elixir-core-master/src/plugin/selection.ts deleted file mode 100644 index 0cbcc17..0000000 --- a/mind-elixir-core-master/src/plugin/selection.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type { Behaviour } from '@viselect/vanilla' -import SelectionArea from '@viselect/vanilla' -import type { MindElixirInstance, Topic } from '..' - -// TODO: boundaries move missing -export default function (mei: MindElixirInstance) { - const triggers: Behaviour['triggers'] = mei.mouseSelectionButton === 2 ? [2] : [0] - const selection = new SelectionArea({ - selectables: ['.map-container me-tpc'], - boundaries: [mei.container], - container: mei.selectionContainer, - features: { - // deselectOnBlur: true, - touch: false, - }, - behaviour: { - triggers, - // Scroll configuration. - scrolling: { - // On scrollable areas the number on px per frame is devided by this amount. - // Default is 10 to provide a enjoyable scroll experience. - speedDivider: 10, - // Browsers handle mouse-wheel events differently, this number will be used as - // numerator to calculate the mount of px while scrolling manually: manualScrollSpeed / scrollSpeedDivider. - manualSpeed: 750, - // This property defines the virtual inset margins from the borders of the container - // component that, when crossed by the mouse/touch, trigger the scrolling. Useful for - // fullscreen containers. - startScrollMargins: { x: 10, y: 10 }, - }, - }, - }) - .on('beforestart', ({ event }) => { - const target = event!.target as HTMLElement - if (target.id === 'input-box') return false - if (target.className === 'circle') return false - if (mei.container.querySelector('.context-menu')?.contains(target)) { - // prevent context menu click clear selection - return false - } - if (!(event as MouseEvent).ctrlKey && !(event as MouseEvent).metaKey) { - if (target.tagName === 'ME-TPC' && target.classList.contains('selected')) { - // Normal click cannot deselect - // Also, deselection CANNOT be triggered before dragging, otherwise we can't drag multiple targets!! - return false - } - // trigger `move` event here - mei.clearSelection() - } - // console.log('beforestart') - const selectionAreaElement = selection.getSelectionArea() - selectionAreaElement.style.background = '#4f90f22d' - selectionAreaElement.style.border = '1px solid #4f90f2' - if (selectionAreaElement.parentElement) { - selectionAreaElement.parentElement.style.zIndex = '9999' - } - return true - }) - // .on('beforedrag', ({ event }) => {}) - .on( - 'move', - ({ - store: { - changed: { added, removed }, - }, - }) => { - if (added.length > 0 || removed.length > 0) { - // console.log('added ', added) - // console.log('removed ', removed) - } - if (added.length > 0) { - for (const el of added) { - el.className = 'selected' - } - mei.currentNodes = [...mei.currentNodes, ...(added as Topic[])] - mei.bus.fire( - 'selectNodes', - (added as Topic[]).map(el => el.nodeObj) - ) - } - if (removed.length > 0) { - for (const el of removed) { - el.classList.remove('selected') - } - mei.currentNodes = mei.currentNodes!.filter(el => !removed?.includes(el)) - mei.bus.fire( - 'unselectNodes', - (removed as Topic[]).map(el => el.nodeObj) - ) - } - } - ) - mei.selection = selection -} diff --git a/mind-elixir-core-master/src/plugin/toolBar.less b/mind-elixir-core-master/src/plugin/toolBar.less deleted file mode 100644 index daa46fb..0000000 --- a/mind-elixir-core-master/src/plugin/toolBar.less +++ /dev/null @@ -1,40 +0,0 @@ -.mind-elixir-toolbar { - position: absolute; - color: var(--panel-color); - background: var(--panel-bgcolor); - padding: 10px; - border-radius: 5px; - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2); - - svg { - display: inline-block; // overwrite tailwindcss - } - span { - &:active { - opacity: 0.5; - } - } -} - -.mind-elixir-toolbar.rb { - right: 20px; - bottom: 20px; - - span + span { - margin-left: 10px; - } -} - -.mind-elixir-toolbar.lt { - font-size: 20px; - left: 20px; - top: 20px; - - span { - display: block; - } - - span + span { - margin-top: 10px; - } -} diff --git a/mind-elixir-core-master/src/plugin/toolBar.ts b/mind-elixir-core-master/src/plugin/toolBar.ts deleted file mode 100644 index 5844485..0000000 --- a/mind-elixir-core-master/src/plugin/toolBar.ts +++ /dev/null @@ -1,85 +0,0 @@ -import type { MindElixirInstance } from '../types/index' -import side from '../icons/side.svg?raw' -import left from '../icons/left.svg?raw' -import right from '../icons/right.svg?raw' -import full from '../icons/full.svg?raw' -import living from '../icons/living.svg?raw' -import zoomin from '../icons/zoomin.svg?raw' -import zoomout from '../icons/zoomout.svg?raw' - -import './toolBar.less' - -const map: Record = { - side, - left, - right, - full, - living, - zoomin, - zoomout, -} -const createButton = (id: string, name: string) => { - const button = document.createElement('span') - button.id = id - button.innerHTML = map[name] - return button -} - -function createToolBarRBContainer(mind: MindElixirInstance) { - const toolBarRBContainer = document.createElement('div') - const fc = createButton('fullscreen', 'full') - const gc = createButton('toCenter', 'living') - const zo = createButton('zoomout', 'zoomout') - const zi = createButton('zoomin', 'zoomin') - const percentage = document.createElement('span') - percentage.innerText = '100%' - toolBarRBContainer.appendChild(fc) - toolBarRBContainer.appendChild(gc) - toolBarRBContainer.appendChild(zo) - toolBarRBContainer.appendChild(zi) - // toolBarRBContainer.appendChild(percentage) - toolBarRBContainer.className = 'mind-elixir-toolbar rb' - fc.onclick = () => { - if (document.fullscreenElement === mind.el) { - document.exitFullscreen() - } else { - mind.el.requestFullscreen() - } - } - gc.onclick = () => { - mind.toCenter() - } - zo.onclick = () => { - mind.scale(mind.scaleVal - mind.scaleSensitivity) - } - zi.onclick = () => { - mind.scale(mind.scaleVal + mind.scaleSensitivity) - } - return toolBarRBContainer -} -function createToolBarLTContainer(mind: MindElixirInstance) { - const toolBarLTContainer = document.createElement('div') - const l = createButton('tbltl', 'left') - const r = createButton('tbltr', 'right') - const s = createButton('tblts', 'side') - - toolBarLTContainer.appendChild(l) - toolBarLTContainer.appendChild(r) - toolBarLTContainer.appendChild(s) - toolBarLTContainer.className = 'mind-elixir-toolbar lt' - l.onclick = () => { - mind.initLeft() - } - r.onclick = () => { - mind.initRight() - } - s.onclick = () => { - mind.initSide() - } - return toolBarLTContainer -} - -export default function (mind: MindElixirInstance) { - mind.container.append(createToolBarRBContainer(mind)) - mind.container.append(createToolBarLTContainer(mind)) -} diff --git a/mind-elixir-core-master/src/summary.ts b/mind-elixir-core-master/src/summary.ts deleted file mode 100644 index ec10a61..0000000 --- a/mind-elixir-core-master/src/summary.ts +++ /dev/null @@ -1,241 +0,0 @@ -import type { MindElixirInstance, Topic } from '.' -import { DirectionClass } from './types/index' -import { generateUUID, getOffsetLT, setAttributes } from './utils' -import { createSvgText, editSvgText, svgNS } from './utils/svg' - -/** - * @public - */ -export interface Summary { - id: string - label: string - /** - * parent node id of the summary - */ - parent: string - /** - * start index of the summary - */ - start: number - /** - * end index of the summary - */ - end: number -} - -export type SummarySvgGroup = SVGGElement & { - children: [SVGPathElement, SVGTextElement] - summaryObj: Summary -} - -const calcRange = function (nodes: Topic[]) { - if (nodes.length === 0) throw new Error('No selected node.') - if (nodes.length === 1) { - const obj = nodes[0].nodeObj - const parent = nodes[0].nodeObj.parent - if (!parent) throw new Error('Can not select root node.') - const i = parent.children!.findIndex(child => obj === child) - return { - parent: parent.id, - start: i, - end: i, - } - } - let maxLen = 0 - const parentChains = nodes.map(item => { - let node = item.nodeObj - const parentChain = [] - while (node.parent) { - const parent = node.parent - const siblings = parent.children - const index = siblings?.indexOf(node) - node = parent - parentChain.unshift({ node, index }) - } - if (parentChain.length > maxLen) maxLen = parentChain.length - return parentChain - }) - let index = 0 - // find minimum common parent - findMcp: for (; index < maxLen; index++) { - const base = parentChains[0][index]?.node - for (let i = 1; i < parentChains.length; i++) { - const parentChain = parentChains[i] - if (parentChain[index]?.node !== base) { - break findMcp - } - } - } - if (!index) throw new Error('Can not select root node.') - const range = parentChains.map(chain => chain[index - 1].index).sort() - const min = range[0] || 0 - const max = range[range.length - 1] || 0 - const parent = parentChains[0][index - 1].node - if (!parent.parent) throw new Error('Please select nodes in the same main topic.') - - return { - parent: parent.id, - start: min, - end: max, - } -} - -const creatGroup = function (id: string) { - const group = document.createElementNS(svgNS, 'g') as SummarySvgGroup - group.setAttribute('id', id) - return group -} - -const createPath = function (d: string, color?: string) { - const path = document.createElementNS(svgNS, 'path') - setAttributes(path, { - d, - stroke: color || '#666', - fill: 'none', - 'stroke-linecap': 'round', - 'stroke-width': '2', - }) - return path -} - -const getWrapper = (tpc: Topic) => tpc.parentElement.parentElement - -const getDirection = function (mei: MindElixirInstance, { parent, start }: Summary) { - const parentEl = mei.findEle(parent) - const parentObj = parentEl.nodeObj - let side: DirectionClass - if (parentObj.parent) { - side = parentEl.closest('me-main')!.className as DirectionClass - } else { - side = mei.findEle(parentObj.children![start].id).closest('me-main')!.className as DirectionClass - } - return side -} - -const drawSummary = function (mei: MindElixirInstance, summary: Summary) { - const { id, label: summaryText, parent, start, end } = summary - const { nodes, theme, summarySvg } = mei - const parentEl = mei.findEle(parent) - const parentObj = parentEl.nodeObj - const side = getDirection(mei, summary) - let left = Infinity - let right = 0 - let startTop = 0 - let endBottom = 0 - for (let i = start; i <= end; i++) { - const child = parentObj.children?.[i] - if (!child) { - console.warn('Child not found') - mei.removeSummary(id) - return null - } - const wrapper = getWrapper(mei.findEle(child.id)) - const { offsetLeft, offsetTop } = getOffsetLT(nodes, wrapper) - const offset = start === end ? 10 : 20 - if (i === start) startTop = offsetTop + offset - if (i === end) endBottom = offsetTop + wrapper.offsetHeight - offset - if (offsetLeft < left) left = offsetLeft - if (wrapper.offsetWidth + offsetLeft > right) right = wrapper.offsetWidth + offsetLeft - } - let path - let text - const top = startTop + 10 - const bottom = endBottom + 10 - const md = (top + bottom) / 2 - const color = theme.cssVar['--color'] - if (side === DirectionClass.LHS) { - path = createPath(`M ${left + 10} ${top} c -5 0 -10 5 -10 10 L ${left} ${bottom - 10} c 0 5 5 10 10 10 M ${left} ${md} h -10`, color) - text = createSvgText(summaryText, left - 20, md + 6, { anchor: 'end', color }) - } else { - path = createPath(`M ${right - 10} ${top} c 5 0 10 5 10 10 L ${right} ${bottom - 10} c 0 5 -5 10 -10 10 M ${right} ${md} h 10`, color) - text = createSvgText(summaryText, right + 20, md + 6, { anchor: 'start', color }) - } - const group = creatGroup('s-' + id) - group.appendChild(path) - group.appendChild(text) - group.summaryObj = summary - summarySvg.appendChild(group) - return group -} - -export const createSummary = function (this: MindElixirInstance) { - if (!this.currentNodes) return - const { currentNodes: nodes, summaries, bus } = this - const { parent, start, end } = calcRange(nodes) - const summary = { id: generateUUID(), parent, start, end, label: 'summary' } - const g = drawSummary(this, summary) as SummarySvgGroup - summaries.push(summary) - this.editSummary(g) - bus.fire('operation', { - name: 'createSummary', - obj: summary, - }) -} - -export const createSummaryFrom = function (this: MindElixirInstance, summary: Omit) { - // now I know the goodness of overloading - const id = generateUUID() - const newSummary = { ...summary, id } - drawSummary(this, newSummary) - this.summaries.push(newSummary) - this.bus.fire('operation', { - name: 'createSummary', - obj: newSummary, - }) -} - -export const removeSummary = function (this: MindElixirInstance, id: string) { - const index = this.summaries.findIndex(summary => summary.id === id) - if (index > -1) { - this.summaries.splice(index, 1) - document.querySelector('#s-' + id)?.remove() - } - this.bus.fire('operation', { - name: 'removeSummary', - obj: { id }, - }) -} - -export const selectSummary = function (this: MindElixirInstance, el: SummarySvgGroup) { - const box = el.children[1].getBBox() - const padding = 6 - const radius = 3 - const rect = document.createElementNS(svgNS, 'rect') - setAttributes(rect, { - x: box.x - padding + '', - y: box.y - padding + '', - width: box.width + padding * 2 + '', - height: box.height + padding * 2 + '', - rx: radius + '', - stroke: this.theme.cssVar['--selected'] || '#4dc4ff', - 'stroke-width': '2', - fill: 'none', - }) - el.appendChild(rect) - this.currentSummary = el -} - -export const unselectSummary = function (this: MindElixirInstance) { - this.currentSummary?.querySelector('rect')?.remove() - this.currentSummary = null -} - -export const renderSummary = function (this: MindElixirInstance) { - this.summarySvg.innerHTML = '' - this.summaries.forEach(summary => { - try { - drawSummary(this, summary) - } catch (e) { - console.warn('Node may not be expanded') - } - }) - this.nodes.insertAdjacentElement('beforeend', this.summarySvg) -} - -export const editSummary = function (this: MindElixirInstance, el: SummarySvgGroup) { - console.time('editSummary') - if (!el) return - const textEl = el.childNodes[1] as SVGTextElement - editSvgText(this, textEl, el.summaryObj) - console.timeEnd('editSummary') -} diff --git a/mind-elixir-core-master/src/types/dom.ts b/mind-elixir-core-master/src/types/dom.ts deleted file mode 100644 index 936cb40..0000000 --- a/mind-elixir-core-master/src/types/dom.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { Arrow } from '../arrow' -import type { NodeObj } from './index' - -export interface Wrapper extends HTMLElement { - firstChild: Parent - children: HTMLCollection & [Parent, Children] - parentNode: Children - parentElement: Children - offsetParent: Wrapper - previousSibling: Wrapper | null - nextSibling: Wrapper | null -} - -export interface Parent extends HTMLElement { - firstChild: Topic - children: HTMLCollection & [Topic, Expander | undefined] - parentNode: Wrapper - parentElement: Wrapper - nextSibling: Children - offsetParent: Wrapper -} - -export interface Children extends HTMLElement { - parentNode: Wrapper - children: HTMLCollection & Wrapper[] - parentElement: Wrapper - firstChild: Wrapper - previousSibling: Parent -} - -export interface Topic extends HTMLElement { - nodeObj: NodeObj - parentNode: Parent - parentElement: Parent - offsetParent: Parent - - text: HTMLSpanElement - expander?: Expander - - link?: HTMLElement - image?: HTMLImageElement - icons?: HTMLSpanElement - tags?: HTMLDivElement -} - -export interface Expander extends HTMLElement { - expanded?: boolean - parentNode: Parent - parentElement: Parent - previousSibling: Topic -} - -export type CustomLine = SVGPathElement -export type CustomArrow = SVGPathElement -export interface CustomSvg extends SVGGElement { - arrowObj: Arrow - label: SVGTextElement - line: SVGPathElement - arrow1: SVGPathElement - arrow2: SVGPathElement -} diff --git a/mind-elixir-core-master/src/types/global.ts b/mind-elixir-core-master/src/types/global.ts deleted file mode 100644 index 2afef43..0000000 --- a/mind-elixir-core-master/src/types/global.ts +++ /dev/null @@ -1,7 +0,0 @@ -export {} -declare global { - interface Element { - setAttribute(name: string, value: boolean): void - setAttribute(name: string, value: number): void - } -} diff --git a/mind-elixir-core-master/src/types/index.ts b/mind-elixir-core-master/src/types/index.ts deleted file mode 100644 index 6d50d10..0000000 --- a/mind-elixir-core-master/src/types/index.ts +++ /dev/null @@ -1,249 +0,0 @@ -import type { Topic, CustomSvg } from './dom' -import type { createBus, EventMap, Operation } from '../utils/pubsub' -import type { MindElixirMethods, OperationMap, Operations } from '../methods' -import type { LinkDragMoveHelperInstance } from '../utils/LinkDragMoveHelper' -import type { Arrow } from '../arrow' -import type { Summary, SummarySvgGroup } from '../summary' -import type { MainLineParams, SubLineParams } from '../utils/generateBranch' -import type { Locale } from '../i18n' -import type { ContextMenuOption } from '../plugin/contextMenu' -import type { createDragMoveHelper } from '../utils/dragMoveHelper' -import type SelectionArea from '@viselect/vanilla' -export { type MindElixirMethods } from '../methods' - -export enum DirectionClass { - LHS = 'lhs', - RHS = 'rhs', -} - -type Before = Partial<{ - [K in Operations]: (...args: Parameters) => Promise | boolean -}> - -/** - * MindElixir Theme - * - * @public - */ -export type Theme = { - name: string - /** - * Hint for developers to use the correct theme - */ - type?: 'light' | 'dark' - /** - * Color palette for main branches - */ - palette: string[] - cssVar: { - '--node-gap-x': string - '--node-gap-y': string - '--main-gap-x': string - '--main-gap-y': string - '--main-color': string - '--main-bgcolor': string - '--color': string - '--bgcolor': string - '--selected': string - '--accent-color': string - '--root-color': string - '--root-bgcolor': string - '--root-border-color': string - '--root-radius': string - '--main-radius': string - '--topic-padding': string - '--panel-color': string - '--panel-bgcolor': string - '--panel-border-color': string - '--map-padding': string - } -} - -export type Alignment = 'root' | 'nodes' - -export interface KeypressOptions { - [key: string]: (e: KeyboardEvent) => void -} - -/** - * The MindElixir instance - * - * @public - */ -export interface MindElixirInstance extends Omit, 'markdown' | 'imageProxy'>, MindElixirMethods { - markdown?: (markdown: string, obj: NodeObj) => string // Keep markdown as optional - imageProxy?: (url: string) => string // Keep imageProxy as optional - dragged: Topic[] | null // currently dragged nodes - el: HTMLElement - disposable: Array<() => void> - isFocusMode: boolean - nodeDataBackup: NodeObj - - nodeData: NodeObj - arrows: Arrow[] - summaries: Summary[] - - readonly currentNode: Topic | null - currentNodes: Topic[] - currentSummary: SummarySvgGroup | null - currentArrow: CustomSvg | null - waitCopy: Topic[] | null - - scaleVal: number - tempDirection: number | null - - container: HTMLElement - map: HTMLElement - root: HTMLElement - nodes: HTMLElement - lines: SVGElement - summarySvg: SVGElement - linkController: SVGElement - P2: HTMLElement - P3: HTMLElement - line1: SVGElement - line2: SVGElement - linkSvgGroup: SVGElement - /** - * @internal - */ - helper1?: LinkDragMoveHelperInstance - /** - * @internal - */ - helper2?: LinkDragMoveHelperInstance - - bus: ReturnType> - history: Operation[] - undo: () => void - redo: () => void - - selection: SelectionArea - dragMoveHelper: ReturnType -} -type PathString = string -/** - * The MindElixir options - * - * @public - */ -export interface Options { - el: string | HTMLElement - direction?: number - locale?: Locale - draggable?: boolean - editable?: boolean - contextMenu?: boolean | ContextMenuOption - toolBar?: boolean - keypress?: boolean | KeypressOptions - mouseSelectionButton?: 0 | 2 - before?: Before - newTopicName?: string - allowUndo?: boolean - overflowHidden?: boolean - generateMainBranch?: (this: MindElixirInstance, params: MainLineParams) => PathString - generateSubBranch?: (this: MindElixirInstance, params: SubLineParams) => PathString - theme?: Theme - selectionContainer?: string | HTMLElement - alignment?: Alignment - scaleSensitivity?: number - scaleMin?: number - scaleMax?: number - handleWheel?: true | ((e: WheelEvent) => void) - /** - * Custom markdown parser function that takes markdown string and returns HTML string - * If not provided, markdown will be disabled - * @default undefined - */ - markdown?: (markdown: string, obj: NodeObj) => string - /** - * Image proxy function to handle image URLs, mainly used to solve CORS issues - * If provided, all image URLs will be processed through this function before setting to img src - * @default undefined - */ - imageProxy?: (url: string) => string -} - -export type Uid = string - -export type Left = 0 -export type Right = 1 - -/** - * Tag object for node tags with optional styling - * - * @public - */ -export interface TagObj { - text: string - style?: Partial | Record - className?: string -} - -/** - * MindElixir node object - * - * @public - */ -export interface NodeObj { - topic: string - id: Uid - style?: Partial<{ - fontSize: string - fontFamily: string - color: string - background: string - fontWeight: string - width: string - border: string - textDecoration: string - }> - children?: NodeObj[] - tags?: (string | TagObj)[] - icons?: string[] - hyperLink?: string - expanded?: boolean - direction?: Left | Right - image?: { - url: string - width: number - height: number - fit?: 'fill' | 'contain' | 'cover' - } - /** - * The color of the branch. - */ - branchColor?: string - /** - * This property is added programatically, do not set it manually. - * - * the Root node has no parent! - */ - parent?: NodeObj - /** - * Render custom HTML in the node. - * - * Everything in the node will be replaced by this property. - */ - dangerouslySetInnerHTML?: string - /** - * Extra data for the node, which can be used to store any custom data. - */ - note?: string - // TODO: checkbox - // checkbox?: boolean | undefined -} -export type NodeObjExport = Omit - -/** - * The exported data of MindElixir - * - * @public - */ -export type MindElixirData = { - nodeData: NodeObj - arrows?: Arrow[] - summaries?: Summary[] - direction?: number - theme?: Theme -} diff --git a/mind-elixir-core-master/src/utils/LinkDragMoveHelper.ts b/mind-elixir-core-master/src/utils/LinkDragMoveHelper.ts deleted file mode 100644 index 89a4e35..0000000 --- a/mind-elixir-core-master/src/utils/LinkDragMoveHelper.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { on } from '.' - -const create = function (dom: HTMLElement) { - return { - dom, - moved: false, // differentiate click and move - pointerdown: false, - lastX: 0, - lastY: 0, - handlePointerMove(e: PointerEvent) { - if (this.pointerdown) { - this.moved = true - // Calculate delta manually since pointer events don't have movementX/Y - const deltaX = e.clientX - this.lastX - const deltaY = e.clientY - this.lastY - this.lastX = e.clientX - this.lastY = e.clientY - this.cb && this.cb(deltaX, deltaY) - } - }, - handlePointerDown(e: PointerEvent) { - if (e.button !== 0) return - this.pointerdown = true - this.lastX = e.clientX - this.lastY = e.clientY - // Set pointer capture for better tracking - this.dom.setPointerCapture(e.pointerId) - }, - handleClear(e: PointerEvent) { - this.pointerdown = false - // Release pointer capture - if (e.pointerId !== undefined) { - this.dom.releasePointerCapture(e.pointerId) - } - }, - cb: null as ((deltaX: number, deltaY: number) => void) | null, - init(map: HTMLElement, cb: (deltaX: number, deltaY: number) => void) { - this.cb = cb - this.handleClear = this.handleClear.bind(this) - this.handlePointerMove = this.handlePointerMove.bind(this) - this.handlePointerDown = this.handlePointerDown.bind(this) - this.destroy = on([ - { dom: map, evt: 'pointermove', func: this.handlePointerMove }, - { dom: map, evt: 'pointerleave', func: this.handleClear }, - { dom: map, evt: 'pointerup', func: this.handleClear }, - { dom: this.dom, evt: 'pointerdown', func: this.handlePointerDown }, - ]) - }, - destroy: null as (() => void) | null, - clear() { - this.moved = false - this.pointerdown = false - }, - } -} -const LinkDragMoveHelper = { - create, -} - -export type LinkDragMoveHelperInstance = ReturnType -export default LinkDragMoveHelper diff --git a/mind-elixir-core-master/src/utils/dom.ts b/mind-elixir-core-master/src/utils/dom.ts deleted file mode 100644 index c5063bc..0000000 --- a/mind-elixir-core-master/src/utils/dom.ts +++ /dev/null @@ -1,248 +0,0 @@ -import { LEFT } from '../const' -import type { Topic, Wrapper, Parent, Children, Expander } from '../types/dom' -import type { MindElixirInstance, NodeObj } from '../types/index' -import { encodeHTML } from '../utils/index' -import { layoutChildren } from './layout' - -// DOM manipulation -const $d = document -export const findEle = function (this: MindElixirInstance, id: string, el?: HTMLElement) { - const scope = this?.el ? this.el : el ? el : document - const ele = scope.querySelector(`[data-nodeid="me${id}"]`) - if (!ele) throw new Error(`FindEle: Node ${id} not found, maybe it's collapsed.`) - return ele -} - -export const shapeTpc = function (this: MindElixirInstance, tpc: Topic, nodeObj: NodeObj) { - tpc.innerHTML = '' - - if (nodeObj.style) { - const style = nodeObj.style - type KeyOfStyle = keyof typeof style - for (const key in style) { - tpc.style[key as KeyOfStyle] = style[key as KeyOfStyle]! - } - } - - if (nodeObj.dangerouslySetInnerHTML) { - tpc.innerHTML = nodeObj.dangerouslySetInnerHTML - return - } - - if (nodeObj.image) { - const img = nodeObj.image - if (img.url && img.width && img.height) { - const imgEl = $d.createElement('img') - // Use imageProxy function if provided, otherwise use original URL - imgEl.src = this.imageProxy ? this.imageProxy(img.url) : img.url - imgEl.style.width = img.width + 'px' - imgEl.style.height = img.height + 'px' - if (img.fit) imgEl.style.objectFit = img.fit - tpc.appendChild(imgEl) - tpc.image = imgEl - } else { - console.warn('Image url/width/height are required') - } - } else if (tpc.image) { - tpc.image = undefined - } - - { - const textEl = $d.createElement('span') - textEl.className = 'text' - - // Check if markdown parser is provided and topic contains markdown syntax - if (this.markdown) { - textEl.innerHTML = this.markdown(nodeObj.topic, nodeObj) - } else { - textEl.textContent = nodeObj.topic - } - - tpc.appendChild(textEl) - tpc.text = textEl - } - - if (nodeObj.hyperLink) { - const linkEl = $d.createElement('a') - linkEl.className = 'hyper-link' - linkEl.target = '_blank' - linkEl.innerText = '🔗' - linkEl.href = nodeObj.hyperLink - tpc.appendChild(linkEl) - tpc.link = linkEl - } else if (tpc.link) { - tpc.link = undefined - } - - if (nodeObj.icons && nodeObj.icons.length) { - const iconsEl = $d.createElement('span') - iconsEl.className = 'icons' - iconsEl.innerHTML = nodeObj.icons.map(icon => `${encodeHTML(icon)}`).join('') - tpc.appendChild(iconsEl) - tpc.icons = iconsEl - } else if (tpc.icons) { - tpc.icons = undefined - } - - if (nodeObj.tags && nodeObj.tags.length) { - const tagsEl = $d.createElement('div') - tagsEl.className = 'tags' - - nodeObj.tags.forEach(tag => { - const span = $d.createElement('span') - - if (typeof tag === 'string') { - span.textContent = tag - } else { - span.textContent = tag.text - if (tag.className) { - span.className = tag.className - } - if (tag.style) { - Object.assign(span.style, tag.style) - } - } - - tagsEl.appendChild(span) - }) - - tpc.appendChild(tagsEl) - tpc.tags = tagsEl - } else if (tpc.tags) { - tpc.tags = undefined - } -} - -// everything start from `Wrapper` -export const createWrapper = function (this: MindElixirInstance, nodeObj: NodeObj, omitChildren?: boolean) { - const grp = $d.createElement('me-wrapper') as Wrapper - const { p, tpc } = this.createParent(nodeObj) - grp.appendChild(p) - if (!omitChildren && nodeObj.children && nodeObj.children.length > 0) { - const expander = createExpander(nodeObj.expanded) - p.appendChild(expander) - // tpc.expander = expander - if (nodeObj.expanded !== false) { - const children = layoutChildren(this, nodeObj.children) - grp.appendChild(children) - } - } - return { grp, top: p, tpc } -} - -export const createParent = function (this: MindElixirInstance, nodeObj: NodeObj) { - const p = $d.createElement('me-parent') as Parent - const tpc = this.createTopic(nodeObj) - shapeTpc.call(this, tpc, nodeObj) - p.appendChild(tpc) - return { p, tpc } -} - -export const createChildren = function (this: MindElixirInstance, wrappers: Wrapper[]) { - const children = $d.createElement('me-children') as Children - children.append(...wrappers) - return children -} - -export const createTopic = function (this: MindElixirInstance, nodeObj: NodeObj) { - const topic = $d.createElement('me-tpc') as Topic - topic.nodeObj = nodeObj - topic.dataset.nodeid = 'me' + nodeObj.id - topic.draggable = this.draggable - return topic -} - -export function selectText(div: HTMLElement) { - const range = $d.createRange() - range.selectNodeContents(div) - const getSelection = window.getSelection() - if (getSelection) { - getSelection.removeAllRanges() - getSelection.addRange(range) - } -} - -export const editTopic = function (this: MindElixirInstance, el: Topic) { - console.time('editTopic') - if (!el) return - const div = $d.createElement('div') - const node = el.nodeObj - - // Get the original content from topic - const originalContent = node.topic - - el.appendChild(div) - div.id = 'input-box' - div.textContent = originalContent - div.contentEditable = 'plaintext-only' - div.spellcheck = false - const style = getComputedStyle(el) - div.style.cssText = `min-width:${el.offsetWidth - 8}px; - color:${style.color}; - padding:${style.padding}; - margin:${style.margin}; - font:${style.font}; - background-color:${style.backgroundColor !== 'rgba(0, 0, 0, 0)' && style.backgroundColor}; - border-radius:${style.borderRadius};` - if (this.direction === LEFT) div.style.right = '0' - - selectText(div) - - this.bus.fire('operation', { - name: 'beginEdit', - obj: el.nodeObj, - }) - - div.addEventListener('keydown', e => { - e.stopPropagation() - const key = e.key - - if (key === 'Enter' || key === 'Tab') { - // keep wrap for shift enter - if (e.shiftKey) return - - e.preventDefault() - div.blur() - this.container.focus() - } - }) - - div.addEventListener('blur', () => { - if (!div) return - const inputContent = div.textContent?.trim() || '' - - if (inputContent === '') { - node.topic = originalContent - } else { - // Update topic content - node.topic = inputContent - - if (this.markdown) { - el.text.innerHTML = this.markdown(node.topic, node) - } else { - // Plain text content - el.text.textContent = inputContent - } - } - - div.remove() - - if (inputContent === originalContent) return - - this.linkDiv() - this.bus.fire('operation', { - name: 'finishEdit', - obj: node, - origin: originalContent, - }) - }) - console.timeEnd('editTopic') -} - -export const createExpander = function (expanded: boolean | undefined): Expander { - const expander = $d.createElement('me-epd') as Expander - // if expanded is undefined, treat as expanded - expander.expanded = expanded !== false - expander.className = expanded !== false ? 'minus' : '' - return expander -} diff --git a/mind-elixir-core-master/src/utils/domManipulation.ts b/mind-elixir-core-master/src/utils/domManipulation.ts deleted file mode 100644 index a6161e4..0000000 --- a/mind-elixir-core-master/src/utils/domManipulation.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { LEFT, RIGHT, SIDE } from '../const' -import { rmSubline } from '../nodeOperation' -import type { MindElixirInstance, NodeObj } from '../types' -import type { Topic, Wrapper } from '../types/dom' -import { createExpander } from './dom' - -// Judge new added node L or R -export const judgeDirection = function ({ map, direction }: MindElixirInstance, obj: NodeObj) { - if (direction === LEFT) { - return LEFT - } else if (direction === RIGHT) { - return RIGHT - } else if (direction === SIDE) { - const l = map.querySelector('.lhs')?.childElementCount || 0 - const r = map.querySelector('.rhs')?.childElementCount || 0 - if (l <= r) { - obj.direction = LEFT - return LEFT - } else { - obj.direction = RIGHT - return RIGHT - } - } -} - -export const addChildDom = function (mei: MindElixirInstance, to: Topic, wrapper: Wrapper) { - const tpc = wrapper.children[0].children[0] - const top = to.parentElement - if (top.tagName === 'ME-PARENT') { - rmSubline(tpc) - if (top.children[1]) { - top.nextSibling.appendChild(wrapper) - } else { - const c = mei.createChildren([wrapper]) - top.appendChild(createExpander(true)) - top.insertAdjacentElement('afterend', c) - } - mei.linkDiv(wrapper.offsetParent as Wrapper) - } else if (top.tagName === 'ME-ROOT') { - const direction = judgeDirection(mei, tpc.nodeObj) - if (direction === LEFT) { - mei.container.querySelector('.lhs')?.appendChild(wrapper) - } else { - mei.container.querySelector('.rhs')?.appendChild(wrapper) - } - mei.linkDiv() - } -} - -export const removeNodeDom = function (tpc: Topic, siblingLength: number) { - const p = tpc.parentNode - if (siblingLength === 0) { - // remove epd when children length === 0 - const c = p.parentNode.parentNode - if (c.tagName !== 'ME-MAIN') { - // Root - c.previousSibling.children[1]!.remove() // remove epd - c.remove() // remove Children div - } - } - p.parentNode.remove() -} diff --git a/mind-elixir-core-master/src/utils/dragMoveHelper.ts b/mind-elixir-core-master/src/utils/dragMoveHelper.ts deleted file mode 100644 index 7a664eb..0000000 --- a/mind-elixir-core-master/src/utils/dragMoveHelper.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { MindElixirInstance } from '../types/index' - -export function createDragMoveHelper(mei: MindElixirInstance) { - return { - x: 0, - y: 0, - moved: false, // diffrentiate click and move - mousedown: false, - onMove(deltaX: number, deltaY: number) { - if (this.mousedown) { - this.moved = true - mei.move(deltaX, deltaY) - } - }, - clear() { - this.mousedown = false - }, - } -} diff --git a/mind-elixir-core-master/src/utils/generateBranch.ts b/mind-elixir-core-master/src/utils/generateBranch.ts deleted file mode 100644 index c4bdbd6..0000000 --- a/mind-elixir-core-master/src/utils/generateBranch.ts +++ /dev/null @@ -1,80 +0,0 @@ -import type { MindElixirInstance } from '..' -import { DirectionClass } from '../types/index' - -export interface MainLineParams { - pT: number - pL: number - pW: number - pH: number - cT: number - cL: number - cW: number - cH: number - direction: DirectionClass - containerHeight: number -} - -export interface SubLineParams { - pT: number - pL: number - pW: number - pH: number - cT: number - cL: number - cW: number - cH: number - direction: DirectionClass - isFirst: boolean | undefined -} - -// https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#path_commands - -export function main({ pT, pL, pW, pH, cT, cL, cW, cH, direction, containerHeight }: MainLineParams) { - let x1 = pL + pW / 2 - const y1 = pT + pH / 2 - let x2 - if (direction === DirectionClass.LHS) { - x2 = cL + cW - } else { - x2 = cL - } - const y2 = cT + cH / 2 - const pct = Math.abs(y2 - y1) / containerHeight - const offset = (1 - pct) * 0.25 * (pW / 2) - if (direction === DirectionClass.LHS) { - x1 = x1 - pW / 10 - offset - } else { - x1 = x1 + pW / 10 + offset - } - return `M ${x1} ${y1} Q ${x1} ${y2} ${x2} ${y2}` -} - -export function sub(this: MindElixirInstance, { pT, pL, pW, pH, cT, cL, cW, cH, direction, isFirst }: SubLineParams) { - const GAP = parseInt(this.container.style.getPropertyValue('--node-gap-x')) // cache? - // const GAP = 30 - let y1 = 0 - let end = 0 - if (isFirst) { - y1 = pT + pH / 2 - } else { - y1 = pT + pH - } - const y2 = cT + cH - let x1 = 0 - let x2 = 0 - let xMid = 0 - const offset = (Math.abs(y1 - y2) / 300) * GAP - if (direction === DirectionClass.LHS) { - xMid = pL - x1 = xMid + GAP - x2 = xMid - GAP - end = cL + GAP - return `M ${x1} ${y1} C ${xMid} ${y1} ${xMid + offset} ${y2} ${x2} ${y2} H ${end}` - } else { - xMid = pL + pW - x1 = xMid - GAP - x2 = xMid + GAP - end = cL + cW - GAP - return `M ${x1} ${y1} C ${xMid} ${y1} ${xMid - offset} ${y2} ${x2} ${y2} H ${end}` - } -} diff --git a/mind-elixir-core-master/src/utils/index.ts b/mind-elixir-core-master/src/utils/index.ts deleted file mode 100644 index 9314f68..0000000 --- a/mind-elixir-core-master/src/utils/index.ts +++ /dev/null @@ -1,192 +0,0 @@ -import type { Topic } from '../types/dom' -import type { NodeObj, MindElixirInstance, NodeObjExport } from '../types/index' - -export function encodeHTML(s: string) { - return s.replace(/&/g, '&').replace(/ /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) - -export const getObjById = function (id: string, data: NodeObj): NodeObj | null { - if (data.id === id) { - return data - } else if (data.children && data.children.length) { - for (let i = 0; i < data.children.length; i++) { - const res = getObjById(id, data.children[i]) - if (res) return res - } - return null - } else { - return null - } -} - -/** - * Add parent property to every node - */ -export const fillParent = (data: NodeObj, parent?: NodeObj) => { - data.parent = parent - if (data.children) { - for (let i = 0; i < data.children.length; i++) { - fillParent(data.children[i], data) - } - } -} - -export const setExpand = (node: NodeObj, isExpand: boolean, level?: number) => { - node.expanded = isExpand - if (node.children) { - if (level === undefined || level > 0) { - const nextLevel = level !== undefined ? level - 1 : undefined - node.children.forEach(child => { - setExpand(child, isExpand, nextLevel) - }) - } else { - node.children.forEach(child => { - setExpand(child, false) - }) - } - } -} - -export function refreshIds(data: NodeObj) { - data.id = generateUUID() - if (data.children) { - for (let i = 0; i < data.children.length; i++) { - refreshIds(data.children[i]) - } - } -} - -export const throttle = void>(fn: T, wait: number) => { - let pre = Date.now() - return function (...args: Parameters) { - const now = Date.now() - if (now - pre < wait) return - fn(...args) - pre = Date.now() - } -} - -export function getArrowPoints(p3x: number, p3y: number, p4x: number, p4y: number) { - const deltay = p4y - p3y - const deltax = p3x - p4x - let angle = (Math.atan(Math.abs(deltay) / Math.abs(deltax)) / 3.14) * 180 - if (isNaN(angle)) return - if (deltax < 0 && deltay > 0) { - angle = 180 - angle - } - if (deltax < 0 && deltay < 0) { - angle = 180 + angle - } - if (deltax > 0 && deltay < 0) { - angle = 360 - angle - } - const arrowLength = 12 - const arrowAngle = 30 - const a1 = angle + arrowAngle - const a2 = angle - arrowAngle - return { - x1: p4x + Math.cos((Math.PI * a1) / 180) * arrowLength, - y1: p4y - Math.sin((Math.PI * a1) / 180) * arrowLength, - x2: p4x + Math.cos((Math.PI * a2) / 180) * arrowLength, - y2: p4y - Math.sin((Math.PI * a2) / 180) * arrowLength, - } -} - -export function generateUUID(): string { - return (new Date().getTime().toString(16) + Math.random().toString(16).substr(2)).substr(2, 16) -} - -export const generateNewObj = function (this: MindElixirInstance): NodeObjExport { - const id = generateUUID() - return { - topic: this.newTopicName, - id, - } -} - -export function checkMoveValid(from: NodeObj, to: NodeObj) { - let valid = true - while (to.parent) { - if (to.parent === from) { - valid = false - break - } - to = to.parent - } - return valid -} - -export function deepClone(obj: NodeObj) { - const deepCloneObj = JSON.parse( - JSON.stringify(obj, (k, v) => { - if (k === 'parent') return undefined - return v - }) - ) - return deepCloneObj -} - -export const getOffsetLT = (parent: HTMLElement, child: HTMLElement) => { - let offsetLeft = 0 - let offsetTop = 0 - while (child && child !== parent) { - offsetLeft += child.offsetLeft - offsetTop += child.offsetTop - child = child.offsetParent as HTMLElement - } - return { offsetLeft, offsetTop } -} - -export const setAttributes = (el: HTMLElement | SVGElement, attrs: { [key: string]: string }) => { - for (const key in attrs) { - el.setAttribute(key, attrs[key]) - } -} - -export const isTopic = (target?: HTMLElement): target is Topic => { - return target ? target.tagName === 'ME-TPC' : false -} - -export const unionTopics = (nodes: Topic[]) => { - return nodes - .filter(node => node.nodeObj.parent) - .filter((node, _, nodes) => { - for (let i = 0; i < nodes.length; i++) { - if (node === nodes[i]) continue - const { parent } = node.nodeObj - if (parent === nodes[i].nodeObj) { - return false - } - } - return true - }) -} - -export const getTranslate = (styleText: string) => { - const regex = /translate\(([^,]+),\s*([^)]+)\)/ - const match = styleText.match(regex) - return match ? { x: parseFloat(match[1]), y: parseFloat(match[2]) } : { x: 0, y: 0 } -} - -export const on = function ( - list: { - [K in keyof GlobalEventHandlersEventMap]: { - dom: EventTarget - evt: K - func: (this: EventTarget, ev: GlobalEventHandlersEventMap[K]) => void - } - }[keyof GlobalEventHandlersEventMap][] -) { - for (let i = 0; i < list.length; i++) { - const { dom, evt, func } = list[i] - dom.addEventListener(evt, func as EventListener) - } - return function off() { - for (let i = 0; i < list.length; i++) { - const { dom, evt, func } = list[i] - dom.removeEventListener(evt, func as EventListener) - } - } -} diff --git a/mind-elixir-core-master/src/utils/layout-ssr.ts b/mind-elixir-core-master/src/utils/layout-ssr.ts deleted file mode 100644 index 907ad27..0000000 --- a/mind-elixir-core-master/src/utils/layout-ssr.ts +++ /dev/null @@ -1,321 +0,0 @@ -import { LEFT, RIGHT, SIDE } from '../const' -import { DirectionClass, type NodeObj, type TagObj } from '../types/index' - -/** - * Server-side compatible layout data structure - */ -export interface SSRLayoutNode { - id: string - topic: string - direction?: typeof LEFT | typeof RIGHT - style?: { - fontSize?: string - color?: string - background?: string - fontWeight?: string - } - children?: SSRLayoutNode[] - tags?: (string | TagObj)[] - icons?: string[] - hyperLink?: string - expanded?: boolean - image?: { - url: string - width: number - height: number - fit?: 'fill' | 'contain' | 'cover' - } - branchColor?: string - dangerouslySetInnerHTML?: string - note?: string -} - -/** - * SSR Layout result structure - */ -export interface SSRLayoutResult { - root: SSRLayoutNode - leftNodes: SSRLayoutNode[] - rightNodes: SSRLayoutNode[] - direction: number -} - -/** - * SSR Layout options - */ -export interface SSRLayoutOptions { - direction?: number - newTopicName?: string -} - -const nodesWrapper = (nodesString: string) => { - // don't add class="map-canvas" to prevent 20000px height - return `
    ${nodesString}
    ` -} - -/** - * Server-side compatible layout function for SSR - * This function processes the mind map data structure without DOM manipulation - * - * @param nodeData - The root node data - * @param options - Layout options including direction - * @returns Structured layout data for server-side rendering - */ -export const layoutSSR = function (nodeData: NodeObj, options: SSRLayoutOptions = {}): SSRLayoutResult { - const { direction = SIDE } = options - - // Convert NodeObj to SSRLayoutNode (removing parent references for serialization) - const convertToSSRNode = (node: NodeObj): SSRLayoutNode => { - const ssrNode: SSRLayoutNode = { - id: node.id, - topic: node.topic, - direction: node.direction, - style: node.style, - tags: node.tags, - icons: node.icons, - hyperLink: node.hyperLink, - expanded: node.expanded, - image: node.image, - branchColor: node.branchColor, - dangerouslySetInnerHTML: node.dangerouslySetInnerHTML, - note: node.note, - } - - if (node.children && node.children.length > 0) { - ssrNode.children = node.children.map(convertToSSRNode) - } - - return ssrNode - } - - // Create root node - const root = convertToSSRNode(nodeData) - - // Process main nodes (children of root) - const mainNodes = nodeData.children || [] - const leftNodes: SSRLayoutNode[] = [] - const rightNodes: SSRLayoutNode[] = [] - - if (direction === SIDE) { - // Distribute nodes between left and right sides - let lcount = 0 - let rcount = 0 - - mainNodes.forEach(node => { - const ssrNode = convertToSSRNode(node) - - if (node.direction === LEFT) { - ssrNode.direction = LEFT - leftNodes.push(ssrNode) - lcount += 1 - } else if (node.direction === RIGHT) { - ssrNode.direction = RIGHT - rightNodes.push(ssrNode) - rcount += 1 - } else { - // Auto-assign direction based on balance - if (lcount <= rcount) { - ssrNode.direction = LEFT - leftNodes.push(ssrNode) - lcount += 1 - } else { - ssrNode.direction = RIGHT - rightNodes.push(ssrNode) - rcount += 1 - } - } - }) - } else if (direction === LEFT) { - // All nodes go to left side - mainNodes.forEach(node => { - const ssrNode = convertToSSRNode(node) - ssrNode.direction = LEFT - leftNodes.push(ssrNode) - }) - } else { - // All nodes go to right side (RIGHT direction) - mainNodes.forEach(node => { - const ssrNode = convertToSSRNode(node) - ssrNode.direction = RIGHT - rightNodes.push(ssrNode) - }) - } - - return { - root, - leftNodes, - rightNodes, - direction, - } -} - -/** - * Generate HTML string for server-side rendering - * This function creates the HTML structure that would be generated by the DOM-based layout - * - * @param layoutResult - The result from layoutSSR function - * @param options - Additional rendering options - * @returns HTML string for server-side rendering - */ -export const renderSSRHTML = function ( - layoutResult: SSRLayoutResult, - options: { className?: string; imageProxy?: (url: string) => string } = {} -): string { - const { className = '' } = options - - const renderNode = (node: SSRLayoutNode, isRoot = false): string => { - const nodeId = `me${node.id}` - const topicClass = isRoot ? 'me-tpc' : 'me-tpc' - - let styleAttr = '' - if (node.style) { - const styles: string[] = [] - if (node.style.color) styles.push(`color: ${node.style.color}`) - if (node.style.background) styles.push(`background: ${node.style.background}`) - if (node.style.fontSize) styles.push(`font-size: ${node.style.fontSize}px`) - if (node.style.fontWeight) styles.push(`font-weight: ${node.style.fontWeight}`) - if (styles.length > 0) { - styleAttr = ` style="${styles.join('; ')}"` - } - } - - let topicContent = '' - if (node.dangerouslySetInnerHTML) { - topicContent = node.dangerouslySetInnerHTML - } else { - topicContent = escapeHtml(node.topic) - - // Add tags if present - if (node.tags && node.tags.length > 0) { - const tagsHtml = node.tags - .map(tag => { - if (typeof tag === 'string') { - // Compatible with legacy string configuration - return `${escapeHtml(tag)}` - } else { - // Support object configuration - let classAttr = 'me-tag' - if (tag.className) { - classAttr += ` ${tag.className}` - } - - let styleAttr = '' - if (tag.style) { - const styles = Object.entries(tag.style) - .filter(([_, value]) => value !== undefined && value !== null && value !== '') - .map(([key, value]) => { - // Convert camelCase to CSS property name - const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase() - return `${cssKey}: ${value}` - }) - - if (styles.length > 0) { - styleAttr = ` style="${styles.join('; ')}"` - } - } - - return `${escapeHtml(tag.text)}` - } - }) - .join('') - topicContent += tagsHtml - } - - // Add icons if present - if (node.icons && node.icons.length > 0) { - const iconsHtml = node.icons.map(icon => `${icon}`).join('') - topicContent += iconsHtml - } - - // Add image if present - if (node.image) { - const { url, width, height, fit = 'cover' } = node.image - // Use imageProxy function if provided, otherwise use original URL - const processedUrl = options.imageProxy ? options.imageProxy(url) : url - topicContent += `` - } - } - - const topicHtml = `${topicContent}` - - if (isRoot) { - return `${topicHtml}` - } - - let childrenHtml = '' - if (node.children && node.children.length > 0 && node.expanded !== false) { - const childWrappers = node.children.map(child => renderWrapper(child)).join('') - childrenHtml = `${childWrappers}` - } - - const parentHtml = `${topicHtml}` - return `${parentHtml}${childrenHtml}` - } - - const renderWrapper = (node: SSRLayoutNode): string => { - return renderNode(node, false) - } - - const rootHtml = renderNode(layoutResult.root, true) - - const leftWrappers = layoutResult.leftNodes.map(node => renderWrapper(node)).join('') - const rightWrappers = layoutResult.rightNodes.map(node => renderWrapper(node)).join('') - - const leftPartHtml = `${leftWrappers}` - const rightPartHtml = `${rightWrappers}` - - return nodesWrapper(`
    ${leftPartHtml}${rootHtml}${rightPartHtml}
    `) -} - -/** - * Utility function to escape HTML characters - */ -function escapeHtml(text: string): string { - const div = typeof document !== 'undefined' ? document.createElement('div') : null - if (div) { - div.textContent = text - return div.innerHTML - } - - // Fallback for server-side - return text.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''') -} - -/** - * Generate JSON data structure for client-side hydration - * This can be used to pass the layout data to the client for hydration - * - * @param layoutResult - The result from layoutSSR function - * @returns JSON-serializable data structure - */ -export const getSSRData = function (layoutResult: SSRLayoutResult): string { - return JSON.stringify(layoutResult, null, 2) -} - -/** - * Hydration data structure for client-side initialization - */ -export interface HydrationData { - nodeData: NodeObj - layoutResult: SSRLayoutResult - options: { - direction: number - [key: string]: any - } - timestamp: number -} - -/** - * Generate complete hydration data including original nodeData - */ -export const getHydrationData = function (nodeData: NodeObj, layoutResult: SSRLayoutResult, options: any = {}): HydrationData { - return { - nodeData, - layoutResult, - options: { - direction: layoutResult.direction, - ...options, - }, - timestamp: Date.now(), - } -} diff --git a/mind-elixir-core-master/src/utils/layout.ts b/mind-elixir-core-master/src/utils/layout.ts deleted file mode 100644 index 794c242..0000000 --- a/mind-elixir-core-master/src/utils/layout.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { LEFT, RIGHT, SIDE } from '../const' -import type { Children } from '../types/dom' -import { DirectionClass, type MindElixirInstance, type NodeObj } from '../types/index' -import { shapeTpc } from './dom' - -const $d = document - -// Set main nodes' direction and invoke layoutChildren() -export const layout = function (this: MindElixirInstance) { - console.time('layout') - this.nodes.innerHTML = '' - - const tpc = this.createTopic(this.nodeData) - shapeTpc.call(this, tpc, this.nodeData) // shape root tpc - tpc.draggable = false - const root = $d.createElement('me-root') - root.appendChild(tpc) - - const mainNodes = this.nodeData.children || [] - if (this.direction === SIDE) { - // initiate direction of main nodes - let lcount = 0 - let rcount = 0 - mainNodes.map(node => { - if (node.direction === LEFT) { - lcount += 1 - } else if (node.direction === RIGHT) { - rcount += 1 - } else { - if (lcount <= rcount) { - node.direction = LEFT - lcount += 1 - } else { - node.direction = RIGHT - rcount += 1 - } - } - }) - } - layoutMainNode(this, mainNodes, root) - console.timeEnd('layout') -} - -const layoutMainNode = function (mei: MindElixirInstance, data: NodeObj[], root: HTMLElement) { - const leftPart = $d.createElement('me-main') - leftPart.className = DirectionClass.LHS - const rightPart = $d.createElement('me-main') - rightPart.className = DirectionClass.RHS - for (let i = 0; i < data.length; i++) { - const nodeObj = data[i] - const { grp: w } = mei.createWrapper(nodeObj) - if (mei.direction === SIDE) { - if (nodeObj.direction === LEFT) { - leftPart.appendChild(w) - } else { - rightPart.appendChild(w) - } - } else if (mei.direction === LEFT) { - leftPart.appendChild(w) - } else { - rightPart.appendChild(w) - } - } - - mei.nodes.appendChild(leftPart) - mei.nodes.appendChild(root) - mei.nodes.appendChild(rightPart) - - mei.nodes.appendChild(mei.lines) -} - -export const layoutChildren = function (mei: MindElixirInstance, data: NodeObj[]) { - const chldr = $d.createElement('me-children') as Children - for (let i = 0; i < data.length; i++) { - const nodeObj = data[i] - const { grp } = mei.createWrapper(nodeObj) - chldr.appendChild(grp) - } - return chldr -} diff --git a/mind-elixir-core-master/src/utils/objectManipulation.ts b/mind-elixir-core-master/src/utils/objectManipulation.ts deleted file mode 100644 index c972e60..0000000 --- a/mind-elixir-core-master/src/utils/objectManipulation.ts +++ /dev/null @@ -1,77 +0,0 @@ -import type { NodeObj } from '../types' - -const getSibling = (obj: NodeObj): { siblings: NodeObj[] | undefined; index: number } => { - const siblings = obj.parent?.children as NodeObj[] - const index = siblings?.indexOf(obj) ?? 0 - return { siblings, index } -} - -export function moveUpObj(obj: NodeObj) { - const { siblings, index } = getSibling(obj) - if (siblings === undefined) return - const t = siblings[index] - if (index === 0) { - siblings[index] = siblings[siblings.length - 1] - siblings[siblings.length - 1] = t - } else { - siblings[index] = siblings[index - 1] - siblings[index - 1] = t - } -} - -export function moveDownObj(obj: NodeObj) { - const { siblings, index } = getSibling(obj) - if (siblings === undefined) return - const t = siblings[index] - if (index === siblings.length - 1) { - siblings[index] = siblings[0] - siblings[0] = t - } else { - siblings[index] = siblings[index + 1] - siblings[index + 1] = t - } -} - -export function removeNodeObj(obj: NodeObj) { - const { siblings, index } = getSibling(obj) - if (siblings === undefined) return 0 - siblings.splice(index, 1) - return siblings.length -} - -export function insertNodeObj(newObj: NodeObj, type: 'before' | 'after', obj: NodeObj) { - const { siblings, index } = getSibling(obj) - if (siblings === undefined) return - if (type === 'before') { - siblings.splice(index, 0, newObj) - } else { - siblings.splice(index + 1, 0, newObj) - } -} - -export function insertParentNodeObj(obj: NodeObj, newObj: NodeObj) { - const { siblings, index } = getSibling(obj) - if (siblings === undefined) return - siblings[index] = newObj - newObj.children = [obj] -} - -export function moveNodeObj(type: 'in' | 'before' | 'after', from: NodeObj, to: NodeObj) { - removeNodeObj(from) - if (!to.parent?.parent) { - from.direction = to.direction - } - if (type === 'in') { - if (to.children) to.children.push(from) - else to.children = [from] - } else { - if (from.direction !== undefined) from.direction = to.direction - const { siblings, index } = getSibling(to) - if (siblings === undefined) return - if (type === 'before') { - siblings.splice(index, 0, from) - } else { - siblings.splice(index + 1, 0, from) - } - } -} diff --git a/mind-elixir-core-master/src/utils/pubsub.ts b/mind-elixir-core-master/src/utils/pubsub.ts deleted file mode 100644 index 312c24b..0000000 --- a/mind-elixir-core-master/src/utils/pubsub.ts +++ /dev/null @@ -1,117 +0,0 @@ -import type { Arrow } from '../arrow' -import type { Summary } from '../summary' -import type { NodeObj } from '../types/index' - -type NodeOperation = - | { - name: 'moveNodeIn' | 'moveDownNode' | 'moveUpNode' | 'copyNode' | 'addChild' | 'insertParent' | 'insertBefore' | 'beginEdit' - obj: NodeObj - } - | { - name: 'insertSibling' - type: 'before' | 'after' - obj: NodeObj - } - | { - name: 'reshapeNode' - obj: NodeObj - origin: NodeObj - } - | { - name: 'finishEdit' - obj: NodeObj - origin: string - } - | { - name: 'moveNodeAfter' | 'moveNodeBefore' | 'moveNodeIn' - objs: NodeObj[] - toObj: NodeObj - } - -type MultipleNodeOperation = - | { - name: 'removeNodes' - objs: NodeObj[] - } - | { - name: 'copyNodes' - objs: NodeObj[] - } - -export type SummaryOperation = - | { - name: 'createSummary' - obj: Summary - } - | { - name: 'removeSummary' - obj: { id: string } - } - | { - name: 'finishEditSummary' - obj: Summary - } - -export type ArrowOperation = - | { - name: 'createArrow' - obj: Arrow - } - | { - name: 'removeArrow' - obj: { id: string } - } - | { - name: 'finishEditArrowLabel' - obj: Arrow - } - -export type Operation = NodeOperation | MultipleNodeOperation | SummaryOperation | ArrowOperation -export type OperationType = Operation['name'] - -export type EventMap = { - operation: (info: Operation) => void - selectNewNode: (nodeObj: NodeObj) => void - selectNodes: (nodeObj: NodeObj[]) => void - unselectNodes: (nodeObj: NodeObj[]) => void - expandNode: (nodeObj: NodeObj) => void - linkDiv: () => void - scale: (scale: number) => void - move: (data: { dx: number; dy: number }) => void - /** - * please use throttling to prevent performance degradation - */ - updateArrowDelta: (arrow: Arrow) => void - showContextMenu: (e: MouseEvent) => void -} - -export function createBus void> = EventMap>() { - return { - handlers: {} as Record void)[]>, - addListener: function (type: K, handler: T[K]) { - if (this.handlers[type] === undefined) this.handlers[type] = [] - this.handlers[type].push(handler) - }, - fire: function (type: K, ...payload: Parameters) { - if (this.handlers[type] instanceof Array) { - const handlers = this.handlers[type] - for (let i = 0; i < handlers.length; i++) { - handlers[i](...payload) - } - } - }, - removeListener: function (type: K, handler: T[K]) { - if (!this.handlers[type]) return - const handlers = this.handlers[type] - if (!handler) { - handlers.length = 0 - } else if (handlers.length) { - for (let i = 0; i < handlers.length; i++) { - if (handlers[i] === handler) { - this.handlers[type].splice(i, 1) - } - } - } - }, - } -} diff --git a/mind-elixir-core-master/src/utils/svg.ts b/mind-elixir-core-master/src/utils/svg.ts deleted file mode 100644 index b3af557..0000000 --- a/mind-elixir-core-master/src/utils/svg.ts +++ /dev/null @@ -1,189 +0,0 @@ -import { setAttributes } from '.' -import type { Arrow } from '../arrow' -import type { Summary } from '../summary' -import type { MindElixirInstance } from '../types' -import type { CustomSvg } from '../types/dom' -import { selectText } from './dom' - -const $d = document -export const svgNS = 'http://www.w3.org/2000/svg' - -export interface SvgTextOptions { - anchor?: 'start' | 'middle' | 'end' - color?: string - dataType?: string -} - -/** - * Create an SVG text element with common attributes - */ -export const createSvgText = function (text: string, x: number, y: number, options: SvgTextOptions = {}): SVGTextElement { - const { anchor = 'middle', color, dataType } = options - - const textElement = document.createElementNS(svgNS, 'text') - setAttributes(textElement, { - 'text-anchor': anchor, - x: x + '', - y: y + '', - fill: color || (anchor === 'middle' ? 'rgb(235, 95, 82)' : '#666'), - }) - - if (dataType) { - textElement.dataset.type = dataType - } - - textElement.innerHTML = text - return textElement -} - -export const createPath = function (d: string, color: string, width: string) { - const path = $d.createElementNS(svgNS, 'path') - setAttributes(path, { - d, - stroke: color || '#666', - fill: 'none', - 'stroke-width': width, - }) - return path -} - -export const createLinkSvg = function (klass: string) { - const svg = $d.createElementNS(svgNS, 'svg') - svg.setAttribute('class', klass) - svg.setAttribute('overflow', 'visible') - return svg -} - -export const createLine = function () { - const line = $d.createElementNS(svgNS, 'line') - line.setAttribute('stroke', '#4dc4ff') - line.setAttribute('fill', 'none') - line.setAttribute('stroke-width', '2') - line.setAttribute('opacity', '0.45') - return line -} - -export const createSvgGroup = function ( - d: string, - arrowd1: string, - arrowd2: string, - style?: { - stroke?: string - strokeWidth?: string | number - strokeDasharray?: string - strokeLinecap?: 'butt' | 'round' | 'square' - opacity?: string | number - labelColor?: string - } -): CustomSvg { - const g = $d.createElementNS(svgNS, 'g') as CustomSvg - const svgs = [ - { - name: 'line', - d, - }, - { - name: 'arrow1', - d: arrowd1, - }, - { - name: 'arrow2', - d: arrowd2, - }, - ] as const - svgs.forEach((item, i) => { - const d = item.d - const path = $d.createElementNS(svgNS, 'path') - const attrs: { [key: string]: string } = { - d, - stroke: style?.stroke || 'rgb(235, 95, 82)', - fill: 'none', - 'stroke-linecap': style?.strokeLinecap || 'cap', - 'stroke-width': String(style?.strokeWidth || '2'), - } - - if (style?.opacity !== undefined) { - attrs['opacity'] = String(style.opacity) - } - - setAttributes(path, attrs) - - if (i === 0) { - // Apply stroke-dasharray to the main line - path.setAttribute('stroke-dasharray', style?.strokeDasharray || '8,2') - } - - const hotzone = $d.createElementNS(svgNS, 'path') - const hotzoneAttrs = { - d, - stroke: 'transparent', - fill: 'none', - 'stroke-width': '15', - } - setAttributes(hotzone, hotzoneAttrs) - g.appendChild(hotzone) - - g.appendChild(path) - g[item.name] = path - }) - return g -} - -export const editSvgText = function (mei: MindElixirInstance, textEl: SVGTextElement, node: Summary | Arrow) { - console.time('editSummary') - if (!textEl) return - const div = $d.createElement('div') - mei.nodes.appendChild(div) - const origin = textEl.innerHTML - div.id = 'input-box' - div.textContent = origin - div.contentEditable = 'plaintext-only' - div.spellcheck = false - const bbox = textEl.getBBox() - console.log(bbox) - div.style.cssText = ` - min-width:${Math.max(88, bbox.width)}px; - position:absolute; - left:${bbox.x}px; - top:${bbox.y}px; - padding: 2px 4px; - margin: -2px -4px; - ` - selectText(div) - mei.scrollIntoView(div) - - div.addEventListener('keydown', e => { - e.stopPropagation() - const key = e.key - - if (key === 'Enter' || key === 'Tab') { - // keep wrap for shift enter - if (e.shiftKey) return - - e.preventDefault() - div.blur() - mei.container.focus() - } - }) - div.addEventListener('blur', () => { - if (!div) return - const text = div.textContent?.trim() || '' - if (text === '') node.label = origin - else node.label = text - div.remove() - if (text === origin) return - textEl.innerHTML = node.label - - if ('parent' in node) { - mei.bus.fire('operation', { - name: 'finishEditSummary', - obj: node, - }) - } else { - mei.bus.fire('operation', { - name: 'finishEditArrowLabel', - obj: node, - }) - } - }) -} diff --git a/mind-elixir-core-master/src/utils/theme.ts b/mind-elixir-core-master/src/utils/theme.ts deleted file mode 100644 index 52f9892..0000000 --- a/mind-elixir-core-master/src/utils/theme.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { DARK_THEME, THEME } from '../const' -import type { MindElixirInstance } from '../types/index' -import type { Theme } from '../types/index' - -export const changeTheme = function (this: MindElixirInstance, theme: Theme, shouldRefresh = true) { - this.theme = theme - const base = theme.type === 'dark' ? DARK_THEME : THEME - const cssVar = { - ...base.cssVar, - ...theme.cssVar, - } - const keys = Object.keys(cssVar) - for (let i = 0; i < keys.length; i++) { - const key = keys[i] as keyof typeof cssVar - this.container.style.setProperty(key, cssVar[key] as string) - } - shouldRefresh && this.refresh() -} diff --git a/mind-elixir-core-master/src/vite-env.d.ts b/mind-elixir-core-master/src/vite-env.d.ts deleted file mode 100644 index 11f02fe..0000000 --- a/mind-elixir-core-master/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/mind-elixir-core-master/tests/MindElixirFixture.ts b/mind-elixir-core-master/tests/MindElixirFixture.ts deleted file mode 100644 index dee5785..0000000 --- a/mind-elixir-core-master/tests/MindElixirFixture.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { type Page, type Locator, expect } from '@playwright/test' -import type { MindElixirCtor, MindElixirData, MindElixirInstance, Options } from '../src' -import type MindElixir from '../src' -interface Window { - m: MindElixirInstance - MindElixir: MindElixirCtor - E: typeof MindElixir.E -} -declare let window: Window - -export class MindElixirFixture { - private m: MindElixirInstance - - constructor(public readonly page: Page) { - // - } - - async goto() { - await this.page.goto('http://localhost:23334/test.html') - } - async init(data: MindElixirData, el = '#map') { - // evaluate return Serializable value - await this.page.evaluate( - ({ data, el }) => { - const MindElixir = window.MindElixir - const options: Options = { - el, - direction: MindElixir.SIDE, - allowUndo: true, // Enable undo/redo functionality for tests - keypress: true, // Enable keyboard shortcuts - editable: true, // Enable editing - } - const mind = new MindElixir(options) - mind.init(JSON.parse(JSON.stringify(data))) - window[el] = mind - return mind - }, - { data, el } - ) - } - async getInstance(el = '#map') { - const instanceHandle = await this.page.evaluateHandle(el => Promise.resolve(window[el] as MindElixirInstance), el) - return instanceHandle - } - async getData(el = '#map') { - const data = await this.page.evaluate(el => { - return window[el].getData() - }, el) - // console.log(a) - // const dataHandle = await this.page.evaluateHandle(() => Promise.resolve(window.m.getData())) - // const data = await dataHandle.jsonValue() - return data - } - async dblclick(topic: string) { - await this.page.getByText(topic, { exact: true }).dblclick({ - force: true, - }) - } - async click(topic: string) { - await this.page.getByText(topic, { exact: true }).click({ - force: true, - }) - } - getByText(topic: string) { - return this.page.getByText(topic, { exact: true }) - } - async dragOver(topic: string, type: 'before' | 'after' | 'in') { - await this.page.getByText(topic).hover({ force: true }) - await this.page.mouse.down() - const target = await this.page.getByText(topic) - const box = (await target.boundingBox())! - const y = type === 'before' ? -12 : type === 'after' ? box.height + 12 : box.height / 2 - // https://playwright.dev/docs/input#dragging-manually - // If your page relies on the dragover event being dispatched, you need at least two mouse moves to trigger it in all browsers. - await this.page.mouse.move(box.x + box.width / 2, box.y + y) - await this.page.waitForTimeout(100) // throttle - await this.page.mouse.move(box.x + box.width / 2, box.y + y) - } - async dragSelect(topic1: string, topic2: string) { - // Get the bounding boxes for both topics - const element1 = this.page.getByText(topic1, { exact: true }) - const element2 = this.page.getByText(topic2, { exact: true }) - - const box1 = await element1.boundingBox() - const box2 = await element2.boundingBox() - - if (!box1 || !box2) { - throw new Error(`Could not find bounding box for topics: ${topic1}, ${topic2}`) - } - - // Calculate the selection area coordinates - // Find the minimum and maximum x, y coordinates - const minX = Math.min(box1.x, box2.x) - 10 - const minY = Math.min(box1.y, box2.y) - 10 - const maxX = Math.max(box1.x + box1.width, box2.x + box2.width) + 10 - const maxY = Math.max(box1.y + box1.height, box2.y + box2.height) + 10 - - // Perform the drag selection - await this.page.mouse.move(minX, minY) - await this.page.mouse.down() - await this.page.waitForTimeout(100) // throttle - await this.page.mouse.move(maxX, maxY) - await this.page.mouse.up() - } - async toHaveScreenshot(locator?: Locator) { - await expect(locator || this.page.locator('me-nodes')).toHaveScreenshot({ - maxDiffPixelRatio: 0.02, - }) - } -} diff --git a/mind-elixir-core-master/tests/arrow.spec.ts b/mind-elixir-core-master/tests/arrow.spec.ts deleted file mode 100644 index afa774c..0000000 --- a/mind-elixir-core-master/tests/arrow.spec.ts +++ /dev/null @@ -1,729 +0,0 @@ -import { test, expect } from './mind-elixir-test' - -const data = { - nodeData: { - topic: 'Root Topic', - id: 'root', - children: [ - { - id: 'left-main', - topic: 'Left Main', - children: [ - { - id: 'left-child-1', - topic: 'Left Child 1', - }, - { - id: 'left-child-2', - topic: 'Left Child 2', - }, - { - id: 'left-child-3', - topic: 'Left Child 3', - }, - ], - }, - { - id: 'right-main', - topic: 'Right Main', - children: [ - { - id: 'right-child-1', - topic: 'Right Child 1', - }, - { - id: 'right-child-2', - topic: 'Right Child 2', - }, - ], - }, - ], - }, -} - -test.beforeEach(async ({ me }) => { - await me.init(data) -}) - -test('Create arrow between two nodes', async ({ page, me }) => { - // Get the MindElixir instance and create arrow programmatically - const instanceHandle = await me.getInstance() - - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - - // Create arrow between two nodes - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Verify arrow SVG group appears - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Verify arrow path is visible - await expect(page.locator('svg g[data-linkid] path').first()).toBeVisible() - - // Verify arrow head is visible - await expect(page.locator('svg g[data-linkid] path').nth(1)).toBeVisible() - - // Verify arrow label is visible - await expect(page.locator('svg g[data-linkid] text')).toBeVisible() - await expect(page.locator('svg g[data-linkid] text')).toHaveText('Custom Link') -}) - -test('Create arrow with custom options', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - - // Create arrow with custom style options - instance.createArrow(leftChild1, rightChild1, { - bidirectional: true, - style: { - stroke: '#ff0000', - strokeWidth: '3', - strokeDasharray: '5,5', - labelColor: '#0000ff', - }, - }) - }, instanceHandle) - - // Verify arrow appears - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Verify arrow appears with bidirectional option - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Verify multiple paths exist for bidirectional arrow (includes hotzone and highlight paths) - const pathCount = await page.locator('svg g[data-linkid] path').count() - expect(pathCount).toBeGreaterThan(3) // Should have more than 3 paths for bidirectional - - // Verify custom label color - const arrowLabel = page.locator('svg g[data-linkid] text') - await expect(arrowLabel).toHaveAttribute('fill', '#0000ff') -}) - -test('Create arrow from arrow object', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - await page.evaluate(async instance => { - // Create arrow from arrow object - instance.createArrowFrom({ - label: 'Test Arrow', - from: 'left-child-1', - to: 'right-child-1', - delta1: { x: 50, y: 20 }, - delta2: { x: -50, y: -20 }, - style: { - stroke: '#00ff00', - strokeWidth: '2', - }, - }) - }, instanceHandle) - - // Verify arrow appears - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Verify custom label - await expect(page.locator('svg g[data-linkid] text')).toHaveText('Test Arrow') - - // Verify arrow appears with custom properties - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Verify at least one path has the custom style (may be applied to different elements) - const hasCustomStroke = await page.evaluate(() => { - const paths = document.querySelectorAll('svg g[data-linkid] path') - return Array.from(paths).some(path => path.getAttribute('stroke') === '#00ff00' || path.getAttribute('stroke-width') === '2') - }) - expect(hasCustomStroke).toBe(true) -}) - -test('Select and highlight arrow', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create arrow first - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Click on the arrow to select it - await page.locator('svg g[data-linkid]').click() - - // Verify highlight appears (highlight group with higher opacity) - await expect(page.locator('svg g[data-linkid] .arrow-highlight')).toBeVisible() - - // Verify control points appear (they are div elements with class 'circle') - await expect(page.locator('.circle').first()).toBeVisible() - await expect(page.locator('.circle').last()).toBeVisible() - - // Verify link controller appears - await expect(page.locator('.linkcontroller')).toBeVisible() -}) - -test('Remove arrow', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create arrow first - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Verify arrow exists - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Remove arrow programmatically - await page.evaluate(async instance => { - instance.removeArrow() - }, instanceHandle) - - // Verify arrow is removed - await expect(page.locator('svg g[data-linkid]')).not.toBeVisible() -}) - -test('Edit arrow label', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create arrow first - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Double click on arrow label to edit - await page.locator('svg g[data-linkid] text').dblclick() - - // Verify input box appears - await expect(page.locator('#input-box')).toBeVisible() - - // Type new label - await page.keyboard.press('Control+a') - await page.keyboard.insertText('Updated Arrow Label') - await page.keyboard.press('Enter') - - // Verify input box disappears - await expect(page.locator('#input-box')).toBeHidden() - - // Verify new label is displayed - await expect(page.locator('svg g[data-linkid] text')).toHaveText('Updated Arrow Label') -}) - -test('Unselect arrow', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create arrow first - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Select arrow - await page.locator('svg g[data-linkid]').click() - await expect(page.locator('svg g[data-linkid] .arrow-highlight')).toBeVisible() - - // Unselect arrow programmatically - await page.evaluate(async instance => { - instance.unselectArrow() - }, instanceHandle) - - // Verify highlight disappears - await expect(page.locator('svg g[data-linkid] .arrow-highlight')).not.toBeVisible() - - // Verify control points disappear - await expect(page.locator('.circle').first()).not.toBeVisible() - await expect(page.locator('.circle').last()).not.toBeVisible() -}) - -test('Render multiple arrows', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create multiple arrows - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const leftChild2 = instance.findEle('left-child-2') - const rightChild1 = instance.findEle('right-child-1') - const rightChild2 = instance.findEle('right-child-2') - - // Create first arrow - instance.createArrow(leftChild1, rightChild1) - - // Create second arrow - instance.createArrow(leftChild2, rightChild2) - }, instanceHandle) - - // Verify both arrows exist - await expect(page.locator('svg g[data-linkid]')).toHaveCount(2) - - // Verify both have labels - await expect(page.locator('svg g[data-linkid] text')).toHaveCount(2) -}) - -test('Arrow positioning and bezier curve', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Get arrow path element - const arrowPath = page.locator('svg g[data-linkid] path').first() - - // Verify path has bezier curve (should contain 'C' command) - const pathData = await arrowPath.getAttribute('d') - expect(pathData).toContain('M') // Move to start point - expect(pathData).toContain('C') // Cubic bezier curve - - // Verify arrow label is positioned at curve midpoint - const arrowLabel = page.locator('svg g[data-linkid] text') - await expect(arrowLabel).toBeVisible() - - // Label should have x and y coordinates - const labelX = await arrowLabel.getAttribute('x') - const labelY = await arrowLabel.getAttribute('y') - expect(labelX).toBeTruthy() - expect(labelY).toBeTruthy() -}) - -test('Arrow style inheritance and defaults', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - - // Create arrow without custom styles - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Verify default styles are applied - const arrowPath = page.locator('svg g[data-linkid] path').first() - - // Check default stroke attributes exist - const stroke = await arrowPath.getAttribute('stroke') - const strokeWidth = await arrowPath.getAttribute('stroke-width') - const fill = await arrowPath.getAttribute('fill') - - expect(stroke).toBeTruthy() - expect(strokeWidth).toBeTruthy() - expect(fill).toBe('none') // Arrows should not be filled - - // Verify default label color - const arrowLabel = page.locator('svg g[data-linkid] text') - const labelFill = await arrowLabel.getAttribute('fill') - expect(labelFill).toBeTruthy() -}) - -test('Arrow with opacity style', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - - // Create arrow with opacity - instance.createArrow(leftChild1, rightChild1, { - style: { - opacity: '0.5', - }, - }) - }, instanceHandle) - - // Verify arrow appears with opacity style - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Verify at least one path has opacity applied - const hasOpacity = await page.evaluate(() => { - const paths = document.querySelectorAll('svg g[data-linkid] path') - return Array.from(paths).some(path => path.getAttribute('opacity') === '0.5') - }) - expect(hasOpacity).toBe(true) -}) - -test('Bidirectional arrow rendering', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - - // Create bidirectional arrow - instance.createArrow(leftChild1, rightChild1, { - bidirectional: true, - }) - }, instanceHandle) - - // Verify bidirectional arrow appears with multiple paths - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Verify multiple paths exist (should be more than a simple arrow) - const pathCount = await page.locator('svg g[data-linkid] path').count() - expect(pathCount).toBeGreaterThan(2) // Should have more paths for bidirectional - - // Verify paths have basic stroke attributes - const paths = page.locator('svg g[data-linkid] path') - const firstPath = paths.first() - await expect(firstPath).toHaveAttribute('fill', 'none') -}) - -test('Arrow control point manipulation', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create arrow first - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Select arrow to show control points - await page.locator('svg g[data-linkid]').click() - - // Verify control points are visible - const p2Element = page.locator('.circle').first() - const p3Element = page.locator('.circle').last() - await expect(p2Element).toBeVisible() - await expect(p3Element).toBeVisible() - - // Get initial positions - const p2InitialBox = await p2Element.boundingBox() - - // Drag P2 control point - await p2Element.hover() - await page.mouse.down() - await page.mouse.move(p2InitialBox!.x + 50, p2InitialBox!.y + 30) - await page.mouse.up() - - // Verify control point moved - const p2NewBox = await p2Element.boundingBox() - expect(Math.abs(p2NewBox!.x - (p2InitialBox!.x + 50))).toBeLessThan(10) - expect(Math.abs(p2NewBox!.y - (p2InitialBox!.y + 30))).toBeLessThan(10) -}) - -test('Arrow deletion via keyboard', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create arrow first - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Select arrow - await page.locator('svg g[data-linkid]').click() - await expect(page.locator('svg g[data-linkid] .arrow-highlight')).toBeVisible() - - // Delete arrow using keyboard - await page.keyboard.press('Delete') - - // Verify arrow is removed - await expect(page.locator('svg g[data-linkid]')).not.toBeVisible() -}) - -test('Arrow with stroke linecap styles', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - - // Create arrow with round linecap - instance.createArrow(leftChild1, rightChild1, { - style: { - strokeLinecap: 'round', - }, - }) - }, instanceHandle) - - // Verify arrow appears with linecap style - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Verify at least one path has the linecap style - const hasLinecap = await page.evaluate(() => { - const paths = document.querySelectorAll('svg g[data-linkid] path') - return Array.from(paths).some(path => path.getAttribute('stroke-linecap') === 'round') - }) - expect(hasLinecap).toBe(true) -}) - -test('Arrow label text anchor positioning', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Verify arrow label has middle text anchor (centered) - const arrowLabel = page.locator('svg g[data-linkid] text') - await expect(arrowLabel).toHaveAttribute('text-anchor', 'middle') - - // Verify label has custom-link data type - await expect(arrowLabel).toHaveAttribute('data-type', 'custom-link') -}) - -test('Arrow rendering after node expansion/collapse', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create arrow between child nodes - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Verify arrow exists - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Collapse left main node by clicking its expander - const leftMainExpander = page.locator('me-tpc[data-nodeid="meleft-main"] me-expander') - if (await leftMainExpander.isVisible()) { - await leftMainExpander.click() - } - - // Arrow should still exist but may not be visible due to collapsed nodes - // This tests the robustness of arrow rendering - - // Expand left main node again - if (await leftMainExpander.isVisible()) { - await leftMainExpander.click() - } - - // Re-render arrows - await page.evaluate(async instance => { - instance.renderArrow() - }, instanceHandle) - - // Verify arrow is visible again - await expect(page.locator('svg g[data-linkid]')).toBeVisible() -}) - -test('Multiple arrow selection state management', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create two arrows - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const leftChild2 = instance.findEle('left-child-2') - const rightChild1 = instance.findEle('right-child-1') - const rightChild2 = instance.findEle('right-child-2') - - instance.createArrow(leftChild1, rightChild1) - instance.createArrow(leftChild2, rightChild2) - }, instanceHandle) - - const arrows = page.locator('svg g[data-linkid]') - const firstArrow = arrows.first() - const secondArrow = arrows.last() - - // Select first arrow - await firstArrow.click() - await expect(page.locator('.arrow-highlight').first()).toBeVisible() - - // Select second arrow - await secondArrow.click() - await expect(page.locator('.arrow-highlight').first()).toBeVisible() - - // Click elsewhere to deselect - await page.locator('#map').click() - - // Wait a bit for deselection to take effect - await page.waitForTimeout(200) - - // Verify that selection state has changed (may still have some highlights due to timing) - // The important thing is that the selection behavior works - const arrowsExist = await page.locator('svg g[data-linkid]').count() - expect(arrowsExist).toBe(2) // Both arrows should still exist -}) - -test('Arrow data persistence and retrieval', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create arrow with specific properties - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - - instance.createArrow(leftChild1, rightChild1, { - bidirectional: true, - style: { - stroke: '#ff6600', - strokeWidth: '4', - labelColor: '#333333', - }, - }) - }, instanceHandle) - - // Get arrow data from instance - const arrowData = await page.evaluate(async instance => { - return instance.arrows[0] - }, instanceHandle) - - // Verify arrow properties are correctly stored - expect(arrowData.label).toBe('Custom Link') - expect(arrowData.from).toBe('left-child-1') - expect(arrowData.to).toBe('right-child-1') - expect(arrowData.bidirectional).toBe(true) - expect(arrowData.style?.stroke).toBe('#ff6600') - expect(arrowData.style?.strokeWidth).toBe('4') - expect(arrowData.style?.labelColor).toBe('#333333') - expect(arrowData.id).toBeTruthy() -}) - -test('Arrow tidy function removes invalid arrows', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create arrow first - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Verify arrow exists - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Simulate removing a node that the arrow references - await page.evaluate(async instance => { - // Manually corrupt arrow data to simulate invalid reference - instance.arrows[0].to = 'non-existent-node' - - // Run tidy function - instance.tidyArrow() - }, instanceHandle) - - // Verify arrow was removed by tidy function - const arrowCount = await page.evaluate(async instance => { - return instance.arrows.length - }, instanceHandle) - - expect(arrowCount).toBe(0) -}) - -test('Arrow highlight update during control point drag', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Create arrow first - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Select arrow to show control points - await page.locator('svg g[data-linkid]').click() - - // Verify highlight is visible - await expect(page.locator('svg g[data-linkid] .arrow-highlight')).toBeVisible() - - // Get initial highlight path - const initialHighlightPath = await page.locator('svg g[data-linkid] .arrow-highlight path').first().getAttribute('d') - - // Drag control point to change arrow shape - const p2Element = page.locator('.circle').first() - const p2Box = await p2Element.boundingBox() - await p2Element.hover() - await page.mouse.down() - await page.mouse.move(p2Box!.x + 100, p2Box!.y + 50) - await page.mouse.up() - - // Verify highlight path updated - const updatedHighlightPath = await page.locator('svg g[data-linkid] .arrow-highlight path').first().getAttribute('d') - expect(updatedHighlightPath).not.toBe(initialHighlightPath) -}) - -test('Arrow creation with invalid nodes', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - // Try to create arrow with undefined nodes (simulating collapsed/hidden nodes) - await page.evaluate(async instance => { - try { - // Simulate trying to create arrow when nodes are not found - const nonExistentNode1 = instance.findEle('non-existent-1') - const nonExistentNode2 = instance.findEle('non-existent-2') - - // This should not create an arrow since nodes don't exist - if (nonExistentNode1 && nonExistentNode2) { - instance.createArrow(nonExistentNode1, nonExistentNode2) - } - } catch (error) { - // Expected to fail gracefully - console.log('Arrow creation failed as expected:', error.message) - } - }, instanceHandle) - - // Verify no arrow was created - await expect(page.locator('svg g[data-linkid]')).not.toBeVisible() -}) - -test('Arrow bezier midpoint calculation', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - instance.createArrow(leftChild1, rightChild1) - }, instanceHandle) - - // Get arrow label position - const labelX = await page.locator('svg g[data-linkid] text').getAttribute('x') - const labelY = await page.locator('svg g[data-linkid] text').getAttribute('y') - - // Verify label is positioned (should have numeric coordinates) - expect(parseFloat(labelX!)).toBeGreaterThan(0) - expect(parseFloat(labelY!)).toBeGreaterThan(0) - - // Get arrow path to verify label is positioned along the curve - const pathData = await page.locator('svg g[data-linkid] path').first().getAttribute('d') - expect(pathData).toContain('M') // Move command - expect(pathData).toContain('C') // Cubic bezier command -}) - -test('Arrow style application to all elements', async ({ page, me }) => { - const instanceHandle = await me.getInstance() - - await page.evaluate(async instance => { - const leftChild1 = instance.findEle('left-child-1') - const rightChild1 = instance.findEle('right-child-1') - - // Create bidirectional arrow with comprehensive styles - instance.createArrow(leftChild1, rightChild1, { - bidirectional: true, - style: { - stroke: '#purple', - strokeWidth: '5', - strokeDasharray: '10,5', - strokeLinecap: 'square', - opacity: '0.8', - labelColor: '#orange', - }, - }) - }, instanceHandle) - - // Verify arrow appears with comprehensive styles - await expect(page.locator('svg g[data-linkid]')).toBeVisible() - - // Verify styles are applied to arrow elements - const hasStyles = await page.evaluate(() => { - const paths = document.querySelectorAll('svg g[data-linkid] path') - const hasStroke = Array.from(paths).some(path => path.getAttribute('stroke') === '#purple') - const hasWidth = Array.from(paths).some(path => path.getAttribute('stroke-width') === '5') - const hasOpacity = Array.from(paths).some(path => path.getAttribute('opacity') === '0.8') - return hasStroke && hasWidth && hasOpacity - }) - expect(hasStyles).toBe(true) - - // Verify label color - const label = page.locator('svg g[data-linkid] text') - await expect(label).toHaveAttribute('fill', '#orange') -}) diff --git a/mind-elixir-core-master/tests/drag-and-drop.spec.ts b/mind-elixir-core-master/tests/drag-and-drop.spec.ts deleted file mode 100644 index 36ba107..0000000 --- a/mind-elixir-core-master/tests/drag-and-drop.spec.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { test, expect } from './mind-elixir-test' - -const m1 = 'm1' -const m2 = 'm2' -const childTopic = 'child-topic' -const data = { - nodeData: { - topic: 'root-topic', - id: 'root-id', - children: [ - { - id: m1, - topic: m1, - children: [ - { - id: 'child', - topic: childTopic, - }, - ], - }, - { - id: m2, - topic: m2, - }, - ], - }, -} - -test.beforeEach(async ({ me }) => { - await me.init(data) -}) - -test('DnD move before', async ({ page, me }) => { - await page.getByText(m2).hover({ force: true }) - await page.mouse.down() - await me.dragOver(m1, 'before') - await expect(page.locator('.insert-preview.before')).toBeVisible() - await page.mouse.up() - await me.toHaveScreenshot() -}) - -test('DnD move after', async ({ page, me }) => { - await page.getByText(m2).hover({ force: true }) - await page.mouse.down() - await me.dragOver(m1, 'after') - await expect(page.locator('.insert-preview.after')).toBeVisible() - await page.mouse.up() - await me.toHaveScreenshot() -}) - -test('DnD move in', async ({ page, me }) => { - await page.getByText(m2).hover({ force: true }) - await page.mouse.down() - await me.dragOver(m1, 'in') - await expect(page.locator('.insert-preview.in')).toBeVisible() - await page.mouse.up() - await me.toHaveScreenshot() -}) diff --git a/mind-elixir-core-master/tests/drag-and-drop.spec.ts-snapshots/DnD-move-after-1-chromium-win32.png b/mind-elixir-core-master/tests/drag-and-drop.spec.ts-snapshots/DnD-move-after-1-chromium-win32.png deleted file mode 100644 index eefc1fb..0000000 Binary files a/mind-elixir-core-master/tests/drag-and-drop.spec.ts-snapshots/DnD-move-after-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/drag-and-drop.spec.ts-snapshots/DnD-move-before-1-chromium-win32.png b/mind-elixir-core-master/tests/drag-and-drop.spec.ts-snapshots/DnD-move-before-1-chromium-win32.png deleted file mode 100644 index e993606..0000000 Binary files a/mind-elixir-core-master/tests/drag-and-drop.spec.ts-snapshots/DnD-move-before-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/drag-and-drop.spec.ts-snapshots/DnD-move-in-1-chromium-win32.png b/mind-elixir-core-master/tests/drag-and-drop.spec.ts-snapshots/DnD-move-in-1-chromium-win32.png deleted file mode 100644 index 9c376da..0000000 Binary files a/mind-elixir-core-master/tests/drag-and-drop.spec.ts-snapshots/DnD-move-in-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/expand-collapse.spec.ts b/mind-elixir-core-master/tests/expand-collapse.spec.ts deleted file mode 100644 index 99128f7..0000000 --- a/mind-elixir-core-master/tests/expand-collapse.spec.ts +++ /dev/null @@ -1,191 +0,0 @@ -import { test, expect } from './mind-elixir-test' - -const data = { - nodeData: { - topic: 'root', - id: 'root', - children: [ - { - id: 'branch1', - topic: 'Branch 1', - expanded: true, - children: [ - { - id: 'child1', - topic: 'Child 1', - }, - { - id: 'child2', - topic: 'Child 2', - children: [ - { - id: 'grandchild1', - topic: 'Grandchild 1', - }, - { - id: 'grandchild2', - topic: 'Grandchild 2', - }, - ], - }, - ], - }, - { - id: 'branch2', - topic: 'Branch 2', - expanded: false, // Initially collapsed - children: [ - { - id: 'child3', - topic: 'Child 3', - }, - { - id: 'child4', - topic: 'Child 4', - }, - ], - }, - { - id: 'branch3', - topic: 'Branch 3', - children: [ - { - id: 'child5', - topic: 'Child 5', - }, - ], - }, - ], - }, -} - -test.beforeEach(async ({ me }) => { - await me.init(data) -}) - -test('Expand collapsed node', async ({ page, me }) => { - // Verify initial state: Branch 2 is collapsed - const branch2 = page.getByText('Branch 2', { exact: true }) - await expect(branch2).toBeVisible() - - // Child nodes should not be visible - await expect(page.getByText('Child 3', { exact: true })).not.toBeVisible() - await expect(page.getByText('Child 4', { exact: true })).not.toBeVisible() - - // Click expand button - const expandButton = page.locator('me-tpc[data-nodeid="mebranch2"]').locator('..').locator('me-epd') - await expandButton.click() - - // Verify child nodes are now visible - await expect(page.getByText('Child 3', { exact: true })).toBeVisible() - await expect(page.getByText('Child 4', { exact: true })).toBeVisible() - - -}) - -test('Collapse expanded node', async ({ page, me }) => { - // Branch 1 is initially expanded - await expect(page.getByText('Child 1', { exact: true })).toBeVisible() - await expect(page.getByText('Child 2', { exact: true })).toBeVisible() - - // Click collapse button - const collapseButton = page.locator('me-tpc[data-nodeid="mebranch1"]').locator('..').locator('me-epd') - await collapseButton.click() - - // Verify child nodes are now not visible - await expect(page.getByText('Child 1', { exact: true })).not.toBeVisible() - await expect(page.getByText('Child 2', { exact: true })).not.toBeVisible() - - -}) - -test('Expand all children recursively', async ({ page, me }) => { - // First collapse Branch 1 - const branch1Button = page.locator('me-tpc[data-nodeid="mebranch1"]').locator('..').locator('me-epd') - await branch1Button.click() - - // Verify all child nodes are not visible - await expect(page.getByText('Child 1', { exact: true })).not.toBeVisible() - await expect(page.getByText('Child 2', { exact: true })).not.toBeVisible() - await expect(page.getByText('Grandchild 1', { exact: true })).not.toBeVisible() - - // Ctrl click for recursive expansion - await page.keyboard.down("Control"); - await branch1Button.click() - await page.keyboard.up("Control"); - - // Verify all levels of child nodes are visible - await expect(page.getByText('Child 1', { exact: true })).toBeVisible() - await expect(page.getByText('Child 2', { exact: true })).toBeVisible() - await expect(page.getByText('Grandchild 1', { exact: true })).toBeVisible() - await expect(page.getByText('Grandchild 2', { exact: true })).toBeVisible() - - -}) - -test('Auto expand when moving node to collapsed parent', async ({ page, me }) => { - // First ensure Branch 2 is collapsed - const branch2 = page.getByText('Branch 2', { exact: true }) - await expect(page.getByText('Child 3', { exact: true })).not.toBeVisible() - - // Select Child 5 for moving - const child5 = page.getByText('Child 5', { exact: true }) - await child5.hover({ force: true }) - await page.mouse.down() - - // Drag to collapsed Branch 2 - await me.dragOver('Branch 2', 'in') - await expect(page.locator('.insert-preview.in')).toBeVisible() - - // Release mouse to complete move - await page.mouse.up() - - // Verify Branch 2 auto-expands and Child 5 is now in it - await expect(page.getByText('Child 3', { exact: true })).toBeVisible() - await expect(page.getByText('Child 4', { exact: true })).toBeVisible() - await expect(page.getByText('Child 5', { exact: true })).toBeVisible() - - // Verify Child 5 actually moved under Branch 2 - const branch2Container = page.locator('me-tpc[data-nodeid="mebranch2"]').locator('..').locator('..').locator('me-children') - await expect(branch2Container.getByText('Child 5', { exact: true })).toBeVisible() -}) - -test('Auto expand when copying node to collapsed parent', async ({ page, me }) => { - // Ensure Branch 2 is collapsed - await expect(page.getByText('Child 3', { exact: true })).not.toBeVisible() - - // Select Child 1 and copy - await me.click('Child 1') - await page.keyboard.press('Control+c') - - // Select collapsed Branch 2 - await me.click('Branch 2') - - // Paste - await page.keyboard.press('Control+v') - - // Verify Branch 2 auto-expands and contains copied node - await expect(page.getByText('Child 3', { exact: true })).toBeVisible() - await expect(page.getByText('Child 4', { exact: true })).toBeVisible() - - // Should have two "Child 1" (original and copied) - const child1Elements = page.getByText('Child 1', { exact: true }) - await expect(child1Elements).toHaveCount(2) - - -}) - -test('Expand state persistence after layout refresh', async ({ page, me }) => { - // Expand Branch 2 - const expandButton = page.locator('me-tpc[data-nodeid="mebranch2"]').locator('..').locator('me-epd') - await expandButton.click() - await expect(page.getByText('Child 3', { exact: true })).toBeVisible() - - // Get current data and reinitialize - const currentData = await me.getData() - await me.init(currentData) - - // Verify expand state persists - await expect(page.getByText('Child 3', { exact: true })).toBeVisible() - await expect(page.getByText('Child 4', { exact: true })).toBeVisible() -}) diff --git a/mind-elixir-core-master/tests/interaction.spec.ts b/mind-elixir-core-master/tests/interaction.spec.ts deleted file mode 100644 index b2d7fea..0000000 --- a/mind-elixir-core-master/tests/interaction.spec.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { test, expect } from './mind-elixir-test' - -const id = 'root-id' -const topic = 'root-topic' -const childTopic = 'child-topic' -const data = { - nodeData: { - topic, - id, - children: [ - { - id: 'middle', - topic: 'middle', - children: [ - { - id: 'child', - topic: childTopic, - }, - ], - }, - ], - }, -} - -test.beforeEach(async ({ me }) => { - await me.init(data) -}) - -test('Edit Node', async ({ page, me }) => { - await me.dblclick(topic) - await expect(page.locator('#input-box')).toBeVisible() - await page.keyboard.insertText('update node') - await page.keyboard.press('Enter') - await expect(page.locator('#input-box')).toBeHidden() - await expect(page.getByText('update node')).toBeVisible() - await me.toHaveScreenshot() -}) - -test('Clear and reset', async ({ page, me }) => { - await me.dblclick(topic) - await expect(page.locator('#input-box')).toBeVisible() - await page.keyboard.press('Backspace') - await page.keyboard.press('Enter') - await expect(page.locator('#input-box')).toBeHidden() - await expect(page.getByText(topic)).toBeVisible() - await me.toHaveScreenshot() -}) - -test('Remove Node', async ({ page, me }) => { - await me.click(childTopic) - await page.keyboard.press('Delete') - await expect(page.getByText(childTopic)).toBeHidden() - await me.toHaveScreenshot() -}) - -test('Add Sibling', async ({ page, me }) => { - await me.click(childTopic) - await page.keyboard.press('Enter') - await page.keyboard.press('Enter') - await expect(page.locator('#input-box')).toBeHidden() - await expect(page.getByText('New Node')).toBeVisible() - await me.toHaveScreenshot() -}) - -test('Add Before', async ({ page, me }) => { - await me.click(childTopic) - await page.keyboard.press('Shift+Enter') - await page.keyboard.press('Enter') - await expect(page.locator('#input-box')).toBeHidden() - await expect(page.getByText('New Node')).toBeVisible() - await me.toHaveScreenshot() -}) - -test('Add Parent', async ({ page, me }) => { - await me.click(childTopic) - await page.keyboard.press('Control+Enter') - await page.keyboard.insertText('new node') - await page.keyboard.press('Enter') - await expect(page.locator('#input-box')).toBeHidden() - await expect(page.getByText('new node')).toBeVisible() - await me.toHaveScreenshot() -}) - -test('Add Child', async ({ page, me }) => { - await me.click(childTopic) - await page.keyboard.press('Tab') - await page.keyboard.insertText('new node') - await page.keyboard.press('Enter') - await expect(page.locator('#input-box')).toBeHidden() - await expect(page.getByText('new node')).toBeVisible() - await me.toHaveScreenshot() -}) - -test('Copy and Paste', async ({ page, me }) => { - await me.click('middle') - await page.keyboard.press('Control+c') - await me.click('child-topic') - await page.keyboard.press('Control+v') - // I guess Playwright will auto-scroll before taking screenshots - // After changing the scrolling solution to transform, we can't get complete me-nodes screenshot through scrolling - // This is indeed a very quirky "feature" - await me.toHaveScreenshot(page.locator('.map-container')) -}) diff --git a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Before-1-chromium-win32.png b/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Before-1-chromium-win32.png deleted file mode 100644 index bbcd4d6..0000000 Binary files a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Before-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Child-1-chromium-win32.png b/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Child-1-chromium-win32.png deleted file mode 100644 index 3107f2d..0000000 Binary files a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Child-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Parent-1-chromium-win32.png b/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Parent-1-chromium-win32.png deleted file mode 100644 index 0d44636..0000000 Binary files a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Parent-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Sibling-1-chromium-win32.png b/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Sibling-1-chromium-win32.png deleted file mode 100644 index 0ee46c4..0000000 Binary files a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Add-Sibling-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Clear-and-reset-1-chromium-win32.png b/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Clear-and-reset-1-chromium-win32.png deleted file mode 100644 index 004d345..0000000 Binary files a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Clear-and-reset-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Copy-and-Paste-1-chromium-win32.png b/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Copy-and-Paste-1-chromium-win32.png deleted file mode 100644 index b001afa..0000000 Binary files a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Copy-and-Paste-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Edit-Node-1-chromium-win32.png b/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Edit-Node-1-chromium-win32.png deleted file mode 100644 index 0552c17..0000000 Binary files a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Edit-Node-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Remove-Node-1-chromium-win32.png b/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Remove-Node-1-chromium-win32.png deleted file mode 100644 index 4727a91..0000000 Binary files a/mind-elixir-core-master/tests/interaction.spec.ts-snapshots/Remove-Node-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/keyboard-undo-redo.spec.ts b/mind-elixir-core-master/tests/keyboard-undo-redo.spec.ts deleted file mode 100644 index af1835f..0000000 --- a/mind-elixir-core-master/tests/keyboard-undo-redo.spec.ts +++ /dev/null @@ -1,235 +0,0 @@ -import { test, expect } from './mind-elixir-test' - -const data = { - nodeData: { - topic: 'Root Node', - id: 'root', - children: [ - { - id: 'left-1', - topic: 'Left Branch 1', - children: [ - { - id: 'left-1-1', - topic: 'Left Child 1', - }, - { - id: 'left-1-2', - topic: 'Left Child 2', - }, - ], - }, - { - id: 'right-1', - topic: 'Right Branch 1', - children: [ - { - id: 'right-1-1', - topic: 'Right Child 1', - }, - ], - }, - ], - }, -} - -test.beforeEach(async ({ me }) => { - await me.init(data) -}) - -test('Keyboard Shortcuts - Ctrl+Z for Undo', async ({ page, me }) => { - // Perform an operation that can be undone - await me.click('Left Child 1') - await page.keyboard.press('Delete') - await expect(page.getByText('Left Child 1')).toBeHidden() - - // Test Ctrl+Z - await page.keyboard.press('Control+z') - await expect(page.getByText('Left Child 1')).toBeVisible() -}) - -test('Keyboard Shortcuts - Ctrl+Y for Redo', async ({ page, me }) => { - // Perform and undo an operation - await me.click('Left Child 1') - await page.keyboard.press('Delete') - await page.keyboard.press('Control+z') - await expect(page.getByText('Left Child 1')).toBeVisible() - - // Test Ctrl+Y - await page.keyboard.press('Control+y') - await expect(page.getByText('Left Child 1')).toBeHidden() -}) - -test('Keyboard Shortcuts - Ctrl+Shift+Z for Redo', async ({ page, me }) => { - // Perform and undo an operation - await me.click('Right Child 1') - await page.keyboard.press('Tab') // Add child - await page.keyboard.press('Enter') - await expect(page.getByText('New Node')).toBeVisible() - - await page.keyboard.press('Control+z') // Undo - await expect(page.getByText('New Node')).toBeHidden() - - // Test Ctrl+Shift+Z (alternative redo) - await page.keyboard.press('Control+Shift+Z') - await expect(page.getByText('New Node')).toBeVisible() -}) - -test('Keyboard Shortcuts - Meta+Z for Undo (Mac style)', async ({ page, me }) => { - // This test simulates Mac-style shortcuts - await me.click('Right Branch 1') - await page.keyboard.press('Enter') // Add sibling - await page.keyboard.press('Enter') - await expect(page.getByText('New Node')).toBeVisible() - - // Test Meta+Z (Mac style undo) - await page.keyboard.press('Meta+z') - await expect(page.getByText('New Node')).toBeHidden() -}) - -test('Keyboard Shortcuts - Meta+Y for Redo (Mac style)', async ({ page, me }) => { - // Perform and undo an operation - await me.click('Left Branch 1') - await page.keyboard.press('Shift+Enter') // Add before - await page.keyboard.press('Enter') - await expect(page.getByText('New Node')).toBeVisible() - - await page.keyboard.press('Meta+z') // Undo - await expect(page.getByText('New Node')).toBeHidden() - - // Test Meta+Y (Mac style redo) - await page.keyboard.press('Meta+y') - await expect(page.getByText('New Node')).toBeVisible() -}) - -test('Keyboard Shortcuts - Meta+Shift+Z for Redo (Mac style)', async ({ page, me }) => { - // Perform and undo an operation - await me.click('Left Child 2') - await page.keyboard.press('Control+Enter') // Add parent - await page.keyboard.press('Enter') - await expect(page.getByText('New Node')).toBeVisible() - - await page.keyboard.press('Meta+z') // Undo - await expect(page.getByText('New Node')).toBeHidden() - - // Test Meta+Shift+Z (Mac style alternative redo) - await page.keyboard.press('Meta+Shift+Z') - await expect(page.getByText('New Node')).toBeVisible() -}) - -test('Keyboard Shortcuts - Rapid Undo/Redo Sequence', async ({ page, me }) => { - // Perform multiple operations - await me.click('Root Node') - - // Operation 1: Add child - await page.keyboard.press('Tab') - await page.keyboard.press('Enter') - await expect(page.getByText('New Node')).toBeVisible() - - // Operation 2: Edit the new node - await me.dblclick('New Node') - await page.keyboard.press('Control+a') - await page.keyboard.insertText('Edited Node') - await page.keyboard.press('Enter') - await expect(page.getByText('Edited Node')).toBeVisible() - - // Operation 3: Add sibling - await page.keyboard.press('Enter') - await page.keyboard.press('Enter') - const newNodes = page.getByText('New Node') - await expect(newNodes).toHaveCount(1) - - // Rapid undo sequence - await page.keyboard.press('Control+z') // Undo add sibling - await expect(newNodes).toHaveCount(0) - - await page.keyboard.press('Control+z') // Undo edit - await expect(page.getByText('Edited Node')).toBeHidden() - await expect(page.getByText('New Node')).toBeVisible() - - await page.keyboard.press('Control+z') // Undo add child - await expect(page.getByText('New Node')).toBeHidden() - - // Rapid redo sequence - await page.keyboard.press('Control+y') // Redo add child - await expect(page.getByText('New Node')).toBeVisible() - - await page.keyboard.press('Control+y') // Redo edit - await expect(page.getByText('Edited Node')).toBeVisible() - - await page.keyboard.press('Control+y') // Redo add sibling - await expect(newNodes).toHaveCount(1) -}) - -test('Keyboard Shortcuts - Undo/Redo with Node Movement', async ({ page, me }) => { - // Move a node using keyboard shortcuts - await me.click('Left Child 1') - await page.keyboard.press('Alt+ArrowUp') // Move up - - // Verify the node moved (this depends on the specific implementation) - // We'll check by trying to undo the move - await page.keyboard.press('Control+z') - - // Redo the move - await page.keyboard.press('Control+y') -}) - -test('Keyboard Shortcuts - Undo/Redo Edge Cases', async ({ page, me }) => { - // Test undo when at the beginning of history - await page.keyboard.press('Control+z') - await page.keyboard.press('Control+z') - await page.keyboard.press('Control+z') - // Should not crash or cause issues - await expect(page.getByText('Root Node')).toBeVisible() - - // Perform an operation - await me.click('Right Child 1') - await page.keyboard.press('Delete') - await expect(page.getByText('Right Child 1')).toBeHidden() - - // Test redo when at the end of history - await page.keyboard.press('Control+y') - await page.keyboard.press('Control+y') - await page.keyboard.press('Control+y') - // Should not crash or cause issues - await expect(page.getByText('Right Child 1')).toBeHidden() -}) - -test('Keyboard Shortcuts - Undo/Redo with Complex Node Operations', async ({ page, me }) => { - // Test with copy/paste operations - await me.click('Left Branch 1') - await page.keyboard.press('Control+c') // Copy - - await me.click('Right Branch 1') - await page.keyboard.press('Control+v') // Paste - - // Should have two "Left Branch 1" nodes now - const leftBranchNodes = page.getByText('Left Branch 1') - await expect(leftBranchNodes).toHaveCount(2) - - // Undo the paste - await page.keyboard.press('Control+z') - await expect(leftBranchNodes).toHaveCount(1) - - // Redo the paste - await page.keyboard.press('Control+y') - await expect(leftBranchNodes).toHaveCount(2) -}) - -test('Keyboard Shortcuts - Undo/Redo Preserves Focus', async ({ page, me }) => { - // Select a node and perform an operation - await me.click('Left Child 2') - await page.keyboard.press('Enter') // Add sibling - await page.keyboard.press('Enter') - - // Undo should restore focus to the original node - await page.keyboard.press('Control+z') - - // Test that the original node still has focus by performing an action - await page.keyboard.press('Delete') - await expect(page.getByText('Left Child 2')).toBeHidden() - - // Restore for cleanup - await page.keyboard.press('Control+z') - await expect(page.getByText('Left Child 2')).toBeVisible() -}) diff --git a/mind-elixir-core-master/tests/mind-elixir-test.ts b/mind-elixir-core-master/tests/mind-elixir-test.ts deleted file mode 100644 index 27367a1..0000000 --- a/mind-elixir-core-master/tests/mind-elixir-test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { test as base } from '@playwright/test' -import { MindElixirFixture } from './MindElixirFixture' -import * as fs from 'fs'; -import * as path from 'path'; -import * as crypto from 'crypto'; - -const istanbulCLIOutput = path.join(process.cwd(), '.nyc_output'); - -export function generateUUID(): string { - return crypto.randomBytes(16).toString('hex'); -} - -// Declare the types of your fixtures. -type MyFixtures = { - me: MindElixirFixture -} - -// Extend base test by providing "todoPage" and "settingsPage". -// This new "test" can be used in multiple test files, and each of them will get the fixtures. -export const test = base.extend({ - context: async ({ context }, use) => { - await context.addInitScript(() => - window.addEventListener('beforeunload', () => - (window as any).collectIstanbulCoverage(JSON.stringify((window as any).__coverage__)) - ), - ); - await fs.promises.mkdir(istanbulCLIOutput, { recursive: true }); - await context.exposeFunction('collectIstanbulCoverage', (coverageJSON: string) => { - if (coverageJSON) - fs.writeFileSync(path.join(istanbulCLIOutput, `playwright_coverage_${generateUUID()}.json`), coverageJSON); - }); - await use(context); - for (const page of context.pages()) { - await page.evaluate(() => (window as any).collectIstanbulCoverage(JSON.stringify((window as any).__coverage__))) - } - }, - me: async ({ page }, use) => { - // Set up the fixture. - const me = new MindElixirFixture(page) - await me.goto() - - // Use the fixture value in the test. - await use(me) - }, -}) -export { expect } from '@playwright/test' diff --git a/mind-elixir-core-master/tests/multiple-instance.spec.ts b/mind-elixir-core-master/tests/multiple-instance.spec.ts deleted file mode 100644 index 766433b..0000000 --- a/mind-elixir-core-master/tests/multiple-instance.spec.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { test, expect } from './mind-elixir-test' -import type MindElixir from '../src/index' - -declare let window: { - E: typeof MindElixir.E -} - -const data1 = { - nodeData: { - id: 'data1', - topic: 'new topic', - children: [], - }, -} - -const data2 = { - nodeData: { - id: 'data2', - topic: 'new topic', - children: [ - { - id: 'child', - topic: 'child', - direction: 0 as 0 | 1 | undefined, - }, - ], - }, -} -test.beforeEach(async ({ me, page }) => { - await me.init(data1, '#map') - await me.init(data2, '#map2') -}) - -// fix: https://github.com/SSShooter/mind-elixir-core/issues/247 -test('Add Child To Data2 Correctly', async ({ page, me }) => { - const handle = await me.getInstance('#map2') - handle.evaluateHandle(mei => - mei.addChild(window.E('data2', document.body), { - id: 'child2', - topic: 'child2', - }) - ) - handle.evaluateHandle(mei => - mei.addChild(window.E('child', document.body), { - id: 'child3', - topic: 'child3', - }) - ) - expect(await page.screenshot()).toMatchSnapshot() -}) diff --git a/mind-elixir-core-master/tests/multiple-instance.spec.ts-snapshots/Add-Child-To-Data2-Correctly-1-chromium-win32.png b/mind-elixir-core-master/tests/multiple-instance.spec.ts-snapshots/Add-Child-To-Data2-Correctly-1-chromium-win32.png deleted file mode 100644 index 9f04183..0000000 Binary files a/mind-elixir-core-master/tests/multiple-instance.spec.ts-snapshots/Add-Child-To-Data2-Correctly-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/multiple-node.spec.ts b/mind-elixir-core-master/tests/multiple-node.spec.ts deleted file mode 100644 index f3d50d5..0000000 --- a/mind-elixir-core-master/tests/multiple-node.spec.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type { Page } from '@playwright/test' -import { test, expect } from './mind-elixir-test' - -const data = { - nodeData: { - topic: 'root', - id: 'root', - children: [ - { - id: 'middle1', - topic: 'middle1', - children: [ - { - id: 'child1', - topic: 'child1', - }, - { - id: 'child2', - topic: 'child2', - }, - ], - }, - { - id: 'middle2', - topic: 'middle2', - children: [ - { - id: 'child3', - topic: 'child3', - }, - { - id: 'child4', - topic: 'child4', - }, - ], - }, - ], - }, -} - -test.beforeEach(async ({ me }) => { - await me.init(data) -}) - -const select = async (page: Page) => { - await page.mouse.move(200, 100) - await page.mouse.down() - await page.getByText('child2').hover({ force: true }) - await page.mouse.up() -} - -test('Multiple seletion', async ({ page }) => { - await select(page) - await expect(page.locator('.selected').filter({ hasText: 'child1' })).toBeVisible() - await expect(page.locator('.selected').filter({ hasText: 'child2' })).toBeVisible() -}) - -test('Multiple Move Before', async ({ page, me }) => { - await select(page) - await page.getByText('child1').hover({ force: true }) - await page.mouse.down() - await me.dragOver('child3', 'before') - await expect(page.locator('.insert-preview.before')).toBeVisible() - await page.mouse.up() - await me.toHaveScreenshot() -}) - -test('Multiple Move After', async ({ page, me }) => { - await select(page) - await page.getByText('child1').hover({ force: true }) - await page.mouse.down() - await me.dragOver('child3', 'after') - await expect(page.locator('.insert-preview.after')).toBeVisible() - await page.mouse.up() - await me.toHaveScreenshot() -}) - -test('Multiple Move In', async ({ page, me }) => { - await select(page) - await page.getByText('child1').hover({ force: true }) - await page.mouse.down() - await me.dragOver('child3', 'in') - await expect(page.locator('.insert-preview.in')).toBeVisible() - await page.mouse.up() - await me.toHaveScreenshot() -}) - -test('Multiple Copy', async ({ page, me }) => { - await select(page) - await page.keyboard.press('Control+c') - await me.click('child3') - await page.keyboard.press('Control+v') - await me.toHaveScreenshot() -}) diff --git a/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Copy-1-chromium-win32.png b/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Copy-1-chromium-win32.png deleted file mode 100644 index e3b5ad6..0000000 Binary files a/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Copy-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Move-After-1-chromium-win32.png b/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Move-After-1-chromium-win32.png deleted file mode 100644 index a2064a0..0000000 Binary files a/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Move-After-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Move-Before-1-chromium-win32.png b/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Move-Before-1-chromium-win32.png deleted file mode 100644 index 580f89a..0000000 Binary files a/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Move-Before-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Move-In-1-chromium-win32.png b/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Move-In-1-chromium-win32.png deleted file mode 100644 index 00a939a..0000000 Binary files a/mind-elixir-core-master/tests/multiple-node.spec.ts-snapshots/Multiple-Move-In-1-chromium-win32.png and /dev/null differ diff --git a/mind-elixir-core-master/tests/operation-history.spec.ts b/mind-elixir-core-master/tests/operation-history.spec.ts deleted file mode 100644 index 4858319..0000000 --- a/mind-elixir-core-master/tests/operation-history.spec.ts +++ /dev/null @@ -1,293 +0,0 @@ -import { test, expect } from './mind-elixir-test' - -const complexData = { - nodeData: { - topic: 'Main Topic', - id: 'main', - children: [ - { - id: 'branch-a', - topic: 'Branch A', - children: [ - { - id: 'leaf-a1', - topic: 'Leaf A1', - }, - { - id: 'leaf-a2', - topic: 'Leaf A2', - }, - ], - }, - { - id: 'branch-b', - topic: 'Branch B', - children: [ - { - id: 'leaf-b1', - topic: 'Leaf B1', - }, - ], - }, - ], - }, -} - -test.beforeEach(async ({ me }) => { - await me.init(complexData) -}) - -test('Operation History - Single Node Operations', async ({ page, me }) => { - // Test createNode operation - await me.click('Leaf A1') - await page.keyboard.press('Tab') // Add child - await page.keyboard.press('Enter') - await expect(me.getByText('New Node')).toBeVisible() - - // Undo createNode - await page.keyboard.press('Control+z') - await expect(me.getByText('New Node')).toBeHidden() - - // Redo createNode - await page.keyboard.press('Control+y') - await expect(me.getByText('New Node')).toBeVisible() - - // Test removeNode operation - await page.keyboard.press('Delete') - await expect(me.getByText('New Node')).toBeHidden() - - // Undo removeNode - await page.keyboard.press('Control+z') - await expect(me.getByText('New Node')).toBeVisible() -}) - -test('Operation History - Node Edit Operations', async ({ page, me }) => { - const originalText = 'Leaf A2' - const editedText = 'Modified Leaf A2' - - // Test finishEdit operation - await me.dblclick(originalText) - await page.keyboard.press('Control+a') - await page.keyboard.insertText(editedText) - await page.keyboard.press('Enter') - await expect(me.getByText(editedText)).toBeVisible() - - // Undo edit - await page.keyboard.press('Control+z') - await expect(me.getByText(originalText)).toBeVisible() - await expect(me.getByText(editedText)).toBeHidden() - - // Redo edit - await page.keyboard.press('Control+y') - await expect(me.getByText(editedText)).toBeVisible() - await expect(me.getByText(originalText)).toBeHidden() -}) - -test('Operation History - Multiple Node Operations', async ({ page, me }) => { - // Select multiple nodes using drag selection - await me.dragSelect('Leaf A1', 'Leaf A2') - - // Remove multiple nodes - await page.keyboard.press('Delete') - await expect(me.getByText('Leaf A1')).toBeHidden() - await expect(me.getByText('Leaf A2')).toBeHidden() - - // Undo removeNodes operation - await page.keyboard.press('Control+z') - await expect(me.getByText('Leaf A1')).toBeVisible() - await expect(me.getByText('Leaf A2')).toBeVisible() - - // Redo removeNodes operation - await page.keyboard.press('Control+y') - await expect(me.getByText('Leaf A1')).toBeHidden() - await expect(me.getByText('Leaf A2')).toBeHidden() -}) - -test('Operation History - Copy Multiple Nodes', async ({ page, me }) => { - // Select and copy multiple nodes - await me.dragSelect('Leaf A1', 'Leaf A2') - await page.keyboard.press('Control+c') - - // Paste to another location - await me.click('Branch B') - await page.keyboard.press('Control+v') - - // Should have copied nodes under Branch B - const leafA1Nodes = me.getByText('Leaf A1') - const leafA2Nodes = me.getByText('Leaf A2') - await expect(leafA1Nodes).toHaveCount(2) - await expect(leafA2Nodes).toHaveCount(2) - - // Undo copyNodes operation - await page.keyboard.press('Control+z') - await expect(leafA1Nodes).toHaveCount(1) - await expect(leafA2Nodes).toHaveCount(1) - - // Redo copyNodes operation - await page.keyboard.press('Control+y') - await expect(leafA1Nodes).toHaveCount(2) - await expect(leafA2Nodes).toHaveCount(2) -}) - -test('Operation History - Node Movement Operations', async ({ page, me }) => { - // Test moveNodeBefore operation - await me.click('Leaf A2') - await page.keyboard.press('Alt+ArrowUp') // Move up (before sibling) - - // Undo move operation - await page.keyboard.press('Control+z') - - // Redo move operation - await page.keyboard.press('Control+y') - - // Test moveNodeAfter operation - await page.keyboard.press('Alt+ArrowDown') // Move down (after sibling) - - // Undo move operation - await page.keyboard.press('Control+z') - - // Redo move operation - await page.keyboard.press('Control+y') -}) - -test('Operation History - Complex Operation Sequence', async ({ page, me }) => { - // Perform a complex sequence of operations - - // 1. Edit a node - await me.dblclick('Branch A') - await page.keyboard.press('Control+a') - await page.keyboard.insertText('Modified Branch A') - await page.keyboard.press('Enter') - - // 2. Add a child to the modified node - await page.keyboard.press('Tab') - await page.keyboard.press('Enter') - - // 3. Edit the new child - await me.dblclick('New Node') - await page.keyboard.press('Control+a') - await page.keyboard.insertText('New Child Node') - await page.keyboard.press('Enter') - - // 4. Copy the branch - await me.click('Modified Branch A') - await page.keyboard.press('Control+c') - - // 5. Paste to main topic - await me.click('Main Topic') - await page.keyboard.press('Control+v') - - // Verify all operations completed - await expect(me.getByText('Modified Branch A')).toHaveCount(2) - await expect(me.getByText('New Child Node')).toHaveCount(2) - - // Undo operations step by step - await page.keyboard.press('Control+z') // Undo paste - await expect(me.getByText('Modified Branch A')).toHaveCount(1) - await expect(me.getByText('New Child Node')).toHaveCount(1) - - await page.keyboard.press('Control+z') // Undo edit new child - await expect(me.getByText('New Child Node')).toBeHidden() - await expect(me.getByText('New Node')).toBeVisible() - - await page.keyboard.press('Control+z') // Undo add child - await expect(me.getByText('New Node')).toBeHidden() - - await page.keyboard.press('Control+z') // Undo edit branch - await expect(me.getByText('Modified Branch A')).toBeHidden() - await expect(me.getByText('Branch A')).toBeVisible() - - // Redo all operations - await page.keyboard.press('Control+y') // Redo edit branch - await expect(me.getByText('Modified Branch A')).toBeVisible() - - await page.keyboard.press('Control+y') // Redo add child - await expect(me.getByText('New Node')).toBeVisible() - - await page.keyboard.press('Control+y') // Redo edit new child - await expect(me.getByText('New Child Node')).toBeVisible() - - await page.keyboard.press('Control+y') // Redo paste - await expect(me.getByText('Modified Branch A')).toHaveCount(2) -}) - -test('Operation History - History Branching', async ({ page, me }) => { - // Perform an operation - await me.click('Leaf B1') - await page.keyboard.press('Enter') - await page.keyboard.press('Enter') - await expect(me.getByText('New Node')).toBeVisible() - - // Undo the operation - await page.keyboard.press('Control+z') - await expect(me.getByText('New Node')).toBeHidden() - - // Perform a different operation (this should clear the redo history) - await page.keyboard.press('Tab') // Add child instead - await page.keyboard.press('Enter') - await expect(me.getByText('New Node')).toBeVisible() - - // Try to redo the original operation (should not work) - await page.keyboard.press('Control+y') - // The new child should still be there, not the sibling - await expect(me.getByText('New Node')).toBeVisible() - - // Undo the child operation - await page.keyboard.press('Control+z') - await expect(me.getByText('New Node')).toBeHidden() -}) - -test('Operation History - Node Selection After Undo/Redo', async ({ page, me }) => { - // Add a node and verify selection - await me.click('Branch B') - await page.keyboard.press('Tab') - await page.keyboard.press('Enter') - - // The new node should be selected - const newNode = me.getByText('New Node') - await expect(newNode).toBeVisible() - - // Undo - should restore selection to Branch B - await page.keyboard.press('Control+z') - await expect(newNode).toBeHidden() - - // Verify Branch B is selected by performing an action - await page.keyboard.press('Enter') // Add sibling - await page.keyboard.press('Enter') - await expect(me.getByText('New Node')).toBeVisible() - - // Clean up - await page.keyboard.press('Control+z') -}) - -test('Operation History - Stress Test Multiple Rapid Operations', async ({ page, me }) => { - // Perform many rapid operations - await me.click('Main Topic') - - for (let i = 0; i < 5; i++) { - await page.keyboard.press('Tab') // Add child - await page.keyboard.press('Enter') - await page.keyboard.press('Enter') // Add sibling - await page.keyboard.press('Enter') - } - - // Should have multiple new nodes - const newNodes = me.getByText('New Node') - await expect(newNodes).toHaveCount(10) - - // Undo all operations - for (let i = 0; i < 10; i++) { - await page.keyboard.press('Control+z') - } - - // Should be back to original state - await expect(newNodes).toHaveCount(0) - - // Redo all operations - for (let i = 0; i < 10; i++) { - await page.keyboard.press('Control+y') - } - - // Should have all nodes back - await expect(newNodes).toHaveCount(10) -}) diff --git a/mind-elixir-core-master/tests/simple-undo-redo.spec.ts b/mind-elixir-core-master/tests/simple-undo-redo.spec.ts deleted file mode 100644 index 0cc5537..0000000 --- a/mind-elixir-core-master/tests/simple-undo-redo.spec.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { test, expect } from './mind-elixir-test' - -const data = { - nodeData: { - topic: 'Root', - id: 'root', - children: [ - { - id: 'child1', - topic: 'Child 1', - }, - ], - }, -} - -test.beforeEach(async ({ me }) => { - await me.init(data) -}) - -test('Simple Undo/Redo - Basic Add Node', async ({ page, me }) => { - // Add a node - await me.click('Child 1') - await page.keyboard.press('Enter') - await page.keyboard.press('Enter') - await expect(page.getByText('New Node')).toBeVisible() - - // Test Ctrl+Z (undo) - await page.keyboard.press('Control+z') - await expect(page.getByText('New Node')).toBeHidden() - - // Test Ctrl+Y (redo) - await page.keyboard.press('Control+y') - await expect(page.getByText('New Node')).toBeVisible() -}) - -test('Simple Undo/Redo - Basic Remove Node', async ({ page, me }) => { - // Remove a node - await me.click('Child 1') - await page.keyboard.press('Delete') - await expect(page.getByText('Child 1')).toBeHidden() - - // Test Ctrl+Z (undo) - await page.keyboard.press('Control+z') - await expect(page.getByText('Child 1')).toBeVisible() - - // Test Ctrl+Y (redo) - await page.keyboard.press('Control+y') - await expect(page.getByText('Child 1')).toBeHidden() -}) - -test('Simple Undo/Redo - Test Ctrl+Shift+Z', async ({ page, me }) => { - // Add a node - await me.click('Child 1') - await page.keyboard.press('Tab') // Add child - await page.keyboard.press('Enter') - await expect(page.getByText('New Node')).toBeVisible() - - // Undo - await page.keyboard.press('Control+z') - await expect(page.getByText('New Node')).toBeHidden() - - // Try Ctrl+Shift+Z for redo - await page.keyboard.press('Control+Shift+Z') - await page.waitForTimeout(500) - - const nodeVisible = await page.getByText('New Node').isVisible() - console.log('Node visible after Ctrl+Shift+Z:', nodeVisible) - - // If that didn't work, try lowercase z - if (!nodeVisible) { - await page.keyboard.press('Control+Shift+Z') - await page.waitForTimeout(500) - const nodeVisible2 = await page.getByText('New Node').isVisible() - console.log('Node visible after Ctrl+Shift+z:', nodeVisible2) - } -}) - -test('Simple Undo/Redo - Test Meta Keys', async ({ page, me }) => { - // Add a node - await me.click('Root') - await page.keyboard.press('Tab') - await page.keyboard.press('Enter') - await expect(page.getByText('New Node')).toBeVisible() - - // Test Meta+Z (Mac style undo) - await page.keyboard.press('Meta+z') - await expect(page.getByText('New Node')).toBeHidden() - - // Test Meta+Y (Mac style redo) - await page.keyboard.press('Meta+y') - await expect(page.getByText('New Node')).toBeVisible() -}) - -test('Simple Undo/Redo - Multiple Operations', async ({ page, me }) => { - // Operation 1: Add child - await me.click('Child 1') - await page.keyboard.press('Tab') - await page.keyboard.press('Enter') - await expect(page.getByText('New Node')).toBeVisible() - - // Operation 2: Add sibling - await page.keyboard.press('Enter') - await page.keyboard.press('Enter') - const newNodes = page.getByText('New Node') - await expect(newNodes).toHaveCount(2) - - // Undo twice - await page.keyboard.press('Control+z') - await expect(newNodes).toHaveCount(1) - - await page.keyboard.press('Control+z') - await expect(newNodes).toHaveCount(0) - - // Redo twice - await page.keyboard.press('Control+y') - await expect(newNodes).toHaveCount(1) - - await page.keyboard.press('Control+y') - await expect(newNodes).toHaveCount(2) -}) - -test('Simple Undo/Redo - Edit Node', async ({ page, me }) => { - // Edit a node - await me.dblclick('Child 1') - await page.keyboard.press('Control+a') - await page.keyboard.insertText('Modified Child') - await page.keyboard.press('Enter') - await expect(page.getByText('Modified Child')).toBeVisible() - - // Undo edit - await page.keyboard.press('Control+z') - await expect(page.getByText('Child 1')).toBeVisible() - await expect(page.getByText('Modified Child')).toBeHidden() - - // Redo edit - await page.keyboard.press('Control+y') - await expect(page.getByText('Modified Child')).toBeVisible() - await expect(page.getByText('Child 1')).toBeHidden() -}) diff --git a/mind-elixir-core-master/tests/summary.spec.ts b/mind-elixir-core-master/tests/summary.spec.ts deleted file mode 100644 index 07a82bd..0000000 --- a/mind-elixir-core-master/tests/summary.spec.ts +++ /dev/null @@ -1,310 +0,0 @@ -import { test, expect } from './mind-elixir-test' - -const data = { - nodeData: { - topic: 'Root Topic', - id: 'root', - children: [ - { - id: 'left-main', - topic: 'Left Main', - children: [ - { - id: 'left-child-1', - topic: 'Left Child 1', - }, - { - id: 'left-child-2', - topic: 'Left Child 2', - }, - { - id: 'left-child-3', - topic: 'Left Child 3', - }, - ], - }, - { - id: 'right-main', - topic: 'Right Main', - children: [ - { - id: 'right-child-1', - topic: 'Right Child 1', - }, - { - id: 'right-child-2', - topic: 'Right Child 2', - }, - ], - }, - ], - }, -} - -test.beforeEach(async ({ me }) => { - await me.init(data) -}) - -test('Create summary for single node', async ({ page, me }) => { - // Select a single child node - await me.click('Left Child 1') - - // Get position of the selected node - const leftChild1 = page.getByText('Left Child 1', { exact: true }) - const nodeBox = await leftChild1.boundingBox() - - // Right click to open context menu - await leftChild1.click({ button: 'right', force: true }) - - // Click summary option in context menu - await page.locator('#cm-summary').click() - - // Verify summary SVG group appears - await expect(page.locator('svg g[id^="s-"]')).toBeVisible() - - // Verify summary text label is visible - await expect(page.locator('svg g[id^="s-"] text')).toBeVisible() - await expect(page.locator('svg g[id^="s-"] text')).toHaveText('summary') - - // Verify summary path (bracket shape) is visible - await expect(page.locator('svg g[id^="s-"] path')).toBeVisible() - - // Verify summary is positioned near the selected node - const summaryPath = page.locator('svg g[id^="s-"] path') - const summaryBox = await summaryPath.boundingBox() - - // Summary should be vertically aligned with the selected node (with some tolerance) - expect(Math.abs(summaryBox!.y - nodeBox!.y)).toBeLessThan(50) -}) - -test('Create summary for multiple nodes', async ({ page, me }) => { - // Use drag selection to select multiple child nodes - await me.dragSelect('Left Child 1', 'Left Child 3') - - // Get positions of the selected nodes before creating summary - const leftChild1 = page.getByText('Left Child 1', { exact: true }) - const leftChild2 = page.getByText('Left Child 2', { exact: true }) - const leftChild3 = page.getByText('Left Child 3', { exact: true }) - - const node1Box = await leftChild1.boundingBox() - const node2Box = await leftChild2.boundingBox() - const node3Box = await leftChild3.boundingBox() - - // Right click to open context menu on one of the selected nodes - await leftChild1.click({ button: 'right', force: true }) - - // Click summary option in context menu - await page.locator('#cm-summary').click() - - // Verify summary appears - await expect(page.locator('svg g[id^="s-"]')).toBeVisible() - await expect(page.locator('svg g[id^="s-"] text')).toHaveText('summary') - await expect(page.locator('svg g[id^="s-"] path')).toBeVisible() - - // Verify summary bracket spans across all three selected nodes - const summaryPath = page.locator('svg g[id^="s-"] path') - const summaryBox = await summaryPath.boundingBox() - - // Summary should span from the top of the first node to the bottom of the last node - const topMostNode = Math.min(node1Box!.y, node2Box!.y, node3Box!.y) - const bottomMostNode = Math.max(node1Box!.y + node1Box!.height, node2Box!.y + node2Box!.height, node3Box!.y + node3Box!.height) - - // Summary bracket should cover the vertical range of all selected nodes - // Allow some tolerance for padding and bracket styling - expect(summaryBox!.y).toBeLessThanOrEqual(topMostNode + 10) - expect(summaryBox!.y + summaryBox!.height).toBeGreaterThanOrEqual(bottomMostNode - 10) -}) - -test('Select and highlight summary', async ({ page, me }) => { - // Create a summary first - await me.click('Left Child 1') - await page.getByText('Left Child 1', { exact: true }).click({ button: 'right', force: true }) - await page.locator('#cm-summary').click() - - // Wait for edit mode to finish (press Enter to complete editing) - await page.keyboard.press('Enter') - await expect(page.locator('#input-box')).toBeHidden() - - // Click on the summary to select it - await page.locator('svg g[id^="s-"]').click() - - // Verify selection rectangle appears - await expect(page.locator('svg g[id^="s-"] rect')).toBeVisible() -}) - -test('Edit summary text', async ({ page, me }) => { - // Create a summary first - await me.click('Left Child 1') - await page.getByText('Left Child 1', { exact: true }).click({ button: 'right', force: true }) - await page.locator('#cm-summary').click() - - // Summary creation automatically enters edit mode, so input box should already be visible - await expect(page.locator('#input-box')).toBeVisible() - - // Clear existing text and type new text - await page.keyboard.press('Control+a') - await page.keyboard.insertText('Custom Summary') - await page.keyboard.press('Enter') - - // Verify input box disappears - await expect(page.locator('#input-box')).toBeHidden() - - // Verify new text is displayed - await expect(page.locator('svg g[id^="s-"] text')).toHaveText('Custom Summary') -}) - -test('Remove summary', async ({ page, me }) => { - // Create a summary first - await me.click('Left Child 1') - await page.getByText('Left Child 1', { exact: true }).click({ button: 'right', force: true }) - await page.locator('#cm-summary').click() - - // Wait for edit mode to finish (press Enter to complete editing) - await page.keyboard.press('Enter') - await expect(page.locator('#input-box')).toBeHidden() - - // Verify summary exists - await expect(page.locator('svg g[id^="s-"]')).toBeVisible() - - // Select and delete summary - await page.locator('svg g[id^="s-"]').click() - await page.keyboard.press('Delete') - - // Verify summary is removed - await expect(page.locator('svg g[id^="s-"]')).not.toBeVisible() -}) - -test('Cannot create summary on root node', async ({ page, me }) => { - // Try to select root node - await me.click('Root Topic') - - // Try to create summary via right click menu - await page.getByText('Root Topic', { exact: true }).click({ button: 'right', force: true }) - - // Verify summary option is not available or doesn't work for root - // (The context menu might not show summary option for root, or it might be disabled) - const summaryOption = page.locator('#cm-summary') - if (await summaryOption.isVisible()) { - await summaryOption.click() - } - - // Verify no summary is created - await expect(page.locator('svg g[id^="s-"]')).not.toBeVisible() -}) - -test('Summary appears on correct side for left branch', async ({ page, me }) => { - // Select node on left side - await me.click('Left Child 1') - await page.getByText('Left Child 1', { exact: true }).click({ button: 'right', force: true }) - await page.locator('#cm-summary').click() - - // Get the summary group - const summaryGroup = page.locator('svg g[id^="s-"]') - await expect(summaryGroup).toBeVisible() - - // Verify text anchor is 'end' for left side (text should be right-aligned) - const summaryText = summaryGroup.locator('text') - await expect(summaryText).toHaveAttribute('text-anchor', 'end') -}) - -test('Summary appears on correct side for right branch', async ({ page, me }) => { - // Select node on right side - await me.click('Right Child 1') - await page.getByText('Right Child 1', { exact: true }).click({ button: 'right', force: true }) - await page.locator('#cm-summary').click() - - // Get the summary group - const summaryGroup = page.locator('svg g[id^="s-"]') - await expect(summaryGroup).toBeVisible() - - // Verify text anchor is 'start' for right side (text should be left-aligned) - const summaryText = summaryGroup.locator('text') - await expect(summaryText).toHaveAttribute('text-anchor', 'start') -}) - -test('Multiple summaries can coexist', async ({ page, me }) => { - // Create first summary - await me.click('Left Child 1') - await page.getByText('Left Child 1', { exact: true }).click({ button: 'right', force: true }) - await page.locator('#cm-summary').click() - - // Create second summary - await me.click('Right Child 1') - await page.getByText('Right Child 1', { exact: true }).click({ button: 'right', force: true }) - await page.locator('#cm-summary').click() - - // Verify both summaries exist - const summaryGroups = page.locator('svg g[id^="s-"]') - await expect(summaryGroups).toHaveCount(2) - - // Verify both have text elements - await expect(page.locator('svg g[id^="s-"] text')).toHaveCount(2) -}) - -test('Summary covers exact range of selected nodes', async ({ page, me }) => { - // Use drag selection to select all three child nodes - await me.dragSelect('Left Child 1', 'Left Child 3') - - // Create summary - await page.getByText('Left Child 1', { exact: true }).click({ button: 'right', force: true }) - await page.locator('#cm-summary').click() - - // Finish editing - await page.keyboard.press('Enter') - await expect(page.locator('#input-box')).toBeHidden() - - // Get positions of all child nodes - const child1Box = await page.getByText('Left Child 1', { exact: true }).boundingBox() - const child2Box = await page.getByText('Left Child 2', { exact: true }).boundingBox() - const child3Box = await page.getByText('Left Child 3', { exact: true }).boundingBox() - - // Get summary bracket position - const summaryBox = await page.locator('svg g[id^="s-"] path').boundingBox() - - // Summary should span from Child 1 to Child 3 (including Child 2 in between) - // This verifies that the summary covers the range correctly - const topNode = Math.min(child1Box!.y, child2Box!.y, child3Box!.y) - const bottomNode = Math.max(child1Box!.y + child1Box!.height, child2Box!.y + child2Box!.height, child3Box!.y + child3Box!.height) - - // Summary bracket should cover the range including all selected nodes - expect(summaryBox!.y).toBeLessThanOrEqual(topNode + 10) - expect(summaryBox!.y + summaryBox!.height).toBeGreaterThanOrEqual(bottomNode - 10) - - // Verify that all three children are within the summary range - expect(summaryBox!.y).toBeLessThanOrEqual(child1Box!.y + 10) - expect(summaryBox!.y).toBeLessThanOrEqual(child2Box!.y + 10) - expect(summaryBox!.y).toBeLessThanOrEqual(child3Box!.y + 10) - expect(summaryBox!.y + summaryBox!.height).toBeGreaterThanOrEqual(child1Box!.y + child1Box!.height - 10) - expect(summaryBox!.y + summaryBox!.height).toBeGreaterThanOrEqual(child2Box!.y + child2Box!.height - 10) - expect(summaryBox!.y + summaryBox!.height).toBeGreaterThanOrEqual(child3Box!.y + child3Box!.height - 10) -}) - -test('Summary selection state management', async ({ page, me }) => { - // Create two summaries - await me.click('Left Child 1') - await page.getByText('Left Child 1', { exact: true }).click({ button: 'right', force: true }) - await page.locator('#cm-summary').click() - - await me.click('Right Child 1') - await page.getByText('Right Child 1', { exact: true }).click({ button: 'right', force: true }) - await page.locator('#cm-summary').click() - - const summaryGroups = page.locator('svg g[id^="s-"]') - const firstSummary = summaryGroups.first() - const secondSummary = summaryGroups.last() - - // Select first summary - await firstSummary.click() - await expect(firstSummary.locator('rect')).toBeVisible() - await expect(secondSummary.locator('rect')).not.toBeVisible() - - // Select second summary - await secondSummary.click() - await expect(firstSummary.locator('rect')).not.toBeVisible() - await expect(secondSummary.locator('rect')).toBeVisible() - - // Click elsewhere to deselect - await page.locator('#map').click() - await expect(firstSummary.locator('rect')).not.toBeVisible() - await expect(secondSummary.locator('rect')).not.toBeVisible() -}) diff --git a/mind-elixir-core-master/tests/topic-select.spec.ts b/mind-elixir-core-master/tests/topic-select.spec.ts deleted file mode 100644 index 2b35834..0000000 --- a/mind-elixir-core-master/tests/topic-select.spec.ts +++ /dev/null @@ -1,85 +0,0 @@ -import type { Page } from '@playwright/test' -import { test, expect } from './mind-elixir-test' - -const data = { - nodeData: { - topic: 'root', - id: 'root', - children: [ - { - id: 'middle1', - topic: 'middle1', - children: [ - { - id: 'child1', - topic: 'child1', - }, - { - id: 'child2', - topic: 'child2', - }, - ], - }, - { - id: 'middle2', - topic: 'middle2', - children: [ - { - id: 'child3', - topic: 'child3', - }, - { - id: 'child4', - topic: 'child4', - }, - ], - }, - ], - }, -} - -const select = async (page: Page) => { - await page.mouse.move(200, 100) - await page.mouse.down() - await page.getByText('child2').hover({ force: true }) - await page.mouse.up() -} - -test.beforeEach(async ({ me }) => { - await me.init(data) -}) - -test('Select Sibling', async ({ page, me }) => { - await me.click('child2') - await page.keyboard.press('ArrowUp') - await expect(page.locator('.selected')).toHaveText('child1') - await page.keyboard.press('ArrowDown') - await expect(page.locator('.selected')).toHaveText('child2') - - await select(page) - await page.keyboard.press('ArrowDown') - await expect(page.locator('.selected')).toHaveText('child2') - await page.keyboard.press('ArrowUp') - await expect(page.locator('.selected')).toHaveText('child1') -}) - -test('Parent Child', async ({ page, me }) => { - await me.click('child1') - await page.keyboard.press('ArrowRight') - await expect(page.locator('.selected')).toHaveText('middle1') - await page.keyboard.press('ArrowRight') - await expect(page.locator('.selected')).toHaveText('root') - await page.keyboard.press('ArrowRight') - await expect(page.locator('.selected')).toHaveText('middle2') - await page.keyboard.press('ArrowRight') - await expect(page.locator('.selected')).toHaveText('child3') - - await page.keyboard.press('ArrowLeft') - await expect(page.locator('.selected')).toHaveText('middle2') - await page.keyboard.press('ArrowLeft') - await expect(page.locator('.selected')).toHaveText('root') - await page.keyboard.press('ArrowLeft') - await expect(page.locator('.selected')).toHaveText('middle1') - await page.keyboard.press('ArrowLeft') - await expect(page.locator('.selected')).toHaveText('child1') -}) diff --git a/mind-elixir-core-master/tests/undo-redo.spec.ts b/mind-elixir-core-master/tests/undo-redo.spec.ts deleted file mode 100644 index 9dc9491..0000000 --- a/mind-elixir-core-master/tests/undo-redo.spec.ts +++ /dev/null @@ -1,231 +0,0 @@ -import { test, expect } from './mind-elixir-test' - -const id = 'root-id' -const topic = 'root-topic' -const childTopic = 'child-topic' -const middleTopic = 'middle' - -const data = { - nodeData: { - topic, - id, - children: [ - { - id: 'middle', - topic: middleTopic, - children: [ - { - id: 'child', - topic: childTopic, - }, - ], - }, - ], - }, -} - -test.beforeEach(async ({ me }) => { - await me.init(data) -}) - -test('Undo/Redo - Add Node Operations', async ({ page, me }) => { - // Select child node and add a sibling - await me.click(childTopic) - await page.keyboard.press('Enter') - await page.keyboard.press('Enter') - await expect(me.getByText('New Node')).toBeVisible() - - // Undo the add operation using Ctrl+Z - await page.keyboard.press('Control+z') - await expect(me.getByText('New Node')).toBeHidden() - - // Redo the add operation using Ctrl+Y - await page.keyboard.press('Control+y') - await expect(me.getByText('New Node')).toBeVisible() - - // Undo again using Ctrl+Z - await page.keyboard.press('Control+z') - await expect(me.getByText('New Node')).toBeHidden() - - // Redo using Ctrl+Shift+Z (alternative redo shortcut) - await page.keyboard.press('Control+Shift+Z') - await expect(me.getByText('New Node')).toBeVisible() -}) - -test('Undo/Redo - Remove Node Operations', async ({ page, me }) => { - // Remove child node - await me.click(childTopic) - await page.keyboard.press('Delete') - await expect(me.getByText(childTopic)).toBeHidden() - - // Undo the remove operation - await page.keyboard.press('Control+z') - await expect(me.getByText(childTopic)).toBeVisible() - - // Redo the remove operation - await page.keyboard.press('Control+y') - await expect(me.getByText(childTopic)).toBeHidden() - - // Undo again to restore the node - await page.keyboard.press('Control+z') - await expect(me.getByText(childTopic)).toBeVisible() -}) - -test('Undo/Redo - Edit Node Operations', async ({ page, me }) => { - const originalText = childTopic - const newText = 'updated-child-topic' - - // Edit the child node - await me.dblclick(childTopic) - await expect(page.locator('#input-box')).toBeVisible() - await page.keyboard.insertText(newText) - await page.keyboard.press('Enter') - await expect(me.getByText(newText)).toBeVisible() - - // Undo the edit operation - await page.keyboard.press('Control+z') - await expect(me.getByText(originalText)).toBeVisible() - await expect(me.getByText(newText)).toBeHidden() - - // Redo the edit operation - await page.keyboard.press('Control+y') - await expect(me.getByText(newText)).toBeVisible() - await expect(me.getByText(originalText)).toBeHidden() -}) - -test('Undo/Redo - Multiple Operations Sequence', async ({ page, me }) => { - // Perform multiple operations - // 1. Add a child node - await me.click(childTopic) - await page.keyboard.press('Tab') - await page.keyboard.press('Enter') - await expect(me.getByText('New Node')).toBeVisible() - - // 2. Add a sibling node - await page.keyboard.press('Enter') - await page.keyboard.press('Enter') - const newNodes = me.getByText('New Node') - await expect(newNodes).toHaveCount(2) - - // 3. Edit the first new node - await page.keyboard.press('ArrowUp') - await page.keyboard.press('F2') - await expect(page.locator('#input-box')).toBeVisible() - await page.keyboard.insertText('First New Node') - await page.keyboard.press('Enter') - await expect(me.getByText('First New Node')).toBeVisible() - - // Now undo operations step by step - // Undo edit operation - await page.keyboard.press('Control+z') - await expect(me.getByText('First New Node')).toBeHidden() - await expect(me.getByText('New Node')).toHaveCount(2) - - // Undo second add operation - await page.keyboard.press('Control+z') - await expect(newNodes).toHaveCount(1) - - // Undo first add operation - await page.keyboard.press('Control+z') - await expect(me.getByText('New Node')).toBeHidden() - - // Redo all operations - await page.keyboard.press('Control+y') // Redo first add - await expect(me.getByText('New Node')).toBeVisible() - - await page.keyboard.press('Control+y') // Redo second add - await expect(newNodes).toHaveCount(2) - - await page.keyboard.press('Control+y') // Redo edit - await expect(me.getByText('First New Node')).toBeVisible() -}) - -test('Undo/Redo - Copy and Paste Operations', async ({ page, me }) => { - // Copy middle node - await me.click(middleTopic) - await page.keyboard.press('Control+c') - - // Paste to child node - await me.click(childTopic) - await page.keyboard.press('Control+v') - - // Verify the copy was successful (should have two "middle" nodes) - const middleNodes = me.getByText(middleTopic) - await expect(middleNodes).toHaveCount(2) - - // Undo the paste operation - await page.keyboard.press('Control+z') - await expect(middleNodes).toHaveCount(1) - - // Redo the paste operation - await page.keyboard.press('Control+y') - await expect(middleNodes).toHaveCount(2) -}) - -test('Undo/Redo - Cut and Paste Operations', async ({ page, me }) => { - // Cut child node - await me.click(childTopic) - await page.keyboard.press('Control+x') - await expect(me.getByText(childTopic)).toBeHidden() - - // Paste to root node - await me.click(topic) - await page.keyboard.press('Control+v') - await expect(me.getByText(childTopic)).toBeVisible() - - // Undo the paste operation - await page.keyboard.press('Control+z') - // After undo, the node should be back in its original position - - // Undo the cut operation - await page.keyboard.press('Control+z') - await expect(me.getByText(childTopic)).toBeVisible() - - // Redo the cut operation - await page.keyboard.press('Control+y') - await expect(me.getByText(childTopic)).toBeHidden() - - // Redo the paste operation - await page.keyboard.press('Control+y') - await expect(me.getByText(childTopic)).toBeVisible() -}) - -test('Undo/Redo - No Operations Available', async ({ page, me }) => { - // Try to undo when no operations are available - await page.keyboard.press('Control+z') - // Should not crash or change anything - await expect(me.getByText(topic)).toBeVisible() - await expect(me.getByText(middleTopic)).toBeVisible() - await expect(me.getByText(childTopic)).toBeVisible() - - // Try to redo when no operations are available - await page.keyboard.press('Control+y') - // Should not crash or change anything - await expect(me.getByText(topic)).toBeVisible() - await expect(me.getByText(middleTopic)).toBeVisible() - await expect(me.getByText(childTopic)).toBeVisible() -}) - -test('Undo/Redo - Node Selection Restoration', async ({ page, me }) => { - // Add a new node and verify it gets selected - await me.click(childTopic) - await page.keyboard.press('Enter') - await page.keyboard.press('Enter') - - // The new node should be selected (we can verify this by checking if it has focus) - const newNode = me.getByText('New Node') - await expect(newNode).toBeVisible() - - // Undo the operation - await page.keyboard.press('Control+z') - await expect(newNode).toBeHidden() - - // The original child node should be selected again after undo - // We can verify this by trying to perform an action that requires a selected node - await page.keyboard.press('Delete') - await expect(me.getByText(childTopic)).toBeHidden() - - // Undo the delete to restore the node - await page.keyboard.press('Control+z') - await expect(me.getByText(childTopic)).toBeVisible() -}) diff --git a/mind-elixir-core-master/tsconfig.json b/mind-elixir-core-master/tsconfig.json deleted file mode 100644 index a8bfe31..0000000 --- a/mind-elixir-core-master/tsconfig.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "compilerOptions": { - "allowJs": false, - "declaration": true, - "outDir": "dist/types", - - "target": "ES2020", - "useDefineForClassFields": true, - "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "skipLibCheck": true, - - /* Bundler mode */ - "isolatedModules": true, - "emitDeclarationOnly": true, - // "noEmit": true, - - /* Linting */ - "strict": true, - - "noFallthroughCasesInSwitch": true, - "noErrorTruncation": true, - // "moduleResolution": "nodenext" - "moduleResolution": "bundler", - }, - "include": ["src"], - "exclude": ["src/dev.dist.ts"] -} diff --git a/mind-elixir-core-master/vite.config.ts b/mind-elixir-core-master/vite.config.ts deleted file mode 100644 index 226e6d5..0000000 --- a/mind-elixir-core-master/vite.config.ts +++ /dev/null @@ -1,61 +0,0 @@ -// vite.config.js -import { defineConfig } from 'vite' -import istanbul from 'vite-plugin-istanbul' - -export default defineConfig({ - server: { - host: true, - port: 23333, - strictPort: true, - }, - plugins: [ - istanbul({ - include: 'src/*', - exclude: ['node_modules', 'test/', 'src/plugin/exportImage.ts'], - extension: ['.ts'], - requireEnv: true, - }), - ], - // build: { - // cssCodeSplit: false, - // lib: { - // // Could also be a dictionary or array of multiple entry points - // entry: { - // MindElixir: resolve(__dirname, './src/index.ts'), - // MindElixirLite: resolve(__dirname, './src/index.lite.ts'), - // example1: resolve(__dirname, './src/exampleData/1.ts'), - // example2: resolve(__dirname, './src/exampleData/2.ts'), - // }, - // name: 'MindElixir', - // // formats: ['es'], - // }, - // rollupOptions: { - // // make sure to externalize deps that shouldn't be bundled - // // into your library - // // external: ['vue'], - // // output: { - // // // Provide global variables to use in the UMD build - // // // for externalized deps - // // globals: { - // // vue: 'Vue', - // // }, - // // }, - // output: [ - // { - // dir: 'dist', - // // file: 'bundle.js', - // format: 'iife', - // name: 'MyBundle', - // inlineDynamicImports: true, - // }, - // { - // dir: 'dist', - // // file: 'bundle.js', - // format: 'es', - // name: 'MyBundle', - // inlineDynamicImports: true, - // }, - // ], - // }, - // }, -})