From 52df52f021bc4e9552c0fe91260f2c41527007b5 Mon Sep 17 00:00:00 2001 From: a76yyyy Date: Sat, 6 Apr 2024 10:41:06 +0000 Subject: [PATCH] deploy: cac1aaadd75a7ee24e7a7603ec7bbe5d314859f2 --- 404.html | 4 ++-- assets/{app.8949b13c.js => app.9f46770c.js} | 2 +- ...zh_CN.4276bf14.js => @localSearchIndexzh_CN.c7e9a373.js} | 2 +- ...alSearchBox.4355d314.js => VPLocalSearchBox.1a8ec98d.js} | 2 +- assets/chunks/{theme.1d591ecb.js => theme.e3f38268.js} | 2 +- guide/deployment.html | 6 +++--- guide/faq.html | 6 +++--- guide/how-to-use.html | 6 +++--- guide/update.html | 6 +++--- guide/what-is-qd.html | 6 +++--- hashmap.json | 2 +- index.html | 6 +++--- toolbox/pusher.html | 6 +++--- zh_CN/guide/deployment.html | 6 +++--- zh_CN/guide/faq.html | 6 +++--- zh_CN/guide/how-to-use.html | 6 +++--- zh_CN/guide/update.html | 6 +++--- zh_CN/guide/what-is-qd.html | 6 +++--- zh_CN/index.html | 6 +++--- zh_CN/toolbox/pusher.html | 6 +++--- 20 files changed, 49 insertions(+), 49 deletions(-) rename assets/{app.8949b13c.js => app.9f46770c.js} (95%) rename assets/chunks/{@localSearchIndexzh_CN.4276bf14.js => @localSearchIndexzh_CN.c7e9a373.js} (85%) rename assets/chunks/{VPLocalSearchBox.4355d314.js => VPLocalSearchBox.1a8ec98d.js} (99%) rename assets/chunks/{theme.1d591ecb.js => theme.e3f38268.js} (99%) diff --git a/404.html b/404.html index 2758a6bcfd0..7e0e41f0e7f 100644 --- a/404.html +++ b/404.html @@ -6,14 +6,14 @@ 404 | QD - +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.

Released under the MIT License.

- diff --git a/assets/app.8949b13c.js b/assets/app.9f46770c.js similarity index 95% rename from assets/app.8949b13c.js rename to assets/app.9f46770c.js index 433c9ee3643..1ea6230fa89 100644 --- a/assets/app.8949b13c.js +++ b/assets/app.9f46770c.js @@ -1 +1 @@ -import{Q as s,a5 as p,a6 as i,a7 as u,a8 as c,a9 as l,aa as d,ab as f,ac as m,ad as h,ae as A,M as g,d as P,u as v,k as y,q as C,af as w,ag as _,ah as b,ai as E}from"./chunks/framework.feaf5d10.js";import{t as R}from"./chunks/theme.1d591ecb.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(R),D=P({name:"VitePressApp",setup(){const{site:e}=v();return y(()=>{C(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),w(),_(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function O(){const e=T(),a=S();a.provide(i,e);const t=u(e.route);return a.provide(c,t),a.component("Content",l),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:f}),{app:a,router:e,data:t}}function S(){return m(D)}function T(){let e=s,a;return h(t=>{let o=A(t);return e&&(a=o),(e||a===o)&&(o=o.replace(/\.js$/,".lean.js")),s&&(e=!1),g(()=>import(o),[])},n.NotFound)}s&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{O as createApp}; +import{Q as s,a5 as p,a6 as i,a7 as u,a8 as c,a9 as l,aa as d,ab as f,ac as m,ad as h,ae as A,M as g,d as P,u as v,k as y,q as C,af as w,ag as _,ah as b,ai as E}from"./chunks/framework.feaf5d10.js";import{t as R}from"./chunks/theme.e3f38268.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(R),D=P({name:"VitePressApp",setup(){const{site:e}=v();return y(()=>{C(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),w(),_(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function O(){const e=T(),a=S();a.provide(i,e);const t=u(e.route);return a.provide(c,t),a.component("Content",l),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:f}),{app:a,router:e,data:t}}function S(){return m(D)}function T(){let e=s,a;return h(t=>{let o=A(t);return e&&(a=o),(e||a===o)&&(o=o.replace(/\.js$/,".lean.js")),s&&(e=!1),g(()=>import(o),[])},n.NotFound)}s&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{O as createApp}; diff --git a/assets/chunks/@localSearchIndexzh_CN.4276bf14.js b/assets/chunks/@localSearchIndexzh_CN.c7e9a373.js similarity index 85% rename from assets/chunks/@localSearchIndexzh_CN.4276bf14.js rename to assets/chunks/@localSearchIndexzh_CN.c7e9a373.js index 5f3ce132b3b..8bfdcd5abb5 100644 --- a/assets/chunks/@localSearchIndexzh_CN.4276bf14.js +++ b/assets/chunks/@localSearchIndexzh_CN.c7e9a373.js @@ -1 +1 @@ -const t='{"documentCount":67,"nextId":67,"documentIds":{"0":"/qd/zh_CN/guide/deployment.html#部署","1":"/qd/zh_CN/guide/deployment.html#docker-容器部署","2":"/qd/zh_CN/guide/deployment.html#容器","3":"/qd/zh_CN/guide/deployment.html#部署方法","4":"/qd/zh_CN/guide/deployment.html#_1-docker-compose-推荐","5":"/qd/zh_CN/guide/deployment.html#_2-1panel-部署","6":"/qd/zh_CN/guide/deployment.html#_3-docker-运行","7":"/qd/zh_CN/guide/deployment.html#源码部署","8":"/qd/zh_CN/guide/deployment.html#设置管理员","9":"/qd/zh_CN/guide/deployment.html#配置环境变量","10":"/qd/zh_CN/guide/faq.html#常见问题","11":"/qd/zh_CN/guide/faq.html#如何备份和恢复数据库","12":"/qd/zh_CN/guide/faq.html#如何在-docker-中配置邮箱服务器","13":"/qd/zh_CN/guide/faq.html#如何在-docker-中使用-mysql","14":"/qd/zh_CN/guide/faq.html#如何自己搭建-docker-镜像","15":"/qd/zh_CN/guide/faq.html#如何查看当前框架支持的-api-和-jinja2-模板变量","16":"/qd/zh_CN/guide/faq.html#如何提交-bug-问题","17":"/qd/zh_CN/guide/faq.html#qd-模板一般需要哪些请求","18":"/qd/zh_CN/guide/faq.html#我的用户名和密码会被泄露吗","19":"/qd/zh_CN/guide/faq.html#提示错误信息-permissionerror-errno-1-operation-not-permitted","20":"/qd/zh_CN/guide/faq.html#提示警告信息-connect-redis-falied-error-10061","21":"/qd/zh_CN/guide/faq.html#提示警告信息-import-pycurl-module-falied","22":"/qd/zh_CN/guide/faq.html#如何注册推送方式","23":"/qd/zh_CN/guide/faq.html#公共模板更新页面提示错误代码为-undefined","24":"/qd/zh_CN/guide/how-to-use.html#如何使用","25":"/qd/zh_CN/guide/how-to-use.html#获取-har","26":"/qd/zh_CN/guide/how-to-use.html#_1-什么是-har","27":"/qd/zh_CN/guide/how-to-use.html#_2-抓包","28":"/qd/zh_CN/guide/how-to-use.html#_2-1-chrome-或-edge","29":"/qd/zh_CN/guide/how-to-use.html#_2-2-火狐","30":"/qd/zh_CN/guide/how-to-use.html#_2-3-windows-fiddler","31":"/qd/zh_CN/guide/how-to-use.html#_2-4-ios-stream","32":"/qd/zh_CN/guide/how-to-use.html#_3-公共模板","33":"/qd/zh_CN/guide/how-to-use.html#上传-har-文件","34":"/qd/zh_CN/guide/how-to-use.html#编辑模板","35":"/qd/zh_CN/guide/how-to-use.html#创建定时任务","36":"/qd/zh_CN/guide/update.html#更新方法","37":"/qd/zh_CN/guide/update.html#源码部署更新","38":"/qd/zh_CN/guide/update.html#docker-compose-部署更新","39":"/qd/zh_CN/guide/update.html#docker-容器部署更新","40":"/qd/zh_CN/guide/update.html#强制同步最新源码","41":"/qd/zh_CN/guide/what-is-qd.html#什么是-qd","42":"/qd/zh_CN/guide/what-is-qd.html#特性","43":"/qd/zh_CN/guide/what-is-qd.html#如何部署","44":"/qd/zh_CN/guide/what-is-qd.html#如何使用","45":"/qd/zh_CN/guide/what-is-qd.html#如何更新","46":"/qd/zh_CN/guide/what-is-qd.html#讨论","47":"/qd/zh_CN/toolbox/pusher.html#推送工具","48":"/qd/zh_CN/toolbox/pusher.html#推送注册","49":"/qd/zh_CN/toolbox/pusher.html#推送注册测试","50":"/qd/zh_CN/toolbox/pusher.html#推送注册前值","51":"/qd/zh_CN/toolbox/pusher.html#推送方式","52":"/qd/zh_CN/toolbox/pusher.html#邮件推送","53":"/qd/zh_CN/toolbox/pusher.html#bark-推送","54":"/qd/zh_CN/toolbox/pusher.html#server-酱推送","55":"/qd/zh_CN/toolbox/pusher.html#telegram-bot-推送","56":"/qd/zh_CN/toolbox/pusher.html#钉钉推送","57":"/qd/zh_CN/toolbox/pusher.html#wxpusher-推送","58":"/qd/zh_CN/toolbox/pusher.html#企业微信应用推送","59":"/qd/zh_CN/toolbox/pusher.html#企业微信-webhook-推送","60":"/qd/zh_CN/toolbox/pusher.html#自定义推送","61":"/qd/zh_CN/toolbox/pusher.html#自定义-get-推送","62":"/qd/zh_CN/toolbox/pusher.html#自定义-post-推送","63":"/qd/zh_CN/toolbox/pusher.html#推送设置","64":"/qd/zh_CN/toolbox/pusher.html#任务结果推送渠道","65":"/qd/zh_CN/toolbox/pusher.html#任务结果通知选择","66":"/qd/zh_CN/toolbox/pusher.html#任务结果批量推送"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,1],"1":[2,1,6],"2":[1,3,40],"3":[1,3,1],"4":[5,4,48],"5":[3,4,33],"6":[3,4,44],"7":[1,1,47],"8":[1,1,10],"9":[1,1,287],"10":[1,1,1],"11":[2,1,27],"12":[4,1,24],"13":[5,1,28],"14":[4,1,3],"15":[6,1,8],"16":[4,1,6],"17":[3,1,11],"18":[2,1,13],"19":[8,1,97],"20":[6,1,39],"21":[5,1,46],"22":[1,1,10],"23":[2,1,58],"24":[2,1,1],"25":[2,2,1],"26":[4,3,11],"27":[2,3,1],"28":[5,5,39],"29":[2,5,15],"30":[4,5,25],"31":[4,5,22],"32":[2,3,17],"33":[3,2,14],"34":[1,2,40],"35":[1,2,14],"36":[1,1,3],"37":[1,1,17],"38":[3,1,14],"39":[2,1,23],"40":[1,1,18],"41":[3,1,13],"42":[1,3,24],"43":[1,3,3],"44":[1,3,3],"45":[1,3,3],"46":[1,3,4],"47":[1,1,1],"48":[1,1,17],"49":[1,2,22],"50":[1,2,18],"51":[1,1,3],"52":[1,2,90],"53":[2,2,33],"54":[2,2,20],"55":[3,2,92],"56":[1,2,46],"57":[2,2,20],"58":[1,2,93],"59":[3,2,19],"60":[1,2,15],"61":[3,3,36],"62":[3,3,35],"63":[1,1,14],"64":[1,2,16],"65":[1,2,14],"66":[1,2,20]},"averageFieldLength":[2.253731343283582,2,27.417910447761187],"storedFields":{"0":{"title":"部署","titles":[]},"1":{"title":"Docker 容器部署","titles":["部署"]},"2":{"title":"容器","titles":["部署","Docker 容器部署"]},"3":{"title":"部署方法","titles":["部署","Docker 容器部署"]},"4":{"title":"1. Docker Compose(推荐)","titles":["部署","Docker 容器部署","部署方法"]},"5":{"title":"2. 1Panel 部署","titles":["部署","Docker 容器部署","部署方法"]},"6":{"title":"3. Docker 运行","titles":["部署","Docker 容器部署","部署方法"]},"7":{"title":"源码部署","titles":["部署"]},"8":{"title":"设置管理员","titles":["部署"]},"9":{"title":"配置环境变量","titles":["部署"]},"10":{"title":"常见问题","titles":[]},"11":{"title":"如何备份和恢复数据库?","titles":["常见问题"]},"12":{"title":"如何在 Docker 中配置邮箱服务器?","titles":["常见问题"]},"13":{"title":"如何在 Docker 中使用 MySQL?","titles":["常见问题"]},"14":{"title":"如何自己搭建 Docker 镜像?","titles":["常见问题"]},"15":{"title":"如何查看当前框架支持的 API 和 Jinja2 模板变量?","titles":["常见问题"]},"16":{"title":"如何提交 bug 问题?","titles":["常见问题"]},"17":{"title":"QD 模板一般需要哪些请求?","titles":["常见问题"]},"18":{"title":"我的用户名和密码会被泄露吗?","titles":["常见问题"]},"19":{"title":"提示错误信息 PermissionError: [Errno 1] Operation not permitted?","titles":["常见问题"]},"20":{"title":"提示警告信息: Connect Redis falied: Error 10061","titles":["常见问题"]},"21":{"title":"提示警告信息: Import PyCurl module falied","titles":["常见问题"]},"22":{"title":"如何注册推送方式","titles":["常见问题"]},"23":{"title":"公共模板更新页面提示错误代码为 undefined","titles":["常见问题"]},"24":{"title":"如何使用?","titles":[]},"25":{"title":"获取 HAR","titles":["如何使用?"]},"26":{"title":"1. 什么是 HAR?","titles":["如何使用?","获取 HAR"]},"27":{"title":"2. 抓包","titles":["如何使用?","获取 HAR"]},"28":{"title":"2.1. Chrome 或 Edge","titles":["如何使用?","获取 HAR","2. 抓包"]},"29":{"title":"2.2. 火狐","titles":["如何使用?","获取 HAR","2. 抓包"]},"30":{"title":"2.3. Windows - Fiddler","titles":["如何使用?","获取 HAR","2. 抓包"]},"31":{"title":"2.4. IOS - Stream","titles":["如何使用?","获取 HAR","2. 抓包"]},"32":{"title":"3. 公共模板","titles":["如何使用?","获取 HAR"]},"33":{"title":"上传 HAR 文件","titles":["如何使用?"]},"34":{"title":"编辑模板","titles":["如何使用?"]},"35":{"title":"创建定时任务","titles":["如何使用?"]},"36":{"title":"更新方法","titles":[]},"37":{"title":"源码部署更新","titles":["更新方法"]},"38":{"title":"Docker Compose 部署更新","titles":["更新方法"]},"39":{"title":"Docker 容器部署更新","titles":["更新方法"]},"40":{"title":"强制同步最新源码","titles":["更新方法"]},"41":{"title":"什么是 QD?","titles":[]},"42":{"title":"特性","titles":["什么是 QD?"]},"43":{"title":"如何部署","titles":["什么是 QD?"]},"44":{"title":"如何使用","titles":["什么是 QD?"]},"45":{"title":"如何更新","titles":["什么是 QD?"]},"46":{"title":"讨论","titles":["什么是 QD?"]},"47":{"title":"推送工具","titles":[]},"48":{"title":"推送注册","titles":["推送工具"]},"49":{"title":"推送注册测试","titles":["推送工具","推送注册"]},"50":{"title":"推送注册前值","titles":["推送工具","推送注册"]},"51":{"title":"推送方式","titles":["推送工具"]},"52":{"title":"邮件推送","titles":["推送工具","推送方式"]},"53":{"title":"Bark 推送","titles":["推送工具","推送方式"]},"54":{"title":"Server 酱推送","titles":["推送工具","推送方式"]},"55":{"title":"Telegram Bot 推送","titles":["推送工具","推送方式"]},"56":{"title":"钉钉推送","titles":["推送工具","推送方式"]},"57":{"title":"WXPusher 推送","titles":["推送工具","推送方式"]},"58":{"title":"企业微信应用推送","titles":["推送工具","推送方式"]},"59":{"title":"企业微信 Webhook 推送","titles":["推送工具","推送方式"]},"60":{"title":"自定义推送","titles":["推送工具","推送方式"]},"61":{"title":"自定义 Get 推送","titles":["推送工具","推送方式","自定义推送"]},"62":{"title":"自定义 Post 推送","titles":["推送工具","推送方式","自定义推送"]},"63":{"title":"推送设置","titles":["推送工具"]},"64":{"title":"任务结果推送渠道","titles":["推送工具","推送设置"]},"65":{"title":"任务结果通知选择","titles":["推送工具","推送设置"]},"66":{"title":"任务结果批量推送","titles":["推送工具","推送设置"]}},"dirtCount":0,"index":[["秒",{"2":{"66":1}}],["进行一次批量推送",{"2":{"66":1}}],["进行推送注册测试时",{"2":{"49":1}}],["初次批量推送时间设置",{"2":{"66":1}}],["批量推送时间间隔",{"2":{"66":2}}],["批量推送时间设置",{"2":{"66":2}}],["半角双引号",{"2":{"61":1,"62":2}}],["表示要替换的日志和标题",{"2":{"60":1}}],["接口获取",{"2":{"58":1}}],["企业微信应用",{"2":{"58":2}}],["企业微信应用推送需要在",{"2":{"58":1}}],["企业微信应用推送",{"0":{"58":1},"2":{"64":1}}],["企业微信",{"0":{"59":1},"2":{"58":6,"59":3,"64":1}}],["企业邮箱的pop",{"2":{"52":1}}],["加签",{"2":{"56":1}}],["加密的用户数据包括用户上传的模板",{"2":{"18":1}}],["添加到",{"2":{"56":1}}],["地址添加到",{"2":{"56":1}}],["安全设置",{"2":{"56":3}}],["安装",{"2":{"5":1}}],["钉钉推送需要在",{"2":{"56":1}}],["钉钉推送",{"0":{"56":1},"2":{"56":1,"64":1}}],["因此最终填写形式形如",{"2":{"55":1}}],["那么在注册",{"2":{"55":1}}],["上面这个请求将会向222222222这个聊天发送一条helloworld消息",{"2":{"55":1}}],["上传刚刚保存的",{"2":{"33":1}}],["上传",{"0":{"33":1},"2":{"33":1}}],["假设你已经创建了一个具有自定义域名的",{"2":{"55":1}}],["示例",{"2":{"55":1}}],["代理企业微信应用推送",{"2":{"58":1}}],["代理",{"2":{"55":1}}],["代理地址",{"2":{"55":1}}],["则会在当天的",{"2":{"66":1}}],["则会收到一条推送消息",{"2":{"49":1}}],["则当自动执行失败",{"2":{"65":1}}],["则不设置",{"2":{"61":1,"62":2}}],["则不使用",{"2":{"55":1}}],["则使用环境变量",{"2":{"55":1,"56":1,"58":1}}],["则使用默认值",{"2":{"55":1,"58":1}}],["前缀",{"2":{"55":1,"58":1}}],["前值",{"2":{"50":1}}],["也可以带上",{"2":{"55":1,"58":1}}],["字段",{"2":{"55":1}}],["形式",{"2":{"55":1}}],["形式的",{"2":{"6":1,"7":1}}],["即每隔一天批量推送本次推送时间前86400秒内的任务结果",{"2":{"66":1}}],["即",{"2":{"55":1}}],["即可制作框架所需的",{"2":{"42":1}}],["即可通过",{"2":{"5":1}}],["应当为",{"2":{"55":1}}],["酱",{"2":{"54":1}}],["酱推送需要在",{"2":{"54":1}}],["酱推送",{"0":{"54":1},"2":{"54":1,"64":1}}],["例如设置为",{"2":{"65":1,"66":1}}],["例如",{"2":{"53":1,"55":2,"58":1,"61":1,"62":2}}],["例如定时任务执行失败",{"2":{"22":1,"48":1}}],["替换为你的",{"2":{"53":1}}],["客户端中获取",{"2":{"53":1}}],["参数名",{"2":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"61":1,"62":1}}],["参考下方的smtp开启方式和配置方法来获取你的smtp服务器地址和端口",{"2":{"52":1}}],["参考配置如下",{"2":{"23":1}}],["参考",{"2":{"23":1}}],["参考操作",{"2":{"19":1}}],["控制台中设置对应的",{"2":{"52":1}}],["并在",{"2":{"52":1}}],["值",{"2":{"52":2,"55":1,"56":1,"58":1}}],["对不支持双重验证的应用使用应用密码",{"2":{"52":1}}],["关联微信以及开启安全登录获取客户端专用密码",{"2":{"52":1}}],["关键配置",{"2":{"23":2}}],["成员如何绑定",{"2":{"52":1}}],["成功",{"2":{"34":1}}],["腾讯企业邮箱",{"2":{"52":1}}],["邮件推送无需在",{"2":{"52":1}}],["邮件推送",{"0":{"52":1},"2":{"64":1}}],["邮箱",{"2":{"49":1,"50":1,"52":1}}],["邮箱密码",{"2":{"9":1,"52":1}}],["邮箱用户名",{"2":{"9":1,"52":1}}],["邮箱smtp服务器端口",{"2":{"9":1,"52":1}}],["邮箱smtp服务器",{"2":{"9":1,"52":1}}],["查看推送注册前值时",{"2":{"50":1}}],["讨论",{"0":{"46":1},"2":{"46":1}}],["许可证的开源项目",{"2":{"42":1}}],["内置多种",{"2":{"42":1}}],["插件支持",{"2":{"42":1}}],["特性",{"0":{"42":1}}],["定时任务自动执行",{"2":{"41":1}}],["定时执行模式失效时使用",{"2":{"9":1}}],["基于har",{"2":{"42":1}}],["基于",{"2":{"41":1}}],["一个",{"2":{"41":1}}],["是一个基于",{"2":{"42":1}}],["是",{"2":{"41":1,"52":5,"53":1,"54":1,"55":2,"56":1,"57":2,"58":3,"59":1,"61":1,"62":1}}],["是否允许curl使用headers中自定义content",{"2":{"9":1}}],["是否允许使用curl进行encoding操作",{"2":{"9":1}}],["是否允许开启定期推送",{"2":{"9":1}}],["是否关闭本机私有ip地址用户及localhost",{"2":{"9":1}}],["是否使用starttls",{"2":{"52":1}}],["是否使用ssl",{"2":{"52":1}}],["是否使用",{"2":{"9":1}}],["是否在连接池获取连接前",{"2":{"9":1}}],["是否启用pycurl模组",{"2":{"9":1}}],["是否启用邮箱starttls",{"2":{"9":1}}],["是否启用邮箱ssl",{"2":{"9":1}}],["是否启用在控制台日志中打印exception的traceback信息",{"2":{"9":1}}],["是否启用",{"2":{"9":2}}],["是否启用自动热加载",{"2":{"9":1}}],["是否启用多进程模式",{"2":{"9":1}}],["是否启用debug模式",{"2":{"9":1}}],["是否必须",{"2":{"9":1,"52":2,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"61":1,"62":1}}],["强制同步最新源码",{"0":{"40":1}}],["强烈建议修改",{"2":{"9":2}}],["所在目录",{"2":{"38":1}}],["到仓库代码根目录",{"2":{"40":1}}],["到",{"2":{"38":1}}],["到源码所在目录",{"2":{"37":1}}],["先进入容器后台",{"2":{"39":1}}],["先",{"2":{"37":1,"38":1,"40":1}}],["先ping一下",{"2":{"9":1}}],["创建定时任务",{"0":{"35":1}}],["创建并切换到",{"2":{"4":1}}],["正在编辑的模板会自动保存在浏览器缓存中",{"2":{"34":1}}],["来批量推送距离本次推送时间前指定时间间隔内的任务结果",{"2":{"66":1}}],["来测试整体",{"2":{"34":1}}],["来源于",{"2":{"19":1}}],["测试",{"2":{"34":1,"35":1,"49":1,"56":1}}],["测试等操作",{"2":{"9":1}}],["当",{"2":{"66":1}}],["当所有请求编辑完成后",{"2":{"34":1}}],["当请求中需要上一次请求的一些数据时",{"2":{"34":1}}],["提醒",{"2":{"48":1,"49":1,"50":1}}],["提取任务日志",{"2":{"34":1}}],["提示警告信息",{"0":{"20":1,"21":1}}],["提示错误信息",{"0":{"19":1}}],["保存",{"2":{"34":1}}],["保存在环境变量中",{"2":{"34":1}}],["保留日志",{"2":{"28":1}}],["通过正则化抽取数据",{"2":{"34":1}}],["通过curl使用指定dns进行解析",{"2":{"9":1}}],["这有助于检测模板任务是否运行失败",{"2":{"34":1}}],["这只能靠服务器维护人员的自律来保证后端数据的安全",{"2":{"18":1}}],["失败断言",{"2":{"34":1}}],["填写了正确的参数",{"2":{"49":1}}],["填写任务变量",{"2":{"35":1}}],["填写",{"2":{"34":1}}],["语法",{"2":{"34":1}}],["语句",{"2":{"9":1}}],["等根据用户变化的部分替换成类似",{"2":{"34":1}}],["将用户名",{"2":{"34":1}}],["将文件保存到您的计算机",{"2":{"28":1}}],["继续",{"2":{"33":1}}],["继续编辑",{"2":{"32":1}}],["首页",{"2":{"33":1}}],["首位注册用户默认为管理员",{"2":{"8":1}}],["社区模板",{"2":{"32":1}}],["右侧的",{"2":{"32":1,"33":1,"35":1}}],["右键单击​​加载的结果",{"2":{"29":1}}],["右键单击网络请求网格上的任意位置",{"2":{"28":1}}],["导出har文件",{"2":{"31":1}}],["导出为",{"2":{"30":1}}],["手动执行失败通知",{"2":{"65":1}}],["手动执行成功通知",{"2":{"65":1}}],["手动改成",{"2":{"6":1}}],["手机会自动弹出vpn配置窗口",{"2":{"31":1}}],["信任ca证书",{"2":{"31":1}}],["抓取https请求前",{"2":{"31":1}}],["抓包",{"0":{"27":1},"1":{"28":1,"29":1,"30":1,"31":1}}],["格式为",{"2":{"53":1,"55":1,"61":1,"62":1}}],["格式",{"2":{"30":1,"61":1,"62":2}}],["流量",{"2":{"30":1}}],["解密",{"2":{"30":1}}],["解决",{"2":{"2":1}}],["勾选",{"2":{"30":1}}],["菜单",{"2":{"30":1}}],["菜单中选择",{"2":{"28":1}}],["打开",{"2":{"30":2,"31":1}}],["火狐",{"0":{"29":1}}],["另存为带内容的",{"2":{"28":1}}],["重现任务后",{"2":{"28":1}}],["现在尝试重现您计划发起的",{"2":{"28":1,"29":1,"30":1,"31":1}}],["清除",{"2":{"28":1}}],["旁边的框",{"2":{"28":1}}],["红色",{"2":{"28":1}}],["录制",{"2":{"28":1}}],["确保",{"2":{"28":1}}],["确认",{"2":{"5":1}}],["选中",{"2":{"28":1,"30":1}}],["选项卡中的所有现有日志",{"2":{"28":1}}],["选项卡左上角的",{"2":{"28":1}}],["选项卡",{"2":{"28":1,"30":2}}],["选择刚刚创建的模板",{"2":{"35":1}}],["选择其中的一部分",{"2":{"34":1}}],["选择你要使用的har文件",{"2":{"32":1}}],["选择全部另存为",{"2":{"29":1}}],["选择",{"2":{"28":2,"30":3}}],["从屏幕底部或右侧打开的面板中",{"2":{"28":1}}],["开启定期批量推送",{"2":{"66":1}}],["开启pop3",{"2":{"52":1}}],["开源",{"2":{"42":1}}],["开发者工具",{"2":{"28":1}}],["开始",{"2":{"23":2}}],["更多工具",{"2":{"28":1}}],["更新后请重启容器或清空浏览器缓存",{"2":{"36":1}}],["更新方法",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1}}],["更新存储库以获取最新的",{"2":{"32":1}}],["更新",{"2":{"19":1,"45":1}}],["更新源码的影响",{"2":{"7":1}}],["+",{"2":{"28":2,"33":1,"35":1}}],["按",{"2":{"28":1,"29":1}}],["按钮来查看推送注册的前值",{"2":{"50":1}}],["按钮来测试推送方式是否可用",{"2":{"49":1}}],["按钮测试任务",{"2":{"35":1}}],["按钮下载模板",{"2":{"34":1}}],["按钮保存模板",{"2":{"34":1}}],["按钮订阅模板",{"2":{"32":1}}],["按钮以清除",{"2":{"28":1}}],["按钮显示为",{"2":{"28":1}}],["按钮",{"2":{"15":1,"32":1,"33":1,"35":1}}],["什么是pop3",{"2":{"52":1}}],["什么是客户端授权码",{"2":{"52":1}}],["什么是",{"0":{"26":1,"41":1},"1":{"42":1,"43":1,"44":1,"45":1,"46":1}}],["获取",{"0":{"25":1},"1":{"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1}}],["x",{"2":{"23":4}}],["xx",{"2":{"20":3,"21":3}}],["xxxxxx",{"2":{"20":1,"21":1}}],["其他说明",{"2":{"52":1}}],["其他可选配置",{"2":{"23":2}}],["其他与主线版本保持一致",{"2":{"4":1,"5":1}}],["结束",{"2":{"23":2}}],["自动错误几次后提醒",{"2":{"65":1}}],["自动执行失败通知",{"2":{"65":1}}],["自动执行成功通知",{"2":{"65":1}}],["自动修改冲突设置并重发请求",{"2":{"9":1}}],["自定义",{"0":{"61":1,"62":1},"2":{"61":2,"62":3}}],["自定义推送需要在",{"2":{"60":1}}],["自定义推送支持",{"2":{"60":1}}],["自定义推送",{"0":{"60":1},"1":{"61":1,"62":1},"2":{"64":1}}],["自定义推送图片地址或",{"2":{"58":1}}],["自定义推送图片地址",{"2":{"55":1,"56":1}}],["自定义关键词",{"2":{"56":2}}],["自定义机器人接入",{"2":{"56":1}}],["自行修改",{"2":{"23":1}}],["推送设置",{"0":{"63":1},"1":{"64":1,"65":1,"66":1},"2":{"63":2}}],["推送码可在",{"2":{"53":1}}],["推送码",{"2":{"53":2}}],["推送地址",{"2":{"53":1,"61":1,"62":1}}],["推送需要在",{"2":{"53":1,"55":1,"57":1,"59":1}}],["推送",{"0":{"53":1,"55":1,"57":1,"59":1,"61":1,"62":1},"2":{"56":1,"57":2,"61":1,"62":2,"64":4}}],["推送方式",{"0":{"51":1},"1":{"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1},"2":{"60":1}}],["推送注册前值",{"0":{"50":1}}],["推送注册测试",{"0":{"49":1}}],["推送注册时填写的参数以",{"2":{"48":1}}],["推送注册",{"0":{"48":1},"1":{"49":1,"50":1},"2":{"48":1,"49":1,"50":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"63":1}}],["推送注册中注册不同的推送工具",{"2":{"22":1}}],["推送工具",{"0":{"47":1},"1":{"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"22":1}}],["推荐",{"0":{"4":1}}],["工具箱",{"2":{"22":1,"48":1,"49":1,"50":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"63":2}}],["你可以在",{"2":{"22":1,"48":1}}],["你需要管理员权限在",{"2":{"7":1}}],["具体安装方法请参考",{"2":{"21":1}}],["库",{"2":{"21":1}}],["功能",{"2":{"20":1,"21":1}}],["限流",{"2":{"20":1}}],["限redis连接已开启",{"2":{"9":1}}],["然而",{"2":{"20":1,"21":1}}],["然后跳到",{"2":{"32":1}}],["然后选择允许",{"2":{"31":1}}],["然后将详细的错误日志提交至",{"2":{"16":1}}],["然后点击左上角的",{"2":{"15":1}}],["然后使用",{"2":{"11":1}}],["无法连接",{"2":{"20":1}}],["由于目标计算机积极拒绝",{"2":{"20":1}}],["服务器的",{"2":{"56":1}}],["服务地址",{"2":{"53":1}}],["服务端",{"2":{"42":1}}],["服务端的",{"2":{"41":1}}],["服务",{"2":{"20":1,"53":1}}],["作为推送方式时",{"2":{"55":1}}],["作为服务端",{"2":{"42":1}}],["作为导出方式",{"2":{"30":1}}],["作为限流工具",{"2":{"20":1}}],["作为框架数据库",{"2":{"11":1}}],["70195968",{"2":{"19":1}}],["6379",{"2":{"20":1}}],["648acfd622f3d138",{"2":{"19":1}}],["60",{"2":{"9":2}}],["443",{"2":{"58":1}}],["423",{"2":{"23":1}}],["474",{"2":{"19":1}}],["4",{"0":{"31":1},"2":{"19":2}}],["465",{"2":{"9":1,"52":1}}],["且",{"2":{"19":1}}],["系统部署",{"2":{"21":1}}],["系统上安装比较麻烦",{"2":{"21":1}}],["系统",{"2":{"19":1}}],["每个用户在存储时都使用安全密钥进行加密",{"2":{"18":1}}],["但是不包括",{"2":{"55":1}}],["但不显示错误原因",{"2":{"23":1}}],["但在框架设计中",{"2":{"18":1}}],["但均为",{"2":{"5":1}}],["终究需要记录用户名和密码",{"2":{"18":1}}],["我的任务",{"2":{"35":1}}],["我的模板",{"2":{"32":1,"33":1}}],["我的用户名和密码会被泄露吗",{"0":{"18":1}}],["我的发布请求",{"2":{"7":1}}],["翻页前后的第一个网页",{"2":{"17":1}}],["登录页面",{"2":{"17":1}}],["登录用户或ip在1小时内",{"2":{"9":1}}],["根据需要修改模板",{"2":{"32":1}}],["根据需求和配置说明修改配置文件或环境变量值",{"2":{"7":1}}],["根据需求和配置说明修改配置环境变量",{"2":{"4":1}}],["根据经验",{"2":{"17":1}}],["问题反馈",{"2":{"46":1}}],["问题",{"0":{"16":1}}],["过滤器",{"2":{"15":1}}],["常用邮件客户端软件设置",{"2":{"52":1}}],["常用",{"2":{"15":1}}],["常见问题",{"0":{"10":1},"1":{"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1}}],["数据库恢复",{"2":{"11":1}}],["数据库备份",{"2":{"11":1}}],["数据库名",{"2":{"9":1,"13":1}}],["可为域名或ip地址",{"2":{"55":1,"58":1}}],["可在",{"2":{"54":1,"55":2,"56":1,"57":2,"58":3,"59":1}}],["可以设置在自动执行失败几次后推送通知",{"2":{"65":1}}],["可以设置每个任务的推送开关",{"2":{"63":1}}],["可以在",{"2":{"63":1}}],["可以通过",{"2":{"58":1}}],["可以点击",{"2":{"49":1,"50":1}}],["可以忽略该警告信息",{"2":{"20":1,"21":1}}],["可以自己搭建qd框架",{"2":{"18":1}}],["可以保证仅获取数据库就无法解密用户数据",{"2":{"18":1}}],["可以查看当前框架支持的api和jinja2模板变量",{"2":{"15":1}}],["可以使用",{"2":{"11":1}}],["可选",{"2":{"9":1}}],["详细信息请查阅config",{"2":{"9":1}}],["详见配置",{"2":{"9":4}}],["仅需上传通过抓包得到的",{"2":{"42":1}}],["仅适用于",{"2":{"9":1}}],["仅支持pycurl环境",{"2":{"9":1}}],["订阅加速方式或地址",{"2":{"9":1}}],["公共模板",{"0":{"32":1}}],["公共模板更新页面提示错误代码为",{"0":{"23":1},"2":{"23":1}}],["公共模板更新页面最大连接数",{"2":{"9":1}}],["公开模板",{"2":{"7":1}}],["最大消息队列大小",{"2":{"9":1}}],["最新开发版",{"2":{"2":1}}],["最新",{"2":{"2":1}}],["多个json文件名用",{"2":{"9":1}}],["多个onnx文件名用",{"2":{"9":1}}],["|",{"2":{"9":2,"19":1}}],["单击保存按钮保存任务",{"2":{"35":1}}],["单击",{"2":{"28":1,"34":2,"35":1}}],["单击一下开始录制",{"2":{"28":1}}],["单次接收最大消息大小",{"2":{"9":1}}],["单个用户拥有记事本最大数量",{"2":{"9":1}}],["单位为秒",{"2":{"9":4}}],["第一个注册用户为管理员",{"2":{"9":1}}],["次后",{"2":{"65":1}}],["次",{"2":{"9":1}}],["次数",{"2":{"9":1}}],["分隔并连接",{"2":{"48":1}}],["分隔",{"2":{"9":2}}],["分钟",{"2":{"9":1}}],["分数达到evil上限后自动封禁直至下一小时周期",{"2":{"9":1}}],["分数",{"2":{"9":1}}],["循环最大运行时间",{"2":{"9":1}}],["新建任务后准备时间",{"2":{"9":1}}],["为",{"2":{"55":2}}],["为1111111111",{"2":{"55":1}}],["为了帮助用户发起请求",{"2":{"18":1}}],["为正则表达式匹配模式",{"2":{"9":1}}],["为网址匹配模式",{"2":{"9":1}}],["全局代理黑名单匹配规则",{"2":{"9":1}}],["全局代理黑名单模式",{"2":{"9":1}}],["全局代理域名列表",{"2":{"9":1}}],["用于设置在何时推送任务结果",{"2":{"65":1}}],["用于设置任务结果推送渠道",{"2":{"64":1}}],["用于加速公共模板更新",{"2":{"9":1}}],["用户为任务设置的变量等",{"2":{"18":1}}],["用户名",{"2":{"9":1,"13":1,"17":1}}],["用",{"2":{"9":1}}],["非框架前端使用https",{"2":{"9":1,"52":1}}],["发起",{"2":{"17":1}}],["发布到登录页面",{"2":{"17":1}}],["发布日期",{"2":{"2":1}}],["发送后导致页面跳转的页面",{"2":{"17":1}}],["发送的邮件链接启用https",{"2":{"9":1,"52":1}}],["发送时使用的邮箱",{"2":{"9":1,"52":1}}],["fullchain",{"2":{"58":1}}],["f",{"2":{"40":1}}],["fiddler",{"0":{"30":1},"2":{"30":1}}],["f12",{"2":{"28":1,"29":1}}],["for",{"2":{"23":2}}],["forwarded",{"2":{"23":3}}],["fetcher",{"2":{"21":2}}],["free",{"2":{"19":1}}],["from",{"2":{"9":1,"52":1}}],["failed",{"2":{"23":1}}],["falied",{"0":{"20":1,"21":1},"2":{"20":1,"21":1}}],["false关闭",{"2":{"9":1}}],["false",{"2":{"9":8,"52":2}}],["fastly",{"2":{"4":1}}],["任务结果批量推送",{"0":{"66":1}}],["任务结果批量推送等",{"2":{"63":1}}],["任务结果通知选择包括以下几种",{"2":{"65":1}}],["任务结果通知选择",{"0":{"65":1},"2":{"63":1}}],["任务结果推送渠道包括以下几种",{"2":{"64":1}}],["任务结果推送渠道",{"0":{"64":1},"2":{"63":1}}],["任务模板",{"2":{"42":1}}],["任务组和任务执行时间",{"2":{"35":1}}],["任务间隔",{"2":{"35":1}}],["任务运行中单个任务最大请求次数",{"2":{"9":1}}],["任务运行中单个",{"2":{"9":1}}],["任务日志",{"2":{"9":1}}],["任务定时执行方式",{"2":{"9":1}}],["相应惩罚分值",{"2":{"9":1}}],["相关功能的最新",{"2":{"2":1}}],["验证",{"2":{"9":1}}],["操作失败",{"2":{"9":1}}],["操作前请一定要记得备份数据库",{"2":{"1":1,"36":1}}],["算法",{"2":{"9":1}}],["on",{"2":{"58":1}}],["onnx",{"2":{"9":2}}],["or",{"2":{"58":1}}],["org",{"2":{"19":1,"55":1}}],["outlook",{"2":{"52":1}}],["o",{"2":{"37":1,"39":1,"40":1}}],["options",{"2":{"30":1}}],["operation",{"0":{"19":1},"2":{"19":1}}],["otherwise",{"2":{"19":1}}],["overflow",{"2":{"9":1}}],["ocr",{"2":{"2":1}}],["日志级别",{"2":{"9":1}}],["日志名称",{"2":{"9":1}}],["以下为",{"2":{"58":1}}],["以下请求是必要的",{"2":{"17":1}}],["以及对应的",{"2":{"55":1}}],["以实现异步响应前端和发起",{"2":{"42":1}}],["以便在发生特定事件",{"2":{"22":1,"48":1}}],["以便正确完成相关api",{"2":{"7":1}}],["以启用",{"2":{"9":2}}],["允许设置为",{"2":{"9":2}}],["会根据",{"2":{"66":1}}],["会推送通知",{"2":{"65":1}}],["会在控制台输出",{"2":{"9":1}}],["会导致无法拉取最新镜像",{"2":{"4":1}}],["时向你推送通知",{"2":{"22":1,"48":1}}],["时",{"2":{"9":1,"66":1}}],["密码",{"2":{"9":2,"13":1,"17":1,"34":1,"49":1,"50":1}}],["设置每隔多少秒推送一次任务结果",{"2":{"66":1}}],["设置",{"2":{"52":1}}],["设置为",{"2":{"9":3}}],["设置管理员",{"0":{"8":1}}],["需要在环境变量中配置以下参数",{"2":{"52":1}}],["需要安装ca证书",{"2":{"31":1}}],["需要安装",{"2":{"21":1}}],["需要使用redis或rediscloud时",{"2":{"9":1}}],["需要使用mysql时",{"2":{"9":1}}],["需要使用mysql时设置为",{"2":{"9":1}}],["需要先登出再登陆后才能获得完整管理员权限",{"2":{"8":1}}],["5m",{"2":{"58":1}}],["5s",{"2":{"9":1}}],["500",{"2":{"9":1}}],["50",{"2":{"9":2}}],["5",{"2":{"9":2}}],["key2",{"2":{"61":1,"62":2}}],["key1",{"2":{"61":1,"62":2}}],["keyserver",{"2":{"19":2}}],["keys",{"2":{"19":2}}],["key",{"2":{"9":1,"19":1,"52":2,"55":1,"58":2,"59":2}}],["建议使用容器或",{"2":{"21":1}}],["建议使用",{"2":{"20":1}}],["建议修改",{"2":{"9":1}}],["建议仅当",{"2":{"9":1}}],["静态文件url前缀",{"2":{"9":1}}],["实验性",{"2":{"9":1}}],["性能较弱",{"2":{"9":1}}],["模块在",{"2":{"21":1}}],["模块",{"2":{"21":1}}],["模块来发送",{"2":{"21":1}}],["模板支持",{"2":{"34":1}}],["模板一般需要哪些请求",{"0":{"17":1}}],["模板变量",{"0":{"15":1}}],["模板需要发布才会在",{"2":{"7":1}}],["模式",{"2":{"9":2,"16":1}}],["模式为旧版定时任务执行方式",{"2":{"9":1}}],["body",{"2":{"62":2}}],["bot1111111111",{"2":{"55":1}}],["botfather",{"2":{"55":1}}],["bot",{"0":{"55":1},"2":{"55":6,"64":1}}],["barkurl",{"2":{"53":1}}],["bark",{"0":{"53":1},"2":{"53":6,"64":1}}],["backports",{"2":{"19":3}}],["backport",{"2":{"19":1}}],["batch",{"2":{"9":3}}],["buster",{"2":{"19":3}}],["bug",{"0":{"16":1}}],["bin",{"2":{"39":1}}],["binux",{"2":{"9":2}}],["bind",{"2":{"9":1}}],["默认安装pycurl模组",{"2":{"21":1}}],["默认使用",{"2":{"11":1}}],["默认不启用",{"2":{"9":1}}],["默认与mail",{"2":{"9":1,"52":1}}],["默认为环境变量中的",{"2":{"52":1}}],["默认为false",{"2":{"9":1}}],["默认为true",{"2":{"9":2}}],["默认为push",{"2":{"9":1}}],["默认为1秒",{"2":{"9":1}}],["默认为1",{"2":{"9":1}}],["默认为",{"2":{"9":21,"66":1}}],["默认值",{"2":{"9":1,"52":2,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"61":1,"62":1}}],["weixin",{"2":{"58":2}}],["webhook",{"0":{"59":1},"2":{"59":3,"64":1}}],["web",{"2":{"29":1,"41":1}}],["websocket",{"2":{"9":5,"23":3}}],["wxpusher",{"0":{"57":1},"2":{"57":6,"64":1}}],["w+",{"2":{"34":1}}],["w",{"2":{"20":1,"21":1}}],["windows",{"0":{"30":1},"2":{"21":1}}],["windows平台无效",{"2":{"9":1}}],["will",{"2":{"19":1}}],["ws",{"2":{"9":5}}],["while",{"2":{"9":2}}],["warning",{"2":{"9":4}}],["worker",{"2":{"9":1}}],["wget",{"2":{"4":1,"37":1,"39":1,"40":1}}],["监听端口",{"2":{"9":1}}],["监听地址",{"2":{"9":1}}],["00",{"2":{"66":4}}],["04ee7237b7d453ec",{"2":{"19":1}}],["0",{"2":{"9":4,"19":1}}],["否则无法接收到推送消息",{"2":{"56":2}}],["否则无法使用",{"2":{"52":1}}],["否则会提示推送失败",{"2":{"49":1}}],["否则可能导致参数解析错误",{"2":{"48":1}}],["否则通过邮件重置密码及邮箱推送等功能无效",{"2":{"9":1}}],["否",{"2":{"9":57,"52":5,"55":3,"56":1,"58":2,"61":1,"62":2}}],["说明",{"2":{"9":1,"52":2,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"61":1,"62":1}}],["变量名",{"2":{"9":1,"52":2}}],["ecdhe",{"2":{"58":1}}],["echo",{"2":{"9":2,"19":1}}],["edge",{"0":{"28":1}}],["exec",{"2":{"39":1}}],["example",{"2":{"23":1,"53":1,"61":1,"62":1}}],["extra",{"2":{"9":2}}],["error",{"0":{"20":1},"2":{"20":1}}],["errno",{"0":{"19":1},"2":{"19":1}}],["etc",{"2":{"19":1,"58":2}}],["empty",{"2":{"9":1}}],["email",{"2":{"8":1}}],["evil",{"2":{"9":2}}],["encoding",{"2":{"9":1}}],["engine",{"2":{"9":2}}],["env",{"2":{"6":1,"12":5,"13":2}}],["your",{"2":{"8":1}}],["yml",{"2":{"4":3,"38":1}}],["中开启",{"2":{"56":1}}],["中",{"2":{"56":2,"63":1}}],["中设置推送方式的触发条件",{"2":{"63":1}}],["中设置了",{"2":{"56":2}}],["中设置参数",{"2":{"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1}}],["中获取",{"2":{"55":2,"56":1,"57":2,"58":3,"59":1}}],["中获取对应的",{"2":{"54":1}}],["中填写了",{"2":{"49":1,"50":1}}],["中注册推送方式后",{"2":{"49":1,"50":1,"63":1}}],["中注册不同的推送工具",{"2":{"48":1}}],["中使用",{"0":{"13":1}}],["中配置邮箱服务器",{"0":{"12":1}}],["中审批通过",{"2":{"7":1}}],["中展示",{"2":{"7":1}}],["中创建一个新的应用",{"2":{"5":1}}],["访问并登录",{"2":{"33":1}}],["访问网页",{"2":{"7":1}}],["访问",{"2":{"7":1}}],["启动",{"2":{"7":1}}],["修改",{"2":{"7":1}}],["修改相关设置",{"2":{"7":1}}],["id=222222222",{"2":{"55":1}}],["id",{"2":{"55":3,"58":3}}],["imap",{"2":{"52":1}}],["imap功能为什么需要先设置独立密码",{"2":{"52":1}}],["imap功能",{"2":{"52":1}}],["imap服务器地址设置",{"2":{"52":1}}],["imap服务",{"2":{"52":3}}],["import",{"0":{"21":1},"2":{"21":1}}],["impersonate",{"2":{"2":1}}],["it",{"2":{"39":1}}],["ios",{"0":{"31":1}}],["i",{"2":{"28":1}}],["issue",{"2":{"16":1,"23":1}}],["ip地址段",{"2":{"56":2}}],["ip",{"2":{"9":1,"23":2,"56":1}}],["interval",{"2":{"9":1}}],["index",{"2":{"9":1}}],["install",{"2":{"7":1,"19":3}}],["900",{"2":{"9":1}}],["9",{"2":{"7":1}}],["=",{"2":{"7":1,"9":1}}],["gcm",{"2":{"58":1}}],["gmail",{"2":{"52":1}}],["general",{"2":{"31":1}}],["get",{"0":{"61":1},"2":{"19":1,"60":1,"61":3}}],["googleapps",{"2":{"26":1}}],["gitee",{"2":{"37":1,"39":1,"40":1}}],["github",{"2":{"9":1,"19":1,"46":2}}],["git",{"2":{"7":1}}],["gt",{"2":{"7":1,"22":1,"28":1,"29":2,"31":3,"48":1,"49":1,"50":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"63":2}}],["gh",{"2":{"4":1}}],["源码部署更新",{"0":{"37":1}}],["源码部署",{"0":{"7":1}}],["框架暂不支持钉钉加签推送",{"2":{"56":1}}],["框架提供以下推送方式",{"2":{"51":1}}],["框架提供多种推送方式",{"2":{"48":1}}],["框架的用户邮箱和密码",{"2":{"49":1,"50":1}}],["框架会提示以下警告信息",{"2":{"20":1,"21":1}}],["框架",{"2":{"6":1,"20":1,"21":1,"41":1}}],["框架名称可能不同",{"2":{"5":1}}],["才能正常完成相关api请求",{"2":{"6":1}}],["后续将提供自定义插件支持",{"2":{"42":1}}],["后缀",{"2":{"9":2}}],["后",{"2":{"6":1}}],["或者",{"2":{"55":1,"58":1}}],["或者控制台显示",{"2":{"23":1}}],["或转到",{"2":{"29":1}}],["或从",{"2":{"28":1}}],["或将不同运行中的",{"2":{"6":1}}],["或",{"0":{"28":1},"2":{"6":1,"7":1,"9":1}}],["注意",{"2":{"6":1}}],["端口号",{"2":{"6":1}}],["网易邮箱",{"2":{"52":1}}],["网易企业邮箱",{"2":{"52":1}}],["网络",{"2":{"28":3}}],["网络模式创建容器",{"2":{"6":1}}],["网址",{"2":{"2":1}}],["使用下载按钮旁边的",{"2":{"34":1}}],["使用组选择器",{"2":{"34":1}}],["使用变量抽取",{"2":{"34":1}}],["使用正确和错误的用户名进行测试",{"2":{"34":1}}],["使用密钥对用户数据进行加密",{"2":{"18":1}}],["使用该命令创建容器后",{"2":{"6":1}}],["使用",{"2":{"6":1,"11":1,"20":1,"21":1,"34":1,"42":1,"60":1,"61":1,"62":2}}],["anull",{"2":{"58":1}}],["analyzer",{"2":{"26":1}}],["agentsecret",{"2":{"58":1}}],["agentid",{"2":{"58":2}}],["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",{"2":{"55":4}}],["ab",{"2":{"34":1}}],["about",{"2":{"31":1}}],["a",{"2":{"19":1}}],["arm32",{"2":{"19":1}}],["accelerate",{"2":{"9":1}}],["allow",{"2":{"9":1}}],["auth",{"2":{"9":1}}],["auto",{"2":{"9":1}}],["aes128",{"2":{"58":1}}],["aes加密密钥",{"2":{"9":1}}],["aes",{"2":{"9":1}}],["addr",{"2":{"23":1}}],["address",{"2":{"8":1}}],["add",{"2":{"19":1,"23":1}}],["adv",{"2":{"19":1}}],["admin",{"2":{"8":1}}],["apt",{"2":{"19":5}}],["api中的",{"2":{"55":1}}],["api请求的evil限制",{"2":{"9":1}}],["api",{"0":{"15":1},"2":{"6":2,"7":2,"15":1,"42":2,"52":1,"53":2,"55":4}}],["apptoken",{"2":{"57":1}}],["apps",{"2":{"26":1}}],["app",{"2":{"6":2,"11":2,"12":1,"13":1,"19":2,"39":2,"53":2}}],["amp",{"2":{"4":2,"37":2,"38":2,"39":2,"40":2,"42":1,"55":1,"61":1}}],["scheme",{"2":{"55":1}}],["sckey",{"2":{"54":1}}],["skey",{"2":{"54":1}}],["stream",{"0":{"31":1},"2":{"31":1}}],["stackoverflow",{"2":{"19":1}}],["starttls",{"2":{"9":1,"52":1}}],["static",{"2":{"9":2}}],["sources",{"2":{"19":2}}],["sudo",{"2":{"19":4}}],["subscribe",{"2":{"9":2,"32":1}}],["signing",{"2":{"19":1}}],["size",{"2":{"9":3}}],["session",{"2":{"58":1}}],["sendmessage",{"2":{"55":1}}],["sendkey",{"2":{"54":1}}],["settings",{"2":{"31":1}}],["setting",{"2":{"31":1}}],["set",{"2":{"23":6}}],["server",{"0":{"54":1},"2":{"9":1,"23":2,"54":3,"58":2,"64":1}}],["secret",{"2":{"9":1,"58":1}}],["ssl",{"2":{"9":1,"52":1,"58":9}}],["smtp及imap",{"2":{"52":1}}],["smtp配置方法",{"2":{"52":1}}],["smtp开启方式",{"2":{"52":1}}],["smtp=stmp服务器",{"2":{"12":1}}],["smtp",{"2":{"9":1,"52":8}}],["sw",{"2":{"9":1}}],["sqlalchmey",{"2":{"9":11}}],["sql",{"2":{"9":17}}],["sqlite3",{"2":{"9":1,"11":1}}],["src",{"2":{"6":2,"11":2,"12":1,"13":1,"19":2,"39":2}}],["sha256",{"2":{"58":1}}],["shift",{"2":{"28":1}}],["shpython",{"2":{"7":1,"8":1}}],["shdocker",{"2":{"6":1,"12":1,"13":1}}],["sh",{"2":{"4":1,"6":1,"7":3,"11":1,"19":1,"20":1,"21":1,"37":5,"38":1,"39":6,"40":5}}],["uid",{"2":{"57":2}}],["undefined",{"0":{"23":1},"2":{"23":1}}],["ubuntu",{"2":{"19":1}}],["userid",{"2":{"55":2}}],["username",{"2":{"34":1,"55":1}}],["user=用户名",{"2":{"12":1}}],["user0isadmin",{"2":{"9":1}}],["user相同",{"2":{"9":1,"52":1}}],["user",{"2":{"9":2,"52":2,"55":1}}],["use",{"2":{"9":2}}],["usr",{"2":{"6":2,"11":2,"12":1,"13":1,"19":2,"39":2}}],["url=mysql",{"2":{"13":1}}],["url",{"2":{"9":6,"55":3,"56":2,"58":2,"61":1,"62":1}}],["upgrade",{"2":{"23":3}}],["update",{"2":{"19":1,"37":3,"39":3,"40":3}}],["up",{"2":{"4":1,"38":1}}],["value2",{"2":{"61":1,"62":1}}],["value1",{"2":{"61":1,"62":1}}],["verify",{"2":{"19":1}}],["version",{"2":{"7":1,"23":1}}],["v",{"2":{"6":2,"12":1,"13":1}}],["vi",{"2":{"4":1,"7":1}}],["86400",{"2":{"66":1}}],["8",{"2":{"9":4}}],["80",{"2":{"6":1,"12":1,"13":1,"23":1}}],["8923",{"2":{"6":3,"7":2,"9":1,"12":1,"13":1}}],["nginx",{"2":{"58":4}}],["nginxserver",{"2":{"23":1,"58":1}}],["nginx反向代理websocket服务连接报错",{"2":{"23":1}}],["non",{"2":{"19":1}}],["no",{"2":{"9":6,"21":1}}],["notepad",{"2":{"9":1}}],["not",{"0":{"19":1},"2":{"9":1,"19":1}}],["new",{"2":{"9":1,"19":1}}],["network",{"2":{"29":1}}],["net=host",{"2":{"6":1}}],["net",{"2":{"4":1}}],["named",{"2":{"21":1}}],["name",{"2":{"6":2,"9":4,"11":2,"12":1,"13":1,"23":2,"58":1}}],["运行",{"0":{"6":1}}],["点击停止抓拍结束本次抓拍",{"2":{"31":1}}],["点击开始抓包按钮",{"2":{"31":1}}],["点击",{"2":{"5":1,"32":2,"33":2,"35":1}}],["34",{"2":{"21":1}}],["39",{"2":{"19":2,"21":2}}],["30s",{"2":{"9":1}}],["30",{"2":{"9":3}}],["3600",{"2":{"9":2}}],["3",{"0":{"6":1,"30":1,"32":1},"2":{"5":1,"32":1,"58":1,"65":2}}],["文件列表",{"2":{"32":1}}],["文件保存在",{"2":{"11":1}}],["文件的内容不受通过",{"2":{"7":1}}],["文件",{"0":{"33":1},"2":{"5":1,"33":1}}],["编辑器和",{"2":{"41":1}}],["编辑模板",{"0":{"34":1},"2":{"32":1}}],["编辑",{"2":{"5":1}}],["如何打开pop3",{"2":{"52":1}}],["如何开启客户端协议",{"2":{"52":1}}],["如何开启qq邮箱的pop3",{"2":{"52":1}}],["如何开启腾讯企业邮箱的pop",{"2":{"52":1}}],["如何更新",{"0":{"45":1}}],["如何部署",{"0":{"43":1}}],["如何使用客户端授权密码",{"2":{"52":1}}],["如何使用pop3",{"2":{"52":1}}],["如何使用",{"0":{"24":1,"44":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1},"2":{"44":1,"52":1}}],["如何注册推送方式",{"0":{"22":1}}],["如何提交",{"0":{"16":1}}],["如何查看当前框架支持的",{"0":{"15":1}}],["如何自己搭建",{"0":{"14":1}}],["如何在",{"0":{"12":1,"13":1}}],["如何备份和恢复数据库",{"0":{"11":1}}],["如",{"2":{"9":1,"55":1}}],["如果留空",{"2":{"55":3,"56":1,"58":2,"61":1,"62":2}}],["如果您配置了",{"2":{"52":1}}],["如果您使用的是源码部署方式",{"2":{"7":1}}],["如果你使用",{"2":{"58":1}}],["如果你使用的是自建",{"2":{"53":1}}],["如果你使用的是以下邮箱",{"2":{"52":1}}],["如果你在",{"2":{"56":2}}],["如果你不需要使用",{"2":{"20":1,"21":1}}],["如果推送方式可用",{"2":{"49":1}}],["如果参数值为空",{"2":{"48":1}}],["如果它是灰色的",{"2":{"28":1}}],["如果没有安装",{"2":{"20":1,"21":1}}],["如果是的话",{"2":{"19":1}}],["如果是",{"2":{"19":1}}],["如果还是不放心",{"2":{"18":1}}],["如果前端需要https",{"2":{"9":1,"52":1}}],["如登录",{"2":{"9":1}}],["如需设置环境变量请点击",{"2":{"5":1}}],["如不需要ocr功能或者硬盘空间不大于600m",{"2":{"4":1,"5":1}}],["配置示例",{"2":{"58":1}}],["配置已默认安装",{"2":{"20":1}}],["配置环境变量",{"0":{"9":1}}],["配置相关设置",{"2":{"5":1}}],["配置描述见下文",{"2":{"4":1,"5":1}}],["图标",{"2":{"5":1}}],["在请求编辑中使用测试面板测试模板是否正确返回",{"2":{"34":1}}],["在应用页面",{"2":{"31":1}}],["在框架中并不是必须的",{"2":{"20":1,"21":1}}],["在pycurl环境下部分请求可能导致request错误时",{"2":{"9":1}}],["在",{"2":{"5":1,"49":1,"50":1,"63":2}}],["222222222",{"2":{"55":3}}],["28",{"2":{"20":1}}],["20",{"2":{"9":2,"19":1}}],["20xxxxxx",{"2":{"2":1}}],["2",{"0":{"5":1,"27":1,"28":1,"29":2,"30":1,"31":1},"1":{"28":1,"29":1,"30":1,"31":1},"2":{"5":4,"19":1,"58":1}}],["拉取",{"2":{"4":1}}],["阿里云镜像源",{"2":{"4":1}}],["请将",{"2":{"53":1,"56":2}}],["请将模板里",{"2":{"6":1}}],["请在环境变量中配置",{"2":{"52":1}}],["请在环境变量中配置以下参数",{"2":{"52":1}}],["请在遇到问题后开启",{"2":{"16":1}}],["请确保",{"2":{"50":1}}],["请确保以下条件已满足",{"2":{"49":1}}],["请务必保留该参数位置后的",{"2":{"48":1}}],["请选择",{"2":{"30":1}}],["请参考",{"2":{"22":1,"43":1,"44":1,"45":1}}],["请参考此镜像的构建文件",{"2":{"14":1}}],["请注意框架仅需映射",{"2":{"19":1}}],["请升级以上组件",{"2":{"19":1}}],["请检查反向代理相关配置是否正确",{"2":{"23":1}}],["请检查是否将容器内的",{"2":{"19":1}}],["请检查",{"2":{"19":1}}],["请进入框架首页",{"2":{"15":1}}],["请手动将模板中",{"2":{"7":1}}],["请先cd到框架源码根目录",{"2":{"7":1}}],["请勿在",{"2":{"56":1}}],["请勿同时运行新旧版",{"2":{"6":1}}],["请勿使用",{"2":{"4":1}}],["请求改为",{"2":{"7":1}}],["请求",{"2":{"6":1,"7":1,"17":1,"21":1,"28":1,"29":1,"30":1,"31":1,"42":1}}],["请使用反向代理",{"2":{"9":1,"52":1}}],["请使用",{"2":{"4":1,"5":1}}],["该镜像仅去除了ocr相关功能",{"2":{"4":1,"5":1}}],["镜像",{"0":{"14":1},"2":{"4":1,"5":1}}],["命令在新容器中恢复数据库文件",{"2":{"11":1}}],["命令备份数据库文件",{"2":{"11":1}}],["命令",{"2":{"4":1}}],["执行命令后重启容器",{"2":{"38":1,"39":1}}],["执行命令后重启进程",{"2":{"37":1,"40":1}}],["执行以下命令复制配置文件",{"2":{"7":1}}],["执行",{"2":{"4":1}}],["md5",{"2":{"58":1}}],["mydomain",{"2":{"55":4,"58":4}}],["mysql",{"0":{"13":1},"2":{"9":2}}],["mit",{"2":{"42":1}}],["module",{"0":{"21":1},"2":{"21":2}}],["mode",{"2":{"9":1}}],["media",{"2":{"58":3}}],["message",{"2":{"9":1}}],["method",{"2":{"9":1}}],["main",{"2":{"19":1}}],["mailgun",{"2":{"52":8}}],["mail",{"2":{"9":9,"12":4,"52":9}}],["max",{"2":{"9":4}}],["maria",{"2":{"9":1,"13":1}}],["master",{"2":{"4":1,"37":1,"39":1,"40":1}}],["multi",{"2":{"9":2}}],["mkdir",{"2":{"4":1}}],["t=",{"2":{"61":1}}],["tlsv1",{"2":{"58":4}}],["tg",{"2":{"55":10}}],["text1111111111",{"2":{"55":1}}],["text=helloworld",{"2":{"55":1}}],["telegram",{"0":{"55":1},"2":{"55":9,"64":1}}],["tee",{"2":{"19":1}}],["t",{"2":{"19":1,"60":1,"61":1,"62":1}}],["they",{"2":{"19":1}}],["the",{"2":{"19":2}}],["token",{"2":{"55":4,"56":2,"57":1}}],["tornado",{"2":{"41":1,"42":2}}],["tools",{"2":{"29":1,"30":1}}],["toolbox",{"2":{"26":1}}],["to",{"2":{"19":2,"20":1}}],["today",{"2":{"4":1,"37":1,"39":1,"40":1}}],["taxel",{"2":{"19":1}}],["task",{"2":{"9":3}}],["tag",{"2":{"2":1}}],["trust",{"2":{"31":1}}],["true",{"2":{"9":16,"52":1}}],["traceback",{"2":{"9":1}}],["timeout",{"2":{"9":3,"58":1}}],["type=mysql",{"2":{"13":1}}],["type",{"2":{"9":1}}],["txt",{"2":{"7":1}}],["jinja2",{"0":{"15":1},"2":{"34":1}}],["json",{"2":{"9":1,"61":1,"62":2}}],["json文件名",{"2":{"9":1}}],["jsdelivr",{"2":{"4":1,"9":1}}],["jawsdb",{"2":{"9":1,"13":1}}],["ja3",{"2":{"2":2}}],["下载模板在自己的服务器上运行",{"2":{"18":1}}],["下载",{"2":{"4":1,"34":1}}],["$scheme",{"2":{"23":1}}],["$proxy",{"2":{"23":1}}],["$remote",{"2":{"23":1}}],["$host",{"2":{"23":1}}],["$http",{"2":{"23":1}}],["$",{"2":{"4":2,"6":2,"12":1,"13":1}}],["pull",{"2":{"19":1,"38":1}}],["push",{"2":{"9":3,"55":2,"56":2,"58":2,"61":1,"62":1}}],["plextraktsync",{"2":{"19":1}}],["plugin=",{"2":{"9":1}}],["packages",{"2":{"19":1}}],["password=密码",{"2":{"12":1}}],["password",{"2":{"9":1,"52":1,"55":2}}],["pass",{"2":{"9":1,"23":1,"58":1}}],["permitted",{"0":{"19":1}}],["permissionerror",{"0":{"19":1},"2":{"19":1}}],["png",{"2":{"9":2}}],["pip",{"2":{"19":1}}],["pip3",{"2":{"7":1}}],["pi",{"2":{"19":1}}],["pic",{"2":{"9":3,"55":2,"56":2,"58":2}}],["ping超时时间",{"2":{"9":1}}],["ping间隔",{"2":{"9":1}}],["ping",{"2":{"9":3}}],["post",{"0":{"62":1},"2":{"60":1,"62":5}}],["pop",{"2":{"52":1}}],["pool",{"2":{"9":10}}],["port=邮箱服务器端口",{"2":{"12":1}}],["port=8923",{"2":{"6":1}}],["port",{"2":{"9":4,"13":1,"23":1,"52":1,"55":2}}],["private",{"2":{"58":1}}],["print",{"2":{"9":1}}],["protocols",{"2":{"58":1}}],["proto",{"2":{"23":1}}],["proxy",{"2":{"9":2,"21":2,"23":8,"55":3,"58":3}}],["proxies",{"2":{"9":1}}],["process=true时无效",{"2":{"9":1}}],["process",{"2":{"9":1}}],["prefer",{"2":{"58":1}}],["prefix",{"2":{"9":1}}],["pre",{"2":{"9":1}}],["python",{"2":{"19":1}}],["python3",{"2":{"7":1}}],["pycurl官方文档",{"2":{"21":1}}],["pycurl",{"0":{"21":1},"2":{"9":1,"21":6}}],["py",{"2":{"7":5,"8":1,"9":1}}],["pwd",{"2":{"4":2,"6":2,"12":1,"13":1}}],["p",{"2":{"4":1,"6":1,"12":1,"13":1}}],["目录即可",{"2":{"19":1}}],["目录映射至容器外部",{"2":{"19":1}}],["目录下",{"2":{"11":1}}],["目录",{"2":{"4":1}}],["12",{"2":{"66":2}}],["1111111111",{"2":{"55":1}}],["1500",{"2":{"9":2}}],["15",{"2":{"9":1}}],["10061",{"0":{"20":1},"2":{"20":1}}],["100",{"2":{"9":2}}],["10mb",{"2":{"9":1}}],["10485760",{"2":{"9":1}}],["10",{"2":{"9":2,"19":1}}],["1panel",{"0":{"5":1},"2":{"5":3}}],["1",{"0":{"4":1,"19":1,"26":1,"28":1},"2":{"5":1,"9":2,"19":1,"23":2,"58":1}}],["不用担心丢失",{"2":{"34":1}}],["不填",{"2":{"9":2}}],["不同",{"2":{"5":1}}],["不保证稳定性",{"2":{"2":1}}],["不支持",{"2":{"2":1}}],["同步最新源码",{"2":{"2":1}}],["dhe",{"2":{"58":1}}],["dingding",{"2":{"56":1}}],["direct",{"2":{"9":2}}],["data",{"2":{"62":1}}],["database",{"2":{"11":3}}],["day",{"2":{"9":1,"53":2}}],["dns",{"2":{"9":1}}],["db",{"2":{"9":2,"11":3,"13":1}}],["domain=域名",{"2":{"12":1}}],["domain",{"2":{"9":2,"52":7}}],["dockerfile",{"2":{"14":1,"19":1}}],["dockerhub",{"2":{"2":1}}],["docker",{"0":{"1":1,"4":1,"6":1,"12":1,"13":1,"14":1,"38":1,"39":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"1":1,"2":1,"4":6,"6":1,"11":5,"19":1,"20":2,"21":1,"38":3,"39":1}}],["deb",{"2":{"19":1}}],["debian",{"2":{"19":4}}],["debug",{"2":{"9":5,"16":1}}],["delay",{"2":{"9":1}}],["developer",{"2":{"29":1}}],["dev",{"2":{"2":1}}],["d",{"2":{"4":1,"6":2,"12":1,"13":1,"19":1,"38":1}}],["指定访问域名",{"2":{"9":1}}],["指定",{"2":{"2":1}}],["指纹被识别为",{"2":{"2":1}}],["连接池超时时间",{"2":{"9":1}}],["连接池回收时间",{"2":{"9":1}}],["连接池最大溢出",{"2":{"9":1}}],["连接池大小",{"2":{"9":1}}],["连接池日志级别",{"2":{"9":1}}],["连接池日志名称",{"2":{"9":1}}],["连接",{"2":{"2":1,"23":1,"30":1}}],["qq",{"2":{"58":2}}],["qq邮箱",{"2":{"52":1}}],["qyapi",{"2":{"58":2}}],["qywx",{"2":{"58":6,"59":1}}],["questions",{"2":{"19":1}}],["queue",{"2":{"9":5}}],["quot",{"2":{"9":31,"23":2,"52":8,"53":2,"54":2,"55":10,"56":4,"57":4,"58":10,"59":2,"61":12,"62":22}}],["quic",{"2":{"2":1}}],["qdtoday",{"2":{"2":1,"4":1,"5":1,"6":2,"12":1,"13":1}}],["qd",{"0":{"17":1,"41":1},"1":{"42":1,"43":1,"44":1,"45":1,"46":1},"2":{"1":1,"2":1,"4":6,"5":4,"6":8,"9":19,"11":1,"12":3,"13":3,"20":3,"21":3,"23":1,"33":1,"37":2,"39":2,"40":2,"41":1,"42":1,"48":1,"49":1,"50":1,"51":1,"56":3}}],["和过滤器用于模板制作",{"2":{"42":1}}],["和",{"0":{"15":1},"2":{"2":1,"49":1,"50":1,"52":1,"60":2,"66":1}}],["的组合",{"2":{"55":1}}],["的",{"2":{"55":1}}],["的模板",{"2":{"34":1}}],["的连接池日志输出",{"2":{"9":1}}],["的日志输出",{"2":{"9":1}}],["的问题",{"2":{"2":1}}],["的最简单方式",{"2":{"1":1}}],["ciphers",{"2":{"58":2}}],["cer",{"2":{"58":1}}],["certificate",{"2":{"31":1,"58":2}}],["capture",{"2":{"30":1}}],["ctrl",{"2":{"28":1}}],["cn",{"2":{"26":1}}],["chat",{"2":{"55":3}}],["charsets",{"2":{"9":1}}],["chrome",{"0":{"28":1},"2":{"28":1}}],["chrole",{"2":{"8":1}}],["cp",{"2":{"7":1,"11":4}}],["cdn",{"2":{"9":1}}],["cd",{"2":{"4":1,"34":1,"37":1,"38":1,"40":1}}],["corpid",{"2":{"58":2}}],["code",{"2":{"9":1}}],["connects",{"2":{"30":1}}],["connection",{"2":{"23":1}}],["connections",{"2":{"9":1}}],["connecting",{"2":{"20":1}}],["connect",{"0":{"20":1},"2":{"20":1}}],["contrib",{"2":{"19":1}}],["container",{"2":{"11":2}}],["content",{"2":{"9":1}}],["config目录下自定义onnx对应自定义charsets",{"2":{"9":1}}],["config目录下自定义onnx文件名",{"2":{"9":1}}],["configuration",{"2":{"4":1,"5":1}}],["config",{"2":{"4":1,"6":4,"7":4,"11":3,"12":2,"13":2,"19":1}}],["cookie在客户端中保留的天数",{"2":{"9":1}}],["cookie加密密钥",{"2":{"9":1}}],["cookie",{"2":{"9":2,"34":1}}],["compose",{"0":{"4":1,"38":1},"2":{"4":5,"5":1,"20":2,"38":3}}],["com",{"2":{"2":1,"19":3,"23":1,"26":1,"37":1,"39":1,"40":1,"53":1,"55":4,"58":6,"61":1,"62":1}}],["curl",{"2":{"2":2,"9":2}}],["集成",{"2":{"2":1}}],["去除",{"2":{"2":1}}],["length请求",{"2":{"9":1}}],["length",{"2":{"9":1}}],["level",{"2":{"9":2}}],["lang=zh",{"2":{"26":1}}],["lan",{"2":{"9":1}}],["latest",{"2":{"2":3,"4":1,"5":1}}],["linux",{"2":{"21":1}}],["libcurl",{"2":{"21":1}}],["libseccomp2",{"2":{"19":1}}],["libseccomp",{"2":{"19":2}}],["listen",{"2":{"23":1,"58":1}}],["list",{"2":{"19":3}}],["limit",{"2":{"9":2}}],["lifo",{"2":{"9":2}}],["lite",{"2":{"2":1,"4":1,"5":1}}],["log=",{"2":{"61":1}}],["log",{"2":{"34":1,"60":1,"61":1,"62":1}}],["logging",{"2":{"9":4}}],["location",{"2":{"23":1,"58":1}}],["local",{"2":{"7":3}}],["localhost",{"2":{"6":2,"7":3,"20":1}}],["loop",{"2":{"9":1}}],["版本是否小于",{"2":{"19":2}}],["版本显示",{"2":{"5":1}}],["版本号表示为",{"2":{"2":1}}],["版本",{"2":{"2":3}}],["含义",{"2":{"2":1}}],["rc4",{"2":{"58":1}}],["rsa",{"2":{"58":1}}],["raw",{"2":{"37":1,"39":1,"40":1}}],["raspberry",{"2":{"19":1}}],["real",{"2":{"23":1}}],["repository",{"2":{"19":1}}],["recv",{"2":{"19":1}}],["recycle",{"2":{"9":1}}],["retry",{"2":{"9":3}}],["request",{"2":{"9":1}}],["requirements",{"2":{"7":1}}],["regexp",{"2":{"9":1}}],["redisdb",{"2":{"20":2}}],["redis",{"0":{"20":1},"2":{"9":1,"20":5}}],["rediscloud",{"2":{"9":2}}],["reload",{"2":{"9":1}}],["release",{"2":{"2":4}}],["run",{"2":{"6":2,"7":1,"12":1,"13":1}}],["r",{"2":{"2":1,"7":1}}],["high",{"2":{"58":1}}],["har",{"0":{"25":1,"26":1,"33":1},"1":{"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1},"2":{"26":2,"28":1,"29":1,"30":1,"32":1,"33":1,"41":1,"42":1}}],["header",{"2":{"23":6,"34":1,"61":3,"62":3}}],["hostname",{"2":{"9":2,"13":1}}],["host",{"2":{"6":1,"23":1,"55":5,"58":3}}],["httparchive",{"2":{"30":1}}],["httpredir",{"2":{"19":1}}],["http",{"2":{"6":2,"7":3,"9":1,"19":1,"21":2,"23":2,"28":1,"29":1,"30":1,"31":1,"41":1,"42":2,"53":1,"55":2,"58":1}}],["http3",{"2":{"2":1}}],["https",{"2":{"2":1,"4":1,"9":1,"19":2,"26":1,"30":3,"37":1,"39":1,"40":1,"52":1,"53":2,"55":2,"58":3,"61":1,"62":1}}],["hub",{"2":{"2":1}}],["容器名",{"2":{"39":1}}],["容器已预装curl环境",{"2":{"21":1}}],["容器数据库映射为同一文件",{"2":{"6":1}}],["容器内部无法连通外部网络时尝试该命令",{"2":{"6":1}}],["容器",{"0":{"2":1},"2":{"4":1,"20":1}}],["容器部署更新",{"0":{"39":1}}],["容器部署时",{"2":{"11":1}}],["容器部署是部署",{"2":{"1":1}}],["容器部署",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1}}],["部署更新",{"0":{"38":1}}],["部署方法",{"0":{"3":1},"1":{"4":1,"5":1,"6":1}}],["部署",{"0":{"0":1,"5":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"2":{"20":1,"43":1}}]],"serializationVersion":2}';export{t as default}; +const t='{"documentCount":67,"nextId":67,"documentIds":{"0":"/qd/zh_CN/guide/deployment.html#部署","1":"/qd/zh_CN/guide/deployment.html#docker-容器部署","2":"/qd/zh_CN/guide/deployment.html#容器","3":"/qd/zh_CN/guide/deployment.html#部署方法","4":"/qd/zh_CN/guide/deployment.html#_1-docker-compose-推荐","5":"/qd/zh_CN/guide/deployment.html#_2-1panel-部署","6":"/qd/zh_CN/guide/deployment.html#_3-docker-运行","7":"/qd/zh_CN/guide/deployment.html#源码部署","8":"/qd/zh_CN/guide/deployment.html#设置管理员","9":"/qd/zh_CN/guide/deployment.html#配置环境变量","10":"/qd/zh_CN/guide/faq.html#常见问题","11":"/qd/zh_CN/guide/faq.html#如何备份和恢复数据库","12":"/qd/zh_CN/guide/faq.html#如何在-docker-中配置邮箱服务器","13":"/qd/zh_CN/guide/faq.html#如何在-docker-中使用-mysql","14":"/qd/zh_CN/guide/faq.html#如何自己搭建-docker-镜像","15":"/qd/zh_CN/guide/faq.html#如何查看当前框架支持的-api-和-jinja2-模板变量","16":"/qd/zh_CN/guide/faq.html#如何提交-bug-问题","17":"/qd/zh_CN/guide/faq.html#qd-模板一般需要哪些请求","18":"/qd/zh_CN/guide/faq.html#我的用户名和密码会被泄露吗","19":"/qd/zh_CN/guide/faq.html#提示错误信息-permissionerror-errno-1-operation-not-permitted","20":"/qd/zh_CN/guide/faq.html#提示警告信息-connect-redis-falied-error-10061","21":"/qd/zh_CN/guide/faq.html#提示警告信息-import-pycurl-module-falied","22":"/qd/zh_CN/guide/faq.html#如何注册推送方式","23":"/qd/zh_CN/guide/faq.html#公共模板更新页面提示错误代码为-undefined","24":"/qd/zh_CN/guide/how-to-use.html#如何使用","25":"/qd/zh_CN/guide/how-to-use.html#获取-har","26":"/qd/zh_CN/guide/how-to-use.html#_1-什么是-har","27":"/qd/zh_CN/guide/how-to-use.html#_2-抓包","28":"/qd/zh_CN/guide/how-to-use.html#_2-1-chrome-或-edge","29":"/qd/zh_CN/guide/how-to-use.html#_2-2-火狐","30":"/qd/zh_CN/guide/how-to-use.html#_2-3-windows-fiddler","31":"/qd/zh_CN/guide/how-to-use.html#_2-4-ios-stream","32":"/qd/zh_CN/guide/how-to-use.html#_3-公共模板","33":"/qd/zh_CN/guide/how-to-use.html#上传-har-文件","34":"/qd/zh_CN/guide/how-to-use.html#编辑模板","35":"/qd/zh_CN/guide/how-to-use.html#创建定时任务","36":"/qd/zh_CN/guide/what-is-qd.html#什么是-qd","37":"/qd/zh_CN/guide/what-is-qd.html#特性","38":"/qd/zh_CN/guide/what-is-qd.html#如何部署","39":"/qd/zh_CN/guide/what-is-qd.html#如何使用","40":"/qd/zh_CN/guide/what-is-qd.html#如何更新","41":"/qd/zh_CN/guide/what-is-qd.html#讨论","42":"/qd/zh_CN/guide/update.html#更新方法","43":"/qd/zh_CN/guide/update.html#源码部署更新","44":"/qd/zh_CN/guide/update.html#docker-compose-部署更新","45":"/qd/zh_CN/guide/update.html#docker-容器部署更新","46":"/qd/zh_CN/guide/update.html#强制同步最新源码","47":"/qd/zh_CN/toolbox/pusher.html#推送工具","48":"/qd/zh_CN/toolbox/pusher.html#推送注册","49":"/qd/zh_CN/toolbox/pusher.html#推送注册测试","50":"/qd/zh_CN/toolbox/pusher.html#推送注册前值","51":"/qd/zh_CN/toolbox/pusher.html#推送方式","52":"/qd/zh_CN/toolbox/pusher.html#邮件推送","53":"/qd/zh_CN/toolbox/pusher.html#bark-推送","54":"/qd/zh_CN/toolbox/pusher.html#server-酱推送","55":"/qd/zh_CN/toolbox/pusher.html#telegram-bot-推送","56":"/qd/zh_CN/toolbox/pusher.html#钉钉推送","57":"/qd/zh_CN/toolbox/pusher.html#wxpusher-推送","58":"/qd/zh_CN/toolbox/pusher.html#企业微信应用推送","59":"/qd/zh_CN/toolbox/pusher.html#企业微信-webhook-推送","60":"/qd/zh_CN/toolbox/pusher.html#自定义推送","61":"/qd/zh_CN/toolbox/pusher.html#自定义-get-推送","62":"/qd/zh_CN/toolbox/pusher.html#自定义-post-推送","63":"/qd/zh_CN/toolbox/pusher.html#推送设置","64":"/qd/zh_CN/toolbox/pusher.html#任务结果推送渠道","65":"/qd/zh_CN/toolbox/pusher.html#任务结果通知选择","66":"/qd/zh_CN/toolbox/pusher.html#任务结果批量推送"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,1],"1":[2,1,6],"2":[1,3,40],"3":[1,3,1],"4":[5,4,48],"5":[3,4,33],"6":[3,4,44],"7":[1,1,47],"8":[1,1,10],"9":[1,1,287],"10":[1,1,1],"11":[2,1,27],"12":[4,1,24],"13":[5,1,28],"14":[4,1,3],"15":[6,1,8],"16":[4,1,6],"17":[3,1,11],"18":[2,1,13],"19":[8,1,97],"20":[6,1,39],"21":[5,1,46],"22":[1,1,10],"23":[2,1,58],"24":[2,1,1],"25":[2,2,1],"26":[4,3,11],"27":[2,3,1],"28":[5,5,39],"29":[2,5,15],"30":[4,5,25],"31":[4,5,22],"32":[2,3,17],"33":[3,2,14],"34":[1,2,40],"35":[1,2,14],"36":[3,1,13],"37":[1,3,24],"38":[1,3,3],"39":[1,3,3],"40":[1,3,3],"41":[1,3,4],"42":[1,1,3],"43":[1,1,17],"44":[3,1,14],"45":[2,1,23],"46":[1,1,18],"47":[1,1,1],"48":[1,1,17],"49":[1,2,22],"50":[1,2,18],"51":[1,1,3],"52":[1,2,90],"53":[2,2,33],"54":[2,2,20],"55":[3,2,92],"56":[1,2,46],"57":[2,2,20],"58":[1,2,93],"59":[3,2,19],"60":[1,2,15],"61":[3,3,36],"62":[3,3,35],"63":[1,1,14],"64":[1,2,16],"65":[1,2,14],"66":[1,2,20]},"averageFieldLength":[2.253731343283582,2,27.417910447761187],"storedFields":{"0":{"title":"部署","titles":[]},"1":{"title":"Docker 容器部署","titles":["部署"]},"2":{"title":"容器","titles":["部署","Docker 容器部署"]},"3":{"title":"部署方法","titles":["部署","Docker 容器部署"]},"4":{"title":"1. Docker Compose(推荐)","titles":["部署","Docker 容器部署","部署方法"]},"5":{"title":"2. 1Panel 部署","titles":["部署","Docker 容器部署","部署方法"]},"6":{"title":"3. Docker 运行","titles":["部署","Docker 容器部署","部署方法"]},"7":{"title":"源码部署","titles":["部署"]},"8":{"title":"设置管理员","titles":["部署"]},"9":{"title":"配置环境变量","titles":["部署"]},"10":{"title":"常见问题","titles":[]},"11":{"title":"如何备份和恢复数据库?","titles":["常见问题"]},"12":{"title":"如何在 Docker 中配置邮箱服务器?","titles":["常见问题"]},"13":{"title":"如何在 Docker 中使用 MySQL?","titles":["常见问题"]},"14":{"title":"如何自己搭建 Docker 镜像?","titles":["常见问题"]},"15":{"title":"如何查看当前框架支持的 API 和 Jinja2 模板变量?","titles":["常见问题"]},"16":{"title":"如何提交 bug 问题?","titles":["常见问题"]},"17":{"title":"QD 模板一般需要哪些请求?","titles":["常见问题"]},"18":{"title":"我的用户名和密码会被泄露吗?","titles":["常见问题"]},"19":{"title":"提示错误信息 PermissionError: [Errno 1] Operation not permitted?","titles":["常见问题"]},"20":{"title":"提示警告信息: Connect Redis falied: Error 10061","titles":["常见问题"]},"21":{"title":"提示警告信息: Import PyCurl module falied","titles":["常见问题"]},"22":{"title":"如何注册推送方式","titles":["常见问题"]},"23":{"title":"公共模板更新页面提示错误代码为 undefined","titles":["常见问题"]},"24":{"title":"如何使用?","titles":[]},"25":{"title":"获取 HAR","titles":["如何使用?"]},"26":{"title":"1. 什么是 HAR?","titles":["如何使用?","获取 HAR"]},"27":{"title":"2. 抓包","titles":["如何使用?","获取 HAR"]},"28":{"title":"2.1. Chrome 或 Edge","titles":["如何使用?","获取 HAR","2. 抓包"]},"29":{"title":"2.2. 火狐","titles":["如何使用?","获取 HAR","2. 抓包"]},"30":{"title":"2.3. Windows - Fiddler","titles":["如何使用?","获取 HAR","2. 抓包"]},"31":{"title":"2.4. IOS - Stream","titles":["如何使用?","获取 HAR","2. 抓包"]},"32":{"title":"3. 公共模板","titles":["如何使用?","获取 HAR"]},"33":{"title":"上传 HAR 文件","titles":["如何使用?"]},"34":{"title":"编辑模板","titles":["如何使用?"]},"35":{"title":"创建定时任务","titles":["如何使用?"]},"36":{"title":"什么是 QD?","titles":[]},"37":{"title":"特性","titles":["什么是 QD?"]},"38":{"title":"如何部署","titles":["什么是 QD?"]},"39":{"title":"如何使用","titles":["什么是 QD?"]},"40":{"title":"如何更新","titles":["什么是 QD?"]},"41":{"title":"讨论","titles":["什么是 QD?"]},"42":{"title":"更新方法","titles":[]},"43":{"title":"源码部署更新","titles":["更新方法"]},"44":{"title":"Docker Compose 部署更新","titles":["更新方法"]},"45":{"title":"Docker 容器部署更新","titles":["更新方法"]},"46":{"title":"强制同步最新源码","titles":["更新方法"]},"47":{"title":"推送工具","titles":[]},"48":{"title":"推送注册","titles":["推送工具"]},"49":{"title":"推送注册测试","titles":["推送工具","推送注册"]},"50":{"title":"推送注册前值","titles":["推送工具","推送注册"]},"51":{"title":"推送方式","titles":["推送工具"]},"52":{"title":"邮件推送","titles":["推送工具","推送方式"]},"53":{"title":"Bark 推送","titles":["推送工具","推送方式"]},"54":{"title":"Server 酱推送","titles":["推送工具","推送方式"]},"55":{"title":"Telegram Bot 推送","titles":["推送工具","推送方式"]},"56":{"title":"钉钉推送","titles":["推送工具","推送方式"]},"57":{"title":"WXPusher 推送","titles":["推送工具","推送方式"]},"58":{"title":"企业微信应用推送","titles":["推送工具","推送方式"]},"59":{"title":"企业微信 Webhook 推送","titles":["推送工具","推送方式"]},"60":{"title":"自定义推送","titles":["推送工具","推送方式"]},"61":{"title":"自定义 Get 推送","titles":["推送工具","推送方式","自定义推送"]},"62":{"title":"自定义 Post 推送","titles":["推送工具","推送方式","自定义推送"]},"63":{"title":"推送设置","titles":["推送工具"]},"64":{"title":"任务结果推送渠道","titles":["推送工具","推送设置"]},"65":{"title":"任务结果通知选择","titles":["推送工具","推送设置"]},"66":{"title":"任务结果批量推送","titles":["推送工具","推送设置"]}},"dirtCount":0,"index":[["秒",{"2":{"66":1}}],["进行一次批量推送",{"2":{"66":1}}],["进行推送注册测试时",{"2":{"49":1}}],["初次批量推送时间设置",{"2":{"66":1}}],["批量推送时间间隔",{"2":{"66":2}}],["批量推送时间设置",{"2":{"66":2}}],["半角双引号",{"2":{"61":1,"62":2}}],["表示要替换的日志和标题",{"2":{"60":1}}],["接口获取",{"2":{"58":1}}],["企业微信应用",{"2":{"58":2}}],["企业微信应用推送需要在",{"2":{"58":1}}],["企业微信应用推送",{"0":{"58":1},"2":{"64":1}}],["企业微信",{"0":{"59":1},"2":{"58":6,"59":3,"64":1}}],["企业邮箱的pop",{"2":{"52":1}}],["加签",{"2":{"56":1}}],["加密的用户数据包括用户上传的模板",{"2":{"18":1}}],["添加到",{"2":{"56":1}}],["地址添加到",{"2":{"56":1}}],["安全设置",{"2":{"56":3}}],["安装",{"2":{"5":1}}],["钉钉推送需要在",{"2":{"56":1}}],["钉钉推送",{"0":{"56":1},"2":{"56":1,"64":1}}],["因此最终填写形式形如",{"2":{"55":1}}],["那么在注册",{"2":{"55":1}}],["上面这个请求将会向222222222这个聊天发送一条helloworld消息",{"2":{"55":1}}],["上传刚刚保存的",{"2":{"33":1}}],["上传",{"0":{"33":1},"2":{"33":1}}],["假设你已经创建了一个具有自定义域名的",{"2":{"55":1}}],["示例",{"2":{"55":1}}],["代理企业微信应用推送",{"2":{"58":1}}],["代理",{"2":{"55":1}}],["代理地址",{"2":{"55":1}}],["则会在当天的",{"2":{"66":1}}],["则会收到一条推送消息",{"2":{"49":1}}],["则当自动执行失败",{"2":{"65":1}}],["则不设置",{"2":{"61":1,"62":2}}],["则不使用",{"2":{"55":1}}],["则使用环境变量",{"2":{"55":1,"56":1,"58":1}}],["则使用默认值",{"2":{"55":1,"58":1}}],["前缀",{"2":{"55":1,"58":1}}],["前值",{"2":{"50":1}}],["也可以带上",{"2":{"55":1,"58":1}}],["字段",{"2":{"55":1}}],["形式",{"2":{"55":1}}],["形式的",{"2":{"6":1,"7":1}}],["即每隔一天批量推送本次推送时间前86400秒内的任务结果",{"2":{"66":1}}],["即",{"2":{"55":1}}],["即可制作框架所需的",{"2":{"37":1}}],["即可通过",{"2":{"5":1}}],["应当为",{"2":{"55":1}}],["酱",{"2":{"54":1}}],["酱推送需要在",{"2":{"54":1}}],["酱推送",{"0":{"54":1},"2":{"54":1,"64":1}}],["例如设置为",{"2":{"65":1,"66":1}}],["例如",{"2":{"53":1,"55":2,"58":1,"61":1,"62":2}}],["例如定时任务执行失败",{"2":{"22":1,"48":1}}],["替换为你的",{"2":{"53":1}}],["客户端中获取",{"2":{"53":1}}],["参数名",{"2":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"61":1,"62":1}}],["参考下方的smtp开启方式和配置方法来获取你的smtp服务器地址和端口",{"2":{"52":1}}],["参考配置如下",{"2":{"23":1}}],["参考",{"2":{"23":1}}],["参考操作",{"2":{"19":1}}],["控制台中设置对应的",{"2":{"52":1}}],["并在",{"2":{"52":1}}],["值",{"2":{"52":2,"55":1,"56":1,"58":1}}],["对不支持双重验证的应用使用应用密码",{"2":{"52":1}}],["关联微信以及开启安全登录获取客户端专用密码",{"2":{"52":1}}],["关键配置",{"2":{"23":2}}],["成员如何绑定",{"2":{"52":1}}],["成功",{"2":{"34":1}}],["腾讯企业邮箱",{"2":{"52":1}}],["邮件推送无需在",{"2":{"52":1}}],["邮件推送",{"0":{"52":1},"2":{"64":1}}],["邮箱",{"2":{"49":1,"50":1,"52":1}}],["邮箱密码",{"2":{"9":1,"52":1}}],["邮箱用户名",{"2":{"9":1,"52":1}}],["邮箱smtp服务器端口",{"2":{"9":1,"52":1}}],["邮箱smtp服务器",{"2":{"9":1,"52":1}}],["查看推送注册前值时",{"2":{"50":1}}],["强制同步最新源码",{"0":{"46":1}}],["强烈建议修改",{"2":{"9":2}}],["所在目录",{"2":{"44":1}}],["到仓库代码根目录",{"2":{"46":1}}],["到",{"2":{"44":1}}],["到源码所在目录",{"2":{"43":1}}],["先进入容器后台",{"2":{"45":1}}],["先",{"2":{"43":1,"44":1,"46":1}}],["先ping一下",{"2":{"9":1}}],["讨论",{"0":{"41":1},"2":{"41":1}}],["许可证的开源项目",{"2":{"37":1}}],["内置多种",{"2":{"37":1}}],["插件支持",{"2":{"37":1}}],["特性",{"0":{"37":1}}],["定时任务自动执行",{"2":{"36":1}}],["定时执行模式失效时使用",{"2":{"9":1}}],["基于har",{"2":{"37":1}}],["基于",{"2":{"36":1}}],["一个",{"2":{"36":1}}],["是一个基于",{"2":{"37":1}}],["是",{"2":{"36":1,"52":5,"53":1,"54":1,"55":2,"56":1,"57":2,"58":3,"59":1,"61":1,"62":1}}],["是否允许curl使用headers中自定义content",{"2":{"9":1}}],["是否允许使用curl进行encoding操作",{"2":{"9":1}}],["是否允许开启定期推送",{"2":{"9":1}}],["是否关闭本机私有ip地址用户及localhost",{"2":{"9":1}}],["是否使用starttls",{"2":{"52":1}}],["是否使用ssl",{"2":{"52":1}}],["是否使用",{"2":{"9":1}}],["是否在连接池获取连接前",{"2":{"9":1}}],["是否启用pycurl模组",{"2":{"9":1}}],["是否启用邮箱starttls",{"2":{"9":1}}],["是否启用邮箱ssl",{"2":{"9":1}}],["是否启用在控制台日志中打印exception的traceback信息",{"2":{"9":1}}],["是否启用",{"2":{"9":2}}],["是否启用自动热加载",{"2":{"9":1}}],["是否启用多进程模式",{"2":{"9":1}}],["是否启用debug模式",{"2":{"9":1}}],["是否必须",{"2":{"9":1,"52":2,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"61":1,"62":1}}],["创建定时任务",{"0":{"35":1}}],["创建并切换到",{"2":{"4":1}}],["正在编辑的模板会自动保存在浏览器缓存中",{"2":{"34":1}}],["来批量推送距离本次推送时间前指定时间间隔内的任务结果",{"2":{"66":1}}],["来测试整体",{"2":{"34":1}}],["来源于",{"2":{"19":1}}],["测试",{"2":{"34":1,"35":1,"49":1,"56":1}}],["测试等操作",{"2":{"9":1}}],["当",{"2":{"66":1}}],["当所有请求编辑完成后",{"2":{"34":1}}],["当请求中需要上一次请求的一些数据时",{"2":{"34":1}}],["提醒",{"2":{"48":1,"49":1,"50":1}}],["提取任务日志",{"2":{"34":1}}],["提示警告信息",{"0":{"20":1,"21":1}}],["提示错误信息",{"0":{"19":1}}],["保存",{"2":{"34":1}}],["保存在环境变量中",{"2":{"34":1}}],["保留日志",{"2":{"28":1}}],["通过正则化抽取数据",{"2":{"34":1}}],["通过curl使用指定dns进行解析",{"2":{"9":1}}],["这有助于检测模板任务是否运行失败",{"2":{"34":1}}],["这只能靠服务器维护人员的自律来保证后端数据的安全",{"2":{"18":1}}],["失败断言",{"2":{"34":1}}],["填写了正确的参数",{"2":{"49":1}}],["填写任务变量",{"2":{"35":1}}],["填写",{"2":{"34":1}}],["语法",{"2":{"34":1}}],["语句",{"2":{"9":1}}],["等根据用户变化的部分替换成类似",{"2":{"34":1}}],["将用户名",{"2":{"34":1}}],["将文件保存到您的计算机",{"2":{"28":1}}],["继续",{"2":{"33":1}}],["继续编辑",{"2":{"32":1}}],["首页",{"2":{"33":1}}],["首位注册用户默认为管理员",{"2":{"8":1}}],["社区模板",{"2":{"32":1}}],["右侧的",{"2":{"32":1,"33":1,"35":1}}],["右键单击​​加载的结果",{"2":{"29":1}}],["右键单击网络请求网格上的任意位置",{"2":{"28":1}}],["导出har文件",{"2":{"31":1}}],["导出为",{"2":{"30":1}}],["手动执行失败通知",{"2":{"65":1}}],["手动执行成功通知",{"2":{"65":1}}],["手动改成",{"2":{"6":1}}],["手机会自动弹出vpn配置窗口",{"2":{"31":1}}],["信任ca证书",{"2":{"31":1}}],["抓取https请求前",{"2":{"31":1}}],["抓包",{"0":{"27":1},"1":{"28":1,"29":1,"30":1,"31":1}}],["格式为",{"2":{"53":1,"55":1,"61":1,"62":1}}],["格式",{"2":{"30":1,"61":1,"62":2}}],["流量",{"2":{"30":1}}],["解密",{"2":{"30":1}}],["解决",{"2":{"2":1}}],["勾选",{"2":{"30":1}}],["菜单",{"2":{"30":1}}],["菜单中选择",{"2":{"28":1}}],["打开",{"2":{"30":2,"31":1}}],["火狐",{"0":{"29":1}}],["另存为带内容的",{"2":{"28":1}}],["重现任务后",{"2":{"28":1}}],["现在尝试重现您计划发起的",{"2":{"28":1,"29":1,"30":1,"31":1}}],["清除",{"2":{"28":1}}],["旁边的框",{"2":{"28":1}}],["红色",{"2":{"28":1}}],["录制",{"2":{"28":1}}],["确保",{"2":{"28":1}}],["确认",{"2":{"5":1}}],["选中",{"2":{"28":1,"30":1}}],["选项卡中的所有现有日志",{"2":{"28":1}}],["选项卡左上角的",{"2":{"28":1}}],["选项卡",{"2":{"28":1,"30":2}}],["选择刚刚创建的模板",{"2":{"35":1}}],["选择其中的一部分",{"2":{"34":1}}],["选择你要使用的har文件",{"2":{"32":1}}],["选择全部另存为",{"2":{"29":1}}],["选择",{"2":{"28":2,"30":3}}],["从屏幕底部或右侧打开的面板中",{"2":{"28":1}}],["开启定期批量推送",{"2":{"66":1}}],["开启pop3",{"2":{"52":1}}],["开源",{"2":{"37":1}}],["开发者工具",{"2":{"28":1}}],["开始",{"2":{"23":2}}],["更多工具",{"2":{"28":1}}],["更新后请重启容器或清空浏览器缓存",{"2":{"42":1}}],["更新方法",{"0":{"42":1},"1":{"43":1,"44":1,"45":1,"46":1}}],["更新存储库以获取最新的",{"2":{"32":1}}],["更新",{"2":{"19":1,"40":1}}],["更新源码的影响",{"2":{"7":1}}],["+",{"2":{"28":2,"33":1,"35":1}}],["按",{"2":{"28":1,"29":1}}],["按钮来查看推送注册的前值",{"2":{"50":1}}],["按钮来测试推送方式是否可用",{"2":{"49":1}}],["按钮测试任务",{"2":{"35":1}}],["按钮下载模板",{"2":{"34":1}}],["按钮保存模板",{"2":{"34":1}}],["按钮订阅模板",{"2":{"32":1}}],["按钮以清除",{"2":{"28":1}}],["按钮显示为",{"2":{"28":1}}],["按钮",{"2":{"15":1,"32":1,"33":1,"35":1}}],["什么是pop3",{"2":{"52":1}}],["什么是客户端授权码",{"2":{"52":1}}],["什么是",{"0":{"26":1,"36":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1}}],["获取",{"0":{"25":1},"1":{"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1}}],["x",{"2":{"23":4}}],["xx",{"2":{"20":3,"21":3}}],["xxxxxx",{"2":{"20":1,"21":1}}],["其他说明",{"2":{"52":1}}],["其他可选配置",{"2":{"23":2}}],["其他与主线版本保持一致",{"2":{"4":1,"5":1}}],["结束",{"2":{"23":2}}],["自动错误几次后提醒",{"2":{"65":1}}],["自动执行失败通知",{"2":{"65":1}}],["自动执行成功通知",{"2":{"65":1}}],["自动修改冲突设置并重发请求",{"2":{"9":1}}],["自定义",{"0":{"61":1,"62":1},"2":{"61":2,"62":3}}],["自定义推送需要在",{"2":{"60":1}}],["自定义推送支持",{"2":{"60":1}}],["自定义推送",{"0":{"60":1},"1":{"61":1,"62":1},"2":{"64":1}}],["自定义推送图片地址或",{"2":{"58":1}}],["自定义推送图片地址",{"2":{"55":1,"56":1}}],["自定义关键词",{"2":{"56":2}}],["自定义机器人接入",{"2":{"56":1}}],["自行修改",{"2":{"23":1}}],["推送设置",{"0":{"63":1},"1":{"64":1,"65":1,"66":1},"2":{"63":2}}],["推送码可在",{"2":{"53":1}}],["推送码",{"2":{"53":2}}],["推送地址",{"2":{"53":1,"61":1,"62":1}}],["推送需要在",{"2":{"53":1,"55":1,"57":1,"59":1}}],["推送",{"0":{"53":1,"55":1,"57":1,"59":1,"61":1,"62":1},"2":{"56":1,"57":2,"61":1,"62":2,"64":4}}],["推送方式",{"0":{"51":1},"1":{"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1},"2":{"60":1}}],["推送注册前值",{"0":{"50":1}}],["推送注册测试",{"0":{"49":1}}],["推送注册时填写的参数以",{"2":{"48":1}}],["推送注册",{"0":{"48":1},"1":{"49":1,"50":1},"2":{"48":1,"49":1,"50":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"63":1}}],["推送注册中注册不同的推送工具",{"2":{"22":1}}],["推送工具",{"0":{"47":1},"1":{"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"22":1}}],["推荐",{"0":{"4":1}}],["工具箱",{"2":{"22":1,"48":1,"49":1,"50":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"63":2}}],["你可以在",{"2":{"22":1,"48":1}}],["你需要管理员权限在",{"2":{"7":1}}],["具体安装方法请参考",{"2":{"21":1}}],["库",{"2":{"21":1}}],["功能",{"2":{"20":1,"21":1}}],["限流",{"2":{"20":1}}],["限redis连接已开启",{"2":{"9":1}}],["然而",{"2":{"20":1,"21":1}}],["然后跳到",{"2":{"32":1}}],["然后选择允许",{"2":{"31":1}}],["然后将详细的错误日志提交至",{"2":{"16":1}}],["然后点击左上角的",{"2":{"15":1}}],["然后使用",{"2":{"11":1}}],["无法连接",{"2":{"20":1}}],["由于目标计算机积极拒绝",{"2":{"20":1}}],["服务器的",{"2":{"56":1}}],["服务地址",{"2":{"53":1}}],["服务端",{"2":{"37":1}}],["服务端的",{"2":{"36":1}}],["服务",{"2":{"20":1,"53":1}}],["作为推送方式时",{"2":{"55":1}}],["作为服务端",{"2":{"37":1}}],["作为导出方式",{"2":{"30":1}}],["作为限流工具",{"2":{"20":1}}],["作为框架数据库",{"2":{"11":1}}],["70195968",{"2":{"19":1}}],["6379",{"2":{"20":1}}],["648acfd622f3d138",{"2":{"19":1}}],["60",{"2":{"9":2}}],["443",{"2":{"58":1}}],["423",{"2":{"23":1}}],["474",{"2":{"19":1}}],["4",{"0":{"31":1},"2":{"19":2}}],["465",{"2":{"9":1,"52":1}}],["且",{"2":{"19":1}}],["系统部署",{"2":{"21":1}}],["系统上安装比较麻烦",{"2":{"21":1}}],["系统",{"2":{"19":1}}],["每个用户在存储时都使用安全密钥进行加密",{"2":{"18":1}}],["但是不包括",{"2":{"55":1}}],["但不显示错误原因",{"2":{"23":1}}],["但在框架设计中",{"2":{"18":1}}],["但均为",{"2":{"5":1}}],["终究需要记录用户名和密码",{"2":{"18":1}}],["我的任务",{"2":{"35":1}}],["我的模板",{"2":{"32":1,"33":1}}],["我的用户名和密码会被泄露吗",{"0":{"18":1}}],["我的发布请求",{"2":{"7":1}}],["翻页前后的第一个网页",{"2":{"17":1}}],["登录页面",{"2":{"17":1}}],["登录用户或ip在1小时内",{"2":{"9":1}}],["根据需要修改模板",{"2":{"32":1}}],["根据需求和配置说明修改配置文件或环境变量值",{"2":{"7":1}}],["根据需求和配置说明修改配置环境变量",{"2":{"4":1}}],["根据经验",{"2":{"17":1}}],["问题反馈",{"2":{"41":1}}],["问题",{"0":{"16":1}}],["过滤器",{"2":{"15":1}}],["常用邮件客户端软件设置",{"2":{"52":1}}],["常用",{"2":{"15":1}}],["常见问题",{"0":{"10":1},"1":{"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1}}],["数据库恢复",{"2":{"11":1}}],["数据库备份",{"2":{"11":1}}],["数据库名",{"2":{"9":1,"13":1}}],["可为域名或ip地址",{"2":{"55":1,"58":1}}],["可在",{"2":{"54":1,"55":2,"56":1,"57":2,"58":3,"59":1}}],["可以设置在自动执行失败几次后推送通知",{"2":{"65":1}}],["可以设置每个任务的推送开关",{"2":{"63":1}}],["可以在",{"2":{"63":1}}],["可以通过",{"2":{"58":1}}],["可以点击",{"2":{"49":1,"50":1}}],["可以忽略该警告信息",{"2":{"20":1,"21":1}}],["可以自己搭建qd框架",{"2":{"18":1}}],["可以保证仅获取数据库就无法解密用户数据",{"2":{"18":1}}],["可以查看当前框架支持的api和jinja2模板变量",{"2":{"15":1}}],["可以使用",{"2":{"11":1}}],["可选",{"2":{"9":1}}],["详细信息请查阅config",{"2":{"9":1}}],["详见配置",{"2":{"9":4}}],["仅需上传通过抓包得到的",{"2":{"37":1}}],["仅适用于",{"2":{"9":1}}],["仅支持pycurl环境",{"2":{"9":1}}],["订阅加速方式或地址",{"2":{"9":1}}],["公共模板",{"0":{"32":1}}],["公共模板更新页面提示错误代码为",{"0":{"23":1},"2":{"23":1}}],["公共模板更新页面最大连接数",{"2":{"9":1}}],["公开模板",{"2":{"7":1}}],["最大消息队列大小",{"2":{"9":1}}],["最新开发版",{"2":{"2":1}}],["最新",{"2":{"2":1}}],["多个json文件名用",{"2":{"9":1}}],["多个onnx文件名用",{"2":{"9":1}}],["|",{"2":{"9":2,"19":1}}],["单击保存按钮保存任务",{"2":{"35":1}}],["单击",{"2":{"28":1,"34":2,"35":1}}],["单击一下开始录制",{"2":{"28":1}}],["单次接收最大消息大小",{"2":{"9":1}}],["单个用户拥有记事本最大数量",{"2":{"9":1}}],["单位为秒",{"2":{"9":4}}],["第一个注册用户为管理员",{"2":{"9":1}}],["次后",{"2":{"65":1}}],["次",{"2":{"9":1}}],["次数",{"2":{"9":1}}],["分隔并连接",{"2":{"48":1}}],["分隔",{"2":{"9":2}}],["分钟",{"2":{"9":1}}],["分数达到evil上限后自动封禁直至下一小时周期",{"2":{"9":1}}],["分数",{"2":{"9":1}}],["循环最大运行时间",{"2":{"9":1}}],["新建任务后准备时间",{"2":{"9":1}}],["为",{"2":{"55":2}}],["为1111111111",{"2":{"55":1}}],["为了帮助用户发起请求",{"2":{"18":1}}],["为正则表达式匹配模式",{"2":{"9":1}}],["为网址匹配模式",{"2":{"9":1}}],["全局代理黑名单匹配规则",{"2":{"9":1}}],["全局代理黑名单模式",{"2":{"9":1}}],["全局代理域名列表",{"2":{"9":1}}],["用于设置在何时推送任务结果",{"2":{"65":1}}],["用于设置任务结果推送渠道",{"2":{"64":1}}],["用于加速公共模板更新",{"2":{"9":1}}],["用户为任务设置的变量等",{"2":{"18":1}}],["用户名",{"2":{"9":1,"13":1,"17":1}}],["用",{"2":{"9":1}}],["非框架前端使用https",{"2":{"9":1,"52":1}}],["发起",{"2":{"17":1}}],["发布到登录页面",{"2":{"17":1}}],["发布日期",{"2":{"2":1}}],["发送后导致页面跳转的页面",{"2":{"17":1}}],["发送的邮件链接启用https",{"2":{"9":1,"52":1}}],["发送时使用的邮箱",{"2":{"9":1,"52":1}}],["fullchain",{"2":{"58":1}}],["f",{"2":{"46":1}}],["fiddler",{"0":{"30":1},"2":{"30":1}}],["f12",{"2":{"28":1,"29":1}}],["for",{"2":{"23":2}}],["forwarded",{"2":{"23":3}}],["fetcher",{"2":{"21":2}}],["free",{"2":{"19":1}}],["from",{"2":{"9":1,"52":1}}],["failed",{"2":{"23":1}}],["falied",{"0":{"20":1,"21":1},"2":{"20":1,"21":1}}],["false关闭",{"2":{"9":1}}],["false",{"2":{"9":8,"52":2}}],["fastly",{"2":{"4":1}}],["任务结果批量推送",{"0":{"66":1}}],["任务结果批量推送等",{"2":{"63":1}}],["任务结果通知选择包括以下几种",{"2":{"65":1}}],["任务结果通知选择",{"0":{"65":1},"2":{"63":1}}],["任务结果推送渠道包括以下几种",{"2":{"64":1}}],["任务结果推送渠道",{"0":{"64":1},"2":{"63":1}}],["任务模板",{"2":{"37":1}}],["任务组和任务执行时间",{"2":{"35":1}}],["任务间隔",{"2":{"35":1}}],["任务运行中单个任务最大请求次数",{"2":{"9":1}}],["任务运行中单个",{"2":{"9":1}}],["任务日志",{"2":{"9":1}}],["任务定时执行方式",{"2":{"9":1}}],["相应惩罚分值",{"2":{"9":1}}],["相关功能的最新",{"2":{"2":1}}],["验证",{"2":{"9":1}}],["操作失败",{"2":{"9":1}}],["操作前请一定要记得备份数据库",{"2":{"1":1,"42":1}}],["算法",{"2":{"9":1}}],["on",{"2":{"58":1}}],["onnx",{"2":{"9":2}}],["or",{"2":{"58":1}}],["org",{"2":{"19":1,"55":1}}],["outlook",{"2":{"52":1}}],["o",{"2":{"43":1,"45":1,"46":1}}],["options",{"2":{"30":1}}],["operation",{"0":{"19":1},"2":{"19":1}}],["otherwise",{"2":{"19":1}}],["overflow",{"2":{"9":1}}],["ocr",{"2":{"2":1}}],["日志级别",{"2":{"9":1}}],["日志名称",{"2":{"9":1}}],["以下为",{"2":{"58":1}}],["以下请求是必要的",{"2":{"17":1}}],["以及对应的",{"2":{"55":1}}],["以实现异步响应前端和发起",{"2":{"37":1}}],["以便在发生特定事件",{"2":{"22":1,"48":1}}],["以便正确完成相关api",{"2":{"7":1}}],["以启用",{"2":{"9":2}}],["允许设置为",{"2":{"9":2}}],["会根据",{"2":{"66":1}}],["会推送通知",{"2":{"65":1}}],["会在控制台输出",{"2":{"9":1}}],["会导致无法拉取最新镜像",{"2":{"4":1}}],["时向你推送通知",{"2":{"22":1,"48":1}}],["时",{"2":{"9":1,"66":1}}],["密码",{"2":{"9":2,"13":1,"17":1,"34":1,"49":1,"50":1}}],["设置每隔多少秒推送一次任务结果",{"2":{"66":1}}],["设置",{"2":{"52":1}}],["设置为",{"2":{"9":3}}],["设置管理员",{"0":{"8":1}}],["需要在环境变量中配置以下参数",{"2":{"52":1}}],["需要安装ca证书",{"2":{"31":1}}],["需要安装",{"2":{"21":1}}],["需要使用redis或rediscloud时",{"2":{"9":1}}],["需要使用mysql时",{"2":{"9":1}}],["需要使用mysql时设置为",{"2":{"9":1}}],["需要先登出再登陆后才能获得完整管理员权限",{"2":{"8":1}}],["5m",{"2":{"58":1}}],["5s",{"2":{"9":1}}],["500",{"2":{"9":1}}],["50",{"2":{"9":2}}],["5",{"2":{"9":2}}],["key2",{"2":{"61":1,"62":2}}],["key1",{"2":{"61":1,"62":2}}],["keyserver",{"2":{"19":2}}],["keys",{"2":{"19":2}}],["key",{"2":{"9":1,"19":1,"52":2,"55":1,"58":2,"59":2}}],["建议使用容器或",{"2":{"21":1}}],["建议使用",{"2":{"20":1}}],["建议修改",{"2":{"9":1}}],["建议仅当",{"2":{"9":1}}],["静态文件url前缀",{"2":{"9":1}}],["实验性",{"2":{"9":1}}],["性能较弱",{"2":{"9":1}}],["模块在",{"2":{"21":1}}],["模块",{"2":{"21":1}}],["模块来发送",{"2":{"21":1}}],["模板支持",{"2":{"34":1}}],["模板一般需要哪些请求",{"0":{"17":1}}],["模板变量",{"0":{"15":1}}],["模板需要发布才会在",{"2":{"7":1}}],["模式",{"2":{"9":2,"16":1}}],["模式为旧版定时任务执行方式",{"2":{"9":1}}],["body",{"2":{"62":2}}],["bot1111111111",{"2":{"55":1}}],["botfather",{"2":{"55":1}}],["bot",{"0":{"55":1},"2":{"55":6,"64":1}}],["barkurl",{"2":{"53":1}}],["bark",{"0":{"53":1},"2":{"53":6,"64":1}}],["backports",{"2":{"19":3}}],["backport",{"2":{"19":1}}],["batch",{"2":{"9":3}}],["buster",{"2":{"19":3}}],["bug",{"0":{"16":1}}],["bin",{"2":{"45":1}}],["binux",{"2":{"9":2}}],["bind",{"2":{"9":1}}],["默认安装pycurl模组",{"2":{"21":1}}],["默认使用",{"2":{"11":1}}],["默认不启用",{"2":{"9":1}}],["默认与mail",{"2":{"9":1,"52":1}}],["默认为环境变量中的",{"2":{"52":1}}],["默认为false",{"2":{"9":1}}],["默认为true",{"2":{"9":2}}],["默认为push",{"2":{"9":1}}],["默认为1秒",{"2":{"9":1}}],["默认为1",{"2":{"9":1}}],["默认为",{"2":{"9":21,"66":1}}],["默认值",{"2":{"9":1,"52":2,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"61":1,"62":1}}],["weixin",{"2":{"58":2}}],["webhook",{"0":{"59":1},"2":{"59":3,"64":1}}],["web",{"2":{"29":1,"36":1}}],["websocket",{"2":{"9":5,"23":3}}],["wxpusher",{"0":{"57":1},"2":{"57":6,"64":1}}],["w+",{"2":{"34":1}}],["w",{"2":{"20":1,"21":1}}],["windows",{"0":{"30":1},"2":{"21":1}}],["windows平台无效",{"2":{"9":1}}],["will",{"2":{"19":1}}],["ws",{"2":{"9":5}}],["while",{"2":{"9":2}}],["warning",{"2":{"9":4}}],["worker",{"2":{"9":1}}],["wget",{"2":{"4":1,"43":1,"45":1,"46":1}}],["监听端口",{"2":{"9":1}}],["监听地址",{"2":{"9":1}}],["00",{"2":{"66":4}}],["04ee7237b7d453ec",{"2":{"19":1}}],["0",{"2":{"9":4,"19":1}}],["否则无法接收到推送消息",{"2":{"56":2}}],["否则无法使用",{"2":{"52":1}}],["否则会提示推送失败",{"2":{"49":1}}],["否则可能导致参数解析错误",{"2":{"48":1}}],["否则通过邮件重置密码及邮箱推送等功能无效",{"2":{"9":1}}],["否",{"2":{"9":57,"52":5,"55":3,"56":1,"58":2,"61":1,"62":2}}],["说明",{"2":{"9":1,"52":2,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"61":1,"62":1}}],["变量名",{"2":{"9":1,"52":2}}],["ecdhe",{"2":{"58":1}}],["echo",{"2":{"9":2,"19":1}}],["edge",{"0":{"28":1}}],["exec",{"2":{"45":1}}],["example",{"2":{"23":1,"53":1,"61":1,"62":1}}],["extra",{"2":{"9":2}}],["error",{"0":{"20":1},"2":{"20":1}}],["errno",{"0":{"19":1},"2":{"19":1}}],["etc",{"2":{"19":1,"58":2}}],["empty",{"2":{"9":1}}],["email",{"2":{"8":1}}],["evil",{"2":{"9":2}}],["encoding",{"2":{"9":1}}],["engine",{"2":{"9":2}}],["env",{"2":{"6":1,"12":5,"13":2}}],["your",{"2":{"8":1}}],["yml",{"2":{"4":3,"44":1}}],["中开启",{"2":{"56":1}}],["中",{"2":{"56":2,"63":1}}],["中设置推送方式的触发条件",{"2":{"63":1}}],["中设置了",{"2":{"56":2}}],["中设置参数",{"2":{"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1}}],["中获取",{"2":{"55":2,"56":1,"57":2,"58":3,"59":1}}],["中获取对应的",{"2":{"54":1}}],["中填写了",{"2":{"49":1,"50":1}}],["中注册推送方式后",{"2":{"49":1,"50":1,"63":1}}],["中注册不同的推送工具",{"2":{"48":1}}],["中使用",{"0":{"13":1}}],["中配置邮箱服务器",{"0":{"12":1}}],["中审批通过",{"2":{"7":1}}],["中展示",{"2":{"7":1}}],["中创建一个新的应用",{"2":{"5":1}}],["访问并登录",{"2":{"33":1}}],["访问网页",{"2":{"7":1}}],["访问",{"2":{"7":1}}],["启动",{"2":{"7":1}}],["修改",{"2":{"7":1}}],["修改相关设置",{"2":{"7":1}}],["id=222222222",{"2":{"55":1}}],["id",{"2":{"55":3,"58":3}}],["imap",{"2":{"52":1}}],["imap功能为什么需要先设置独立密码",{"2":{"52":1}}],["imap功能",{"2":{"52":1}}],["imap服务器地址设置",{"2":{"52":1}}],["imap服务",{"2":{"52":3}}],["import",{"0":{"21":1},"2":{"21":1}}],["impersonate",{"2":{"2":1}}],["it",{"2":{"45":1}}],["ios",{"0":{"31":1}}],["i",{"2":{"28":1}}],["issue",{"2":{"16":1,"23":1}}],["ip地址段",{"2":{"56":2}}],["ip",{"2":{"9":1,"23":2,"56":1}}],["interval",{"2":{"9":1}}],["index",{"2":{"9":1}}],["install",{"2":{"7":1,"19":3}}],["900",{"2":{"9":1}}],["9",{"2":{"7":1}}],["=",{"2":{"7":1,"9":1}}],["gcm",{"2":{"58":1}}],["gmail",{"2":{"52":1}}],["general",{"2":{"31":1}}],["get",{"0":{"61":1},"2":{"19":1,"60":1,"61":3}}],["googleapps",{"2":{"26":1}}],["gitee",{"2":{"43":1,"45":1,"46":1}}],["github",{"2":{"9":1,"19":1,"41":2}}],["git",{"2":{"7":1}}],["gt",{"2":{"7":1,"22":1,"28":1,"29":2,"31":3,"48":1,"49":1,"50":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"63":2}}],["gh",{"2":{"4":1}}],["源码部署更新",{"0":{"43":1}}],["源码部署",{"0":{"7":1}}],["框架暂不支持钉钉加签推送",{"2":{"56":1}}],["框架提供以下推送方式",{"2":{"51":1}}],["框架提供多种推送方式",{"2":{"48":1}}],["框架的用户邮箱和密码",{"2":{"49":1,"50":1}}],["框架会提示以下警告信息",{"2":{"20":1,"21":1}}],["框架",{"2":{"6":1,"20":1,"21":1,"36":1}}],["框架名称可能不同",{"2":{"5":1}}],["才能正常完成相关api请求",{"2":{"6":1}}],["后续将提供自定义插件支持",{"2":{"37":1}}],["后缀",{"2":{"9":2}}],["后",{"2":{"6":1}}],["或者",{"2":{"55":1,"58":1}}],["或者控制台显示",{"2":{"23":1}}],["或转到",{"2":{"29":1}}],["或从",{"2":{"28":1}}],["或将不同运行中的",{"2":{"6":1}}],["或",{"0":{"28":1},"2":{"6":1,"7":1,"9":1}}],["注意",{"2":{"6":1}}],["端口号",{"2":{"6":1}}],["网易邮箱",{"2":{"52":1}}],["网易企业邮箱",{"2":{"52":1}}],["网络",{"2":{"28":3}}],["网络模式创建容器",{"2":{"6":1}}],["网址",{"2":{"2":1}}],["使用下载按钮旁边的",{"2":{"34":1}}],["使用组选择器",{"2":{"34":1}}],["使用变量抽取",{"2":{"34":1}}],["使用正确和错误的用户名进行测试",{"2":{"34":1}}],["使用密钥对用户数据进行加密",{"2":{"18":1}}],["使用该命令创建容器后",{"2":{"6":1}}],["使用",{"2":{"6":1,"11":1,"20":1,"21":1,"34":1,"37":1,"60":1,"61":1,"62":2}}],["anull",{"2":{"58":1}}],["analyzer",{"2":{"26":1}}],["agentsecret",{"2":{"58":1}}],["agentid",{"2":{"58":2}}],["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",{"2":{"55":4}}],["ab",{"2":{"34":1}}],["about",{"2":{"31":1}}],["a",{"2":{"19":1}}],["arm32",{"2":{"19":1}}],["accelerate",{"2":{"9":1}}],["allow",{"2":{"9":1}}],["auth",{"2":{"9":1}}],["auto",{"2":{"9":1}}],["aes128",{"2":{"58":1}}],["aes加密密钥",{"2":{"9":1}}],["aes",{"2":{"9":1}}],["addr",{"2":{"23":1}}],["address",{"2":{"8":1}}],["add",{"2":{"19":1,"23":1}}],["adv",{"2":{"19":1}}],["admin",{"2":{"8":1}}],["apt",{"2":{"19":5}}],["api中的",{"2":{"55":1}}],["api请求的evil限制",{"2":{"9":1}}],["api",{"0":{"15":1},"2":{"6":2,"7":2,"15":1,"37":2,"52":1,"53":2,"55":4}}],["apptoken",{"2":{"57":1}}],["apps",{"2":{"26":1}}],["app",{"2":{"6":2,"11":2,"12":1,"13":1,"19":2,"45":2,"53":2}}],["amp",{"2":{"4":2,"37":1,"43":2,"44":2,"45":2,"46":2,"55":1,"61":1}}],["scheme",{"2":{"55":1}}],["sckey",{"2":{"54":1}}],["skey",{"2":{"54":1}}],["stream",{"0":{"31":1},"2":{"31":1}}],["stackoverflow",{"2":{"19":1}}],["starttls",{"2":{"9":1,"52":1}}],["static",{"2":{"9":2}}],["sources",{"2":{"19":2}}],["sudo",{"2":{"19":4}}],["subscribe",{"2":{"9":2,"32":1}}],["signing",{"2":{"19":1}}],["size",{"2":{"9":3}}],["session",{"2":{"58":1}}],["sendmessage",{"2":{"55":1}}],["sendkey",{"2":{"54":1}}],["settings",{"2":{"31":1}}],["setting",{"2":{"31":1}}],["set",{"2":{"23":6}}],["server",{"0":{"54":1},"2":{"9":1,"23":2,"54":3,"58":2,"64":1}}],["secret",{"2":{"9":1,"58":1}}],["ssl",{"2":{"9":1,"52":1,"58":9}}],["smtp及imap",{"2":{"52":1}}],["smtp配置方法",{"2":{"52":1}}],["smtp开启方式",{"2":{"52":1}}],["smtp=stmp服务器",{"2":{"12":1}}],["smtp",{"2":{"9":1,"52":8}}],["sw",{"2":{"9":1}}],["sqlalchmey",{"2":{"9":11}}],["sql",{"2":{"9":17}}],["sqlite3",{"2":{"9":1,"11":1}}],["src",{"2":{"6":2,"11":2,"12":1,"13":1,"19":2,"45":2}}],["sha256",{"2":{"58":1}}],["shift",{"2":{"28":1}}],["shpython",{"2":{"7":1,"8":1}}],["shdocker",{"2":{"6":1,"12":1,"13":1}}],["sh",{"2":{"4":1,"6":1,"7":3,"11":1,"19":1,"20":1,"21":1,"43":5,"44":1,"45":6,"46":5}}],["uid",{"2":{"57":2}}],["undefined",{"0":{"23":1},"2":{"23":1}}],["ubuntu",{"2":{"19":1}}],["userid",{"2":{"55":2}}],["username",{"2":{"34":1,"55":1}}],["user=用户名",{"2":{"12":1}}],["user0isadmin",{"2":{"9":1}}],["user相同",{"2":{"9":1,"52":1}}],["user",{"2":{"9":2,"52":2,"55":1}}],["use",{"2":{"9":2}}],["usr",{"2":{"6":2,"11":2,"12":1,"13":1,"19":2,"45":2}}],["url=mysql",{"2":{"13":1}}],["url",{"2":{"9":6,"55":3,"56":2,"58":2,"61":1,"62":1}}],["upgrade",{"2":{"23":3}}],["update",{"2":{"19":1,"43":3,"45":3,"46":3}}],["up",{"2":{"4":1,"44":1}}],["value2",{"2":{"61":1,"62":1}}],["value1",{"2":{"61":1,"62":1}}],["verify",{"2":{"19":1}}],["version",{"2":{"7":1,"23":1}}],["v",{"2":{"6":2,"12":1,"13":1}}],["vi",{"2":{"4":1,"7":1}}],["86400",{"2":{"66":1}}],["8",{"2":{"9":4}}],["80",{"2":{"6":1,"12":1,"13":1,"23":1}}],["8923",{"2":{"6":3,"7":2,"9":1,"12":1,"13":1}}],["nginx",{"2":{"58":4}}],["nginxserver",{"2":{"23":1,"58":1}}],["nginx反向代理websocket服务连接报错",{"2":{"23":1}}],["non",{"2":{"19":1}}],["no",{"2":{"9":6,"21":1}}],["notepad",{"2":{"9":1}}],["not",{"0":{"19":1},"2":{"9":1,"19":1}}],["new",{"2":{"9":1,"19":1}}],["network",{"2":{"29":1}}],["net=host",{"2":{"6":1}}],["net",{"2":{"4":1}}],["named",{"2":{"21":1}}],["name",{"2":{"6":2,"9":4,"11":2,"12":1,"13":1,"23":2,"58":1}}],["运行",{"0":{"6":1}}],["点击停止抓拍结束本次抓拍",{"2":{"31":1}}],["点击开始抓包按钮",{"2":{"31":1}}],["点击",{"2":{"5":1,"32":2,"33":2,"35":1}}],["34",{"2":{"21":1}}],["39",{"2":{"19":2,"21":2}}],["30s",{"2":{"9":1}}],["30",{"2":{"9":3}}],["3600",{"2":{"9":2}}],["3",{"0":{"6":1,"30":1,"32":1},"2":{"5":1,"32":1,"58":1,"65":2}}],["文件列表",{"2":{"32":1}}],["文件保存在",{"2":{"11":1}}],["文件的内容不受通过",{"2":{"7":1}}],["文件",{"0":{"33":1},"2":{"5":1,"33":1}}],["编辑器和",{"2":{"36":1}}],["编辑模板",{"0":{"34":1},"2":{"32":1}}],["编辑",{"2":{"5":1}}],["如何打开pop3",{"2":{"52":1}}],["如何开启客户端协议",{"2":{"52":1}}],["如何开启qq邮箱的pop3",{"2":{"52":1}}],["如何开启腾讯企业邮箱的pop",{"2":{"52":1}}],["如何更新",{"0":{"40":1}}],["如何部署",{"0":{"38":1}}],["如何使用客户端授权密码",{"2":{"52":1}}],["如何使用pop3",{"2":{"52":1}}],["如何使用",{"0":{"24":1,"39":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1},"2":{"39":1,"52":1}}],["如何注册推送方式",{"0":{"22":1}}],["如何提交",{"0":{"16":1}}],["如何查看当前框架支持的",{"0":{"15":1}}],["如何自己搭建",{"0":{"14":1}}],["如何在",{"0":{"12":1,"13":1}}],["如何备份和恢复数据库",{"0":{"11":1}}],["如",{"2":{"9":1,"55":1}}],["如果留空",{"2":{"55":3,"56":1,"58":2,"61":1,"62":2}}],["如果您配置了",{"2":{"52":1}}],["如果您使用的是源码部署方式",{"2":{"7":1}}],["如果你使用",{"2":{"58":1}}],["如果你使用的是自建",{"2":{"53":1}}],["如果你使用的是以下邮箱",{"2":{"52":1}}],["如果你在",{"2":{"56":2}}],["如果你不需要使用",{"2":{"20":1,"21":1}}],["如果推送方式可用",{"2":{"49":1}}],["如果参数值为空",{"2":{"48":1}}],["如果它是灰色的",{"2":{"28":1}}],["如果没有安装",{"2":{"20":1,"21":1}}],["如果是的话",{"2":{"19":1}}],["如果是",{"2":{"19":1}}],["如果还是不放心",{"2":{"18":1}}],["如果前端需要https",{"2":{"9":1,"52":1}}],["如登录",{"2":{"9":1}}],["如需设置环境变量请点击",{"2":{"5":1}}],["如不需要ocr功能或者硬盘空间不大于600m",{"2":{"4":1,"5":1}}],["配置示例",{"2":{"58":1}}],["配置已默认安装",{"2":{"20":1}}],["配置环境变量",{"0":{"9":1}}],["配置相关设置",{"2":{"5":1}}],["配置描述见下文",{"2":{"4":1,"5":1}}],["图标",{"2":{"5":1}}],["在请求编辑中使用测试面板测试模板是否正确返回",{"2":{"34":1}}],["在应用页面",{"2":{"31":1}}],["在框架中并不是必须的",{"2":{"20":1,"21":1}}],["在pycurl环境下部分请求可能导致request错误时",{"2":{"9":1}}],["在",{"2":{"5":1,"49":1,"50":1,"63":2}}],["222222222",{"2":{"55":3}}],["28",{"2":{"20":1}}],["20",{"2":{"9":2,"19":1}}],["20xxxxxx",{"2":{"2":1}}],["2",{"0":{"5":1,"27":1,"28":1,"29":2,"30":1,"31":1},"1":{"28":1,"29":1,"30":1,"31":1},"2":{"5":4,"19":1,"58":1}}],["拉取",{"2":{"4":1}}],["阿里云镜像源",{"2":{"4":1}}],["请将",{"2":{"53":1,"56":2}}],["请将模板里",{"2":{"6":1}}],["请在环境变量中配置",{"2":{"52":1}}],["请在环境变量中配置以下参数",{"2":{"52":1}}],["请在遇到问题后开启",{"2":{"16":1}}],["请确保",{"2":{"50":1}}],["请确保以下条件已满足",{"2":{"49":1}}],["请务必保留该参数位置后的",{"2":{"48":1}}],["请选择",{"2":{"30":1}}],["请参考",{"2":{"22":1,"38":1,"39":1,"40":1}}],["请参考此镜像的构建文件",{"2":{"14":1}}],["请注意框架仅需映射",{"2":{"19":1}}],["请升级以上组件",{"2":{"19":1}}],["请检查反向代理相关配置是否正确",{"2":{"23":1}}],["请检查是否将容器内的",{"2":{"19":1}}],["请检查",{"2":{"19":1}}],["请进入框架首页",{"2":{"15":1}}],["请手动将模板中",{"2":{"7":1}}],["请先cd到框架源码根目录",{"2":{"7":1}}],["请勿在",{"2":{"56":1}}],["请勿同时运行新旧版",{"2":{"6":1}}],["请勿使用",{"2":{"4":1}}],["请求改为",{"2":{"7":1}}],["请求",{"2":{"6":1,"7":1,"17":1,"21":1,"28":1,"29":1,"30":1,"31":1,"37":1}}],["请使用反向代理",{"2":{"9":1,"52":1}}],["请使用",{"2":{"4":1,"5":1}}],["该镜像仅去除了ocr相关功能",{"2":{"4":1,"5":1}}],["镜像",{"0":{"14":1},"2":{"4":1,"5":1}}],["命令在新容器中恢复数据库文件",{"2":{"11":1}}],["命令备份数据库文件",{"2":{"11":1}}],["命令",{"2":{"4":1}}],["执行命令后重启容器",{"2":{"44":1,"45":1}}],["执行命令后重启进程",{"2":{"43":1,"46":1}}],["执行以下命令复制配置文件",{"2":{"7":1}}],["执行",{"2":{"4":1}}],["md5",{"2":{"58":1}}],["mydomain",{"2":{"55":4,"58":4}}],["mysql",{"0":{"13":1},"2":{"9":2}}],["mit",{"2":{"37":1}}],["module",{"0":{"21":1},"2":{"21":2}}],["mode",{"2":{"9":1}}],["media",{"2":{"58":3}}],["message",{"2":{"9":1}}],["method",{"2":{"9":1}}],["main",{"2":{"19":1}}],["mailgun",{"2":{"52":8}}],["mail",{"2":{"9":9,"12":4,"52":9}}],["max",{"2":{"9":4}}],["maria",{"2":{"9":1,"13":1}}],["master",{"2":{"4":1,"43":1,"45":1,"46":1}}],["multi",{"2":{"9":2}}],["mkdir",{"2":{"4":1}}],["t=",{"2":{"61":1}}],["tlsv1",{"2":{"58":4}}],["tg",{"2":{"55":10}}],["text1111111111",{"2":{"55":1}}],["text=helloworld",{"2":{"55":1}}],["telegram",{"0":{"55":1},"2":{"55":9,"64":1}}],["tee",{"2":{"19":1}}],["t",{"2":{"19":1,"60":1,"61":1,"62":1}}],["they",{"2":{"19":1}}],["the",{"2":{"19":2}}],["token",{"2":{"55":4,"56":2,"57":1}}],["tornado",{"2":{"36":1,"37":2}}],["tools",{"2":{"29":1,"30":1}}],["toolbox",{"2":{"26":1}}],["to",{"2":{"19":2,"20":1}}],["today",{"2":{"4":1,"43":1,"45":1,"46":1}}],["taxel",{"2":{"19":1}}],["task",{"2":{"9":3}}],["tag",{"2":{"2":1}}],["trust",{"2":{"31":1}}],["true",{"2":{"9":16,"52":1}}],["traceback",{"2":{"9":1}}],["timeout",{"2":{"9":3,"58":1}}],["type=mysql",{"2":{"13":1}}],["type",{"2":{"9":1}}],["txt",{"2":{"7":1}}],["jinja2",{"0":{"15":1},"2":{"34":1}}],["json",{"2":{"9":1,"61":1,"62":2}}],["json文件名",{"2":{"9":1}}],["jsdelivr",{"2":{"4":1,"9":1}}],["jawsdb",{"2":{"9":1,"13":1}}],["ja3",{"2":{"2":2}}],["下载模板在自己的服务器上运行",{"2":{"18":1}}],["下载",{"2":{"4":1,"34":1}}],["$scheme",{"2":{"23":1}}],["$proxy",{"2":{"23":1}}],["$remote",{"2":{"23":1}}],["$host",{"2":{"23":1}}],["$http",{"2":{"23":1}}],["$",{"2":{"4":2,"6":2,"12":1,"13":1}}],["pull",{"2":{"19":1,"44":1}}],["push",{"2":{"9":3,"55":2,"56":2,"58":2,"61":1,"62":1}}],["plextraktsync",{"2":{"19":1}}],["plugin=",{"2":{"9":1}}],["packages",{"2":{"19":1}}],["password=密码",{"2":{"12":1}}],["password",{"2":{"9":1,"52":1,"55":2}}],["pass",{"2":{"9":1,"23":1,"58":1}}],["permitted",{"0":{"19":1}}],["permissionerror",{"0":{"19":1},"2":{"19":1}}],["png",{"2":{"9":2}}],["pip",{"2":{"19":1}}],["pip3",{"2":{"7":1}}],["pi",{"2":{"19":1}}],["pic",{"2":{"9":3,"55":2,"56":2,"58":2}}],["ping超时时间",{"2":{"9":1}}],["ping间隔",{"2":{"9":1}}],["ping",{"2":{"9":3}}],["post",{"0":{"62":1},"2":{"60":1,"62":5}}],["pop",{"2":{"52":1}}],["pool",{"2":{"9":10}}],["port=邮箱服务器端口",{"2":{"12":1}}],["port=8923",{"2":{"6":1}}],["port",{"2":{"9":4,"13":1,"23":1,"52":1,"55":2}}],["private",{"2":{"58":1}}],["print",{"2":{"9":1}}],["protocols",{"2":{"58":1}}],["proto",{"2":{"23":1}}],["proxy",{"2":{"9":2,"21":2,"23":8,"55":3,"58":3}}],["proxies",{"2":{"9":1}}],["process=true时无效",{"2":{"9":1}}],["process",{"2":{"9":1}}],["prefer",{"2":{"58":1}}],["prefix",{"2":{"9":1}}],["pre",{"2":{"9":1}}],["python",{"2":{"19":1}}],["python3",{"2":{"7":1}}],["pycurl官方文档",{"2":{"21":1}}],["pycurl",{"0":{"21":1},"2":{"9":1,"21":6}}],["py",{"2":{"7":5,"8":1,"9":1}}],["pwd",{"2":{"4":2,"6":2,"12":1,"13":1}}],["p",{"2":{"4":1,"6":1,"12":1,"13":1}}],["目录即可",{"2":{"19":1}}],["目录映射至容器外部",{"2":{"19":1}}],["目录下",{"2":{"11":1}}],["目录",{"2":{"4":1}}],["12",{"2":{"66":2}}],["1111111111",{"2":{"55":1}}],["1500",{"2":{"9":2}}],["15",{"2":{"9":1}}],["10061",{"0":{"20":1},"2":{"20":1}}],["100",{"2":{"9":2}}],["10mb",{"2":{"9":1}}],["10485760",{"2":{"9":1}}],["10",{"2":{"9":2,"19":1}}],["1panel",{"0":{"5":1},"2":{"5":3}}],["1",{"0":{"4":1,"19":1,"26":1,"28":1},"2":{"5":1,"9":2,"19":1,"23":2,"58":1}}],["不用担心丢失",{"2":{"34":1}}],["不填",{"2":{"9":2}}],["不同",{"2":{"5":1}}],["不保证稳定性",{"2":{"2":1}}],["不支持",{"2":{"2":1}}],["同步最新源码",{"2":{"2":1}}],["dhe",{"2":{"58":1}}],["dingding",{"2":{"56":1}}],["direct",{"2":{"9":2}}],["data",{"2":{"62":1}}],["database",{"2":{"11":3}}],["day",{"2":{"9":1,"53":2}}],["dns",{"2":{"9":1}}],["db",{"2":{"9":2,"11":3,"13":1}}],["domain=域名",{"2":{"12":1}}],["domain",{"2":{"9":2,"52":7}}],["dockerfile",{"2":{"14":1,"19":1}}],["dockerhub",{"2":{"2":1}}],["docker",{"0":{"1":1,"4":1,"6":1,"12":1,"13":1,"14":1,"44":1,"45":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"1":1,"2":1,"4":6,"6":1,"11":5,"19":1,"20":2,"21":1,"44":3,"45":1}}],["deb",{"2":{"19":1}}],["debian",{"2":{"19":4}}],["debug",{"2":{"9":5,"16":1}}],["delay",{"2":{"9":1}}],["developer",{"2":{"29":1}}],["dev",{"2":{"2":1}}],["d",{"2":{"4":1,"6":2,"12":1,"13":1,"19":1,"44":1}}],["指定访问域名",{"2":{"9":1}}],["指定",{"2":{"2":1}}],["指纹被识别为",{"2":{"2":1}}],["连接池超时时间",{"2":{"9":1}}],["连接池回收时间",{"2":{"9":1}}],["连接池最大溢出",{"2":{"9":1}}],["连接池大小",{"2":{"9":1}}],["连接池日志级别",{"2":{"9":1}}],["连接池日志名称",{"2":{"9":1}}],["连接",{"2":{"2":1,"23":1,"30":1}}],["qq",{"2":{"58":2}}],["qq邮箱",{"2":{"52":1}}],["qyapi",{"2":{"58":2}}],["qywx",{"2":{"58":6,"59":1}}],["questions",{"2":{"19":1}}],["queue",{"2":{"9":5}}],["quot",{"2":{"9":31,"23":2,"52":8,"53":2,"54":2,"55":10,"56":4,"57":4,"58":10,"59":2,"61":12,"62":22}}],["quic",{"2":{"2":1}}],["qdtoday",{"2":{"2":1,"4":1,"5":1,"6":2,"12":1,"13":1}}],["qd",{"0":{"17":1,"36":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1},"2":{"1":1,"2":1,"4":6,"5":4,"6":8,"9":19,"11":1,"12":3,"13":3,"20":3,"21":3,"23":1,"33":1,"36":1,"37":1,"43":2,"45":2,"46":2,"48":1,"49":1,"50":1,"51":1,"56":3}}],["和过滤器用于模板制作",{"2":{"37":1}}],["和",{"0":{"15":1},"2":{"2":1,"49":1,"50":1,"52":1,"60":2,"66":1}}],["的组合",{"2":{"55":1}}],["的",{"2":{"55":1}}],["的模板",{"2":{"34":1}}],["的连接池日志输出",{"2":{"9":1}}],["的日志输出",{"2":{"9":1}}],["的问题",{"2":{"2":1}}],["的最简单方式",{"2":{"1":1}}],["ciphers",{"2":{"58":2}}],["cer",{"2":{"58":1}}],["certificate",{"2":{"31":1,"58":2}}],["capture",{"2":{"30":1}}],["ctrl",{"2":{"28":1}}],["cn",{"2":{"26":1}}],["chat",{"2":{"55":3}}],["charsets",{"2":{"9":1}}],["chrome",{"0":{"28":1},"2":{"28":1}}],["chrole",{"2":{"8":1}}],["cp",{"2":{"7":1,"11":4}}],["cdn",{"2":{"9":1}}],["cd",{"2":{"4":1,"34":1,"43":1,"44":1,"46":1}}],["corpid",{"2":{"58":2}}],["code",{"2":{"9":1}}],["connects",{"2":{"30":1}}],["connection",{"2":{"23":1}}],["connections",{"2":{"9":1}}],["connecting",{"2":{"20":1}}],["connect",{"0":{"20":1},"2":{"20":1}}],["contrib",{"2":{"19":1}}],["container",{"2":{"11":2}}],["content",{"2":{"9":1}}],["config目录下自定义onnx对应自定义charsets",{"2":{"9":1}}],["config目录下自定义onnx文件名",{"2":{"9":1}}],["configuration",{"2":{"4":1,"5":1}}],["config",{"2":{"4":1,"6":4,"7":4,"11":3,"12":2,"13":2,"19":1}}],["cookie在客户端中保留的天数",{"2":{"9":1}}],["cookie加密密钥",{"2":{"9":1}}],["cookie",{"2":{"9":2,"34":1}}],["compose",{"0":{"4":1,"44":1},"2":{"4":5,"5":1,"20":2,"44":3}}],["com",{"2":{"2":1,"19":3,"23":1,"26":1,"43":1,"45":1,"46":1,"53":1,"55":4,"58":6,"61":1,"62":1}}],["curl",{"2":{"2":2,"9":2}}],["集成",{"2":{"2":1}}],["去除",{"2":{"2":1}}],["length请求",{"2":{"9":1}}],["length",{"2":{"9":1}}],["level",{"2":{"9":2}}],["lang=zh",{"2":{"26":1}}],["lan",{"2":{"9":1}}],["latest",{"2":{"2":3,"4":1,"5":1}}],["linux",{"2":{"21":1}}],["libcurl",{"2":{"21":1}}],["libseccomp2",{"2":{"19":1}}],["libseccomp",{"2":{"19":2}}],["listen",{"2":{"23":1,"58":1}}],["list",{"2":{"19":3}}],["limit",{"2":{"9":2}}],["lifo",{"2":{"9":2}}],["lite",{"2":{"2":1,"4":1,"5":1}}],["log=",{"2":{"61":1}}],["log",{"2":{"34":1,"60":1,"61":1,"62":1}}],["logging",{"2":{"9":4}}],["location",{"2":{"23":1,"58":1}}],["local",{"2":{"7":3}}],["localhost",{"2":{"6":2,"7":3,"20":1}}],["loop",{"2":{"9":1}}],["版本是否小于",{"2":{"19":2}}],["版本显示",{"2":{"5":1}}],["版本号表示为",{"2":{"2":1}}],["版本",{"2":{"2":3}}],["含义",{"2":{"2":1}}],["rc4",{"2":{"58":1}}],["rsa",{"2":{"58":1}}],["raw",{"2":{"43":1,"45":1,"46":1}}],["raspberry",{"2":{"19":1}}],["real",{"2":{"23":1}}],["repository",{"2":{"19":1}}],["recv",{"2":{"19":1}}],["recycle",{"2":{"9":1}}],["retry",{"2":{"9":3}}],["request",{"2":{"9":1}}],["requirements",{"2":{"7":1}}],["regexp",{"2":{"9":1}}],["redisdb",{"2":{"20":2}}],["redis",{"0":{"20":1},"2":{"9":1,"20":5}}],["rediscloud",{"2":{"9":2}}],["reload",{"2":{"9":1}}],["release",{"2":{"2":4}}],["run",{"2":{"6":2,"7":1,"12":1,"13":1}}],["r",{"2":{"2":1,"7":1}}],["high",{"2":{"58":1}}],["har",{"0":{"25":1,"26":1,"33":1},"1":{"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1},"2":{"26":2,"28":1,"29":1,"30":1,"32":1,"33":1,"36":1,"37":1}}],["header",{"2":{"23":6,"34":1,"61":3,"62":3}}],["hostname",{"2":{"9":2,"13":1}}],["host",{"2":{"6":1,"23":1,"55":5,"58":3}}],["httparchive",{"2":{"30":1}}],["httpredir",{"2":{"19":1}}],["http",{"2":{"6":2,"7":3,"9":1,"19":1,"21":2,"23":2,"28":1,"29":1,"30":1,"31":1,"36":1,"37":2,"53":1,"55":2,"58":1}}],["http3",{"2":{"2":1}}],["https",{"2":{"2":1,"4":1,"9":1,"19":2,"26":1,"30":3,"43":1,"45":1,"46":1,"52":1,"53":2,"55":2,"58":3,"61":1,"62":1}}],["hub",{"2":{"2":1}}],["容器名",{"2":{"45":1}}],["容器已预装curl环境",{"2":{"21":1}}],["容器数据库映射为同一文件",{"2":{"6":1}}],["容器内部无法连通外部网络时尝试该命令",{"2":{"6":1}}],["容器",{"0":{"2":1},"2":{"4":1,"20":1}}],["容器部署更新",{"0":{"45":1}}],["容器部署时",{"2":{"11":1}}],["容器部署是部署",{"2":{"1":1}}],["容器部署",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1}}],["部署更新",{"0":{"44":1}}],["部署方法",{"0":{"3":1},"1":{"4":1,"5":1,"6":1}}],["部署",{"0":{"0":1,"5":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"2":{"20":1,"38":1}}]],"serializationVersion":2}';export{t as default}; diff --git a/assets/chunks/VPLocalSearchBox.4355d314.js b/assets/chunks/VPLocalSearchBox.1a8ec98d.js similarity index 99% rename from assets/chunks/VPLocalSearchBox.4355d314.js rename to assets/chunks/VPLocalSearchBox.1a8ec98d.js index a86593268a2..1350da3db18 100644 --- a/assets/chunks/VPLocalSearchBox.4355d314.js +++ b/assets/chunks/VPLocalSearchBox.1a8ec98d.js @@ -1,4 +1,4 @@ -import{M as Pe,j as ee,w as ze,d as At,v as ce,p as Qe,q as Ct,k as Ne,l as be,aj as kt,ak as Tt,o as Y,D as Nt,C as A,b as $,al as It,am as Dt,s as _t,c as Z,n as qe,G as we,R as Ye,F as Ze,a as fe,t as de,an as Ot,S as Rt,U as Mt,ao as Xe,ap as Lt,a8 as Pt,ae as zt,_ as Bt}from"./framework.feaf5d10.js";import{u as Vt,a as $t,b as Wt,c as et,d as jt,e as Kt,w as Jt,o as xe,f as Ut,g as Gt,h as Ht}from"./theme.1d591ecb.js";const Qt={root:()=>Pe(()=>import("./@localSearchIndexroot.f92c9bd5.js"),[]),zh_CN:()=>Pe(()=>import("./@localSearchIndexzh_CN.4276bf14.js"),[])};/*! +import{M as Pe,j as ee,w as ze,d as At,v as ce,p as Qe,q as Ct,k as Ne,l as be,aj as kt,ak as Tt,o as Y,D as Nt,C as A,b as $,al as It,am as Dt,s as _t,c as Z,n as qe,G as we,R as Ye,F as Ze,a as fe,t as de,an as Ot,S as Rt,U as Mt,ao as Xe,ap as Lt,a8 as Pt,ae as zt,_ as Bt}from"./framework.feaf5d10.js";import{u as Vt,a as $t,b as Wt,c as et,d as jt,e as Kt,w as Jt,o as xe,f as Ut,g as Gt,h as Ht}from"./theme.e3f38268.js";const Qt={root:()=>Pe(()=>import("./@localSearchIndexroot.f92c9bd5.js"),[]),zh_CN:()=>Pe(()=>import("./@localSearchIndexzh_CN.c7e9a373.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var ft=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Se=ft.join(","),dt=typeof Element>"u",re=dt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ae=!dt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ce=function o(e,t){var r;t===void 0&&(t=!0);var a=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),n=a===""||a==="true",i=n||t&&e&&o(e.parentNode);return i},qt=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},ht=function(e,t,r){if(Ce(e))return[];var a=Array.prototype.slice.apply(e.querySelectorAll(Se));return t&&re.call(e,Se)&&a.unshift(e),a=a.filter(r),a},vt=function o(e,t,r){for(var a=[],n=Array.from(e);n.length;){var i=n.shift();if(!Ce(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?a.push.apply(a,l):a.push({scopeParent:i,candidates:l})}else{var d=re.call(i,Se);d&&r.filter(i)&&(t||!e.includes(i))&&a.push(i);var h=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ce(h,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(h&&v){var m=o(h===!0?i.children:h.children,!0,r);r.flatten?a.push.apply(a,m):a.push({scopeParent:i,candidates:m})}else n.unshift.apply(n,i.children)}}return a},pt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},te=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||qt(e))&&!pt(e)?0:e.tabIndex},Yt=function(e,t){var r=te(e);return r<0&&t&&!pt(e)?0:r},Zt=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},mt=function(e){return e.tagName==="INPUT"},Xt=function(e){return mt(e)&&e.type==="hidden"},er=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},tr=function(e,t){for(var r=0;rsummary:first-of-type"),i=n?e.parentElement:e;if(re.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof a=="function"){for(var s=e;e;){var u=e.parentElement,l=Ae(e);if(u&&!u.shadowRoot&&a(u)===!0)return tt(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(ir(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return tt(e);return!1},sr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},lr=function o(e){var t=[],r=[];return e.forEach(function(a,n){var i=!!a.scopeParent,s=i?a.scopeParent:a,u=Yt(s,i),l=i?o(a.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:n,tabIndex:u,item:a,isScope:i,content:l})}),r.sort(Zt).reduce(function(a,n){return n.isScope?a.push.apply(a,n.content):a.push(n.content),a},[]).concat(t)},cr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=vt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:ur}):r=ht(e,t.includeContainer,Be.bind(null,t)),lr(r)},fr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=vt([e],t.includeContainer,{filter:ke.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=ht(e,t.includeContainer,ke.bind(null,t)),r},ie=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,Se)===!1?!1:Be(t,e)},dr=ft.concat("iframe").join(","),Ie=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,dr)===!1?!1:ke(t,e)};/*! diff --git a/assets/chunks/theme.1d591ecb.js b/assets/chunks/theme.e3f38268.js similarity index 99% rename from assets/chunks/theme.1d591ecb.js rename to assets/chunks/theme.e3f38268.js index 3e264915592..86e9d07648a 100644 --- a/assets/chunks/theme.1d591ecb.js +++ b/assets/chunks/theme.e3f38268.js @@ -1,4 +1,4 @@ -import{d as b,o as a,c as l,r as d,n as B,a as x,t as T,_ as m,u as bt,b as i,g as $t,e as kt,f as wt,h as Me,i as Pt,j as S,w as q,k as W,l as Ce,m as Ze,p as w,q as ee,s as Vt,v as ce,x as St,P as Lt,y as Te,z as te,A as ue,B as Ae,C as _,F as N,D as k,E as p,T as Ne,G as g,H as J,I as he,J as h,K as et,L as Mt,M as Ct,N as Q,O as tt,Q as Tt,R as H,S as G,U as j,V as At,W as Ue,X as Ie,Y as me,Z as Nt,$ as ae,a0 as It,a1 as Bt,a2 as xt,a3 as Et,a4 as Ht}from"./framework.feaf5d10.js";const Dt=b({__name:"VPBadge",props:{text:{},type:{}},setup(t){return(e,n)=>(a(),l("span",{class:B(["VPBadge",e.type??"tip"])},[d(e.$slots,"default",{},()=>[x(T(e.text),1)],!0)],2))}});const zt=m(Dt,[["__scopeId","data-v-f53771b1"]]),M=bt;function Be(t){return $t()?(kt(t),!0):!1}function F(t){return typeof t=="function"?t():i(t)}const nt=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Ot=Object.prototype.toString,Ft=t=>Ot.call(t)==="[object Object]",re=()=>{},qe=Gt();function Gt(){var t,e;return nt&&((t=window==null?void 0:window.navigator)==null?void 0:t.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((e=window==null?void 0:window.navigator)==null?void 0:e.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function jt(t,e){function n(...o){return new Promise((s,r)=>{Promise.resolve(t(()=>e.apply(this,o),{fn:e,thisArg:this,args:o})).then(s).catch(r)})}return n}const ot=t=>t();function Wt(t,e={}){let n,o,s=re;const r=v=>{clearTimeout(v),s(),s=re};return v=>{const u=F(t),f=F(e.maxWait);return n&&r(n),u<=0||f!==void 0&&f<=0?(o&&(r(o),o=null),Promise.resolve(v())):new Promise(($,P)=>{s=e.rejectOnCancel?P:$,f&&!o&&(o=setTimeout(()=>{n&&r(n),o=null,$(v())},f)),n=setTimeout(()=>{o&&r(o),o=null,$(v())},u)})}}function Rt(t=ot){const e=S(!0);function n(){e.value=!1}function o(){e.value=!0}const s=(...r)=>{e.value&&t(...r)};return{isActive:Me(e),pause:n,resume:o,eventFilter:s}}function Ut(t){return t||Ze()}function qt(...t){if(t.length!==1)return wt(...t);const e=t[0];return typeof e=="function"?Me(Pt(()=>({get:e,set:re}))):S(e)}function st(t,e,n={}){const{eventFilter:o=ot,...s}=n;return q(t,jt(o,e),s)}function Kt(t,e,n={}){const{eventFilter:o,...s}=n,{eventFilter:r,pause:c,resume:v,isActive:u}=Rt(o);return{stop:st(t,e,{...s,eventFilter:r}),pause:c,resume:v,isActive:u}}function Yt(t,e=!0,n){Ut()?W(t,n):e?t():Ce(t)}function $l(t,e,n={}){const{debounce:o=0,maxWait:s=void 0,...r}=n;return st(t,e,{...r,eventFilter:Wt(o,{maxWait:s})})}function kl(t,e,n){let o;Vt(n)?o={evaluating:n}:o=n||{};const{lazy:s=!1,evaluating:r=void 0,shallow:c=!0,onError:v=re}=o,u=S(!s),f=c?ce(e):S(e);let $=0;return ee(async P=>{if(!u.value)return;$++;const A=$;let y=!1;r&&Promise.resolve().then(()=>{r.value=!0});try{const L=await t(C=>{P(()=>{r&&(r.value=!1),y||C()})});A===$&&(f.value=L)}catch(L){v(L)}finally{r&&A===$&&(r.value=!1),y=!0}}),s?w(()=>(u.value=!0,f.value)):f}function Xt(t){var e;const n=F(t);return(e=n==null?void 0:n.$el)!=null?e:n}const U=nt?window:void 0;function ie(...t){let e,n,o,s;if(typeof t[0]=="string"||Array.isArray(t[0])?([n,o,s]=t,e=U):[e,n,o,s]=t,!e)return re;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const r=[],c=()=>{r.forEach($=>$()),r.length=0},v=($,P,A,y)=>($.addEventListener(P,A,y),()=>$.removeEventListener(P,A,y)),u=q(()=>[Xt(e),F(s)],([$,P])=>{if(c(),!$)return;const A=Ft(P)?{...P}:P;r.push(...n.flatMap(y=>o.map(L=>v($,y,L,A))))},{immediate:!0,flush:"post"}),f=()=>{u(),c()};return Be(f),f}function Jt(t){return typeof t=="function"?t:typeof t=="string"?e=>e.key===t:Array.isArray(t)?e=>t.includes(e.key):()=>!0}function Ke(...t){let e,n,o={};t.length===3?(e=t[0],n=t[1],o=t[2]):t.length===2?typeof t[1]=="object"?(e=!0,n=t[0],o=t[1]):(e=t[0],n=t[1]):(e=!0,n=t[0]);const{target:s=U,eventName:r="keydown",passive:c=!1,dedupe:v=!1}=o,u=Jt(e);return ie(s,r,$=>{$.repeat&&F(v)||u($)&&n($)},c)}function Qt(){const t=S(!1);return Ze()&&W(()=>{t.value=!0}),t}function Zt(t){const e=Qt();return w(()=>(e.value,!!t()))}function Ve(t,e={}){const{window:n=U}=e,o=Zt(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const r=S(!1),c=f=>{r.value=f.matches},v=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",c):s.removeListener(c))},u=ee(()=>{o.value&&(v(),s=n.matchMedia(F(t)),"addEventListener"in s?s.addEventListener("change",c):s.addListener(c),r.value=s.matches)});return Be(()=>{u(),v(),s=void 0}),r}const ve=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},pe="__vueuse_ssr_handlers__",en=tn();function tn(){return pe in ve||(ve[pe]=ve[pe]||{}),ve[pe]}function nn(t,e){return en[t]||e}function on(t){return t==null?"any":t instanceof Set?"set":t instanceof Map?"map":t instanceof Date?"date":typeof t=="boolean"?"boolean":typeof t=="string"?"string":typeof t=="object"?"object":Number.isNaN(t)?"any":"number"}const sn={boolean:{read:t=>t==="true",write:t=>String(t)},object:{read:t=>JSON.parse(t),write:t=>JSON.stringify(t)},number:{read:t=>Number.parseFloat(t),write:t=>String(t)},any:{read:t=>t,write:t=>String(t)},string:{read:t=>t,write:t=>String(t)},map:{read:t=>new Map(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t.entries()))},set:{read:t=>new Set(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t))},date:{read:t=>new Date(t),write:t=>t.toISOString()}},Ye="vueuse-storage";function at(t,e,n,o={}){var s;const{flush:r="pre",deep:c=!0,listenToStorageChanges:v=!0,writeDefaults:u=!0,mergeDefaults:f=!1,shallow:$,window:P=U,eventFilter:A,onError:y=I=>{console.error(I)},initOnMounted:L}=o,C=($?ce:S)(typeof e=="function"?e():e);if(!n)try{n=nn("getDefaultStorage",()=>{var I;return(I=U)==null?void 0:I.localStorage})()}catch(I){y(I)}if(!n)return C;const V=F(e),E=on(V),D=(s=o.serializer)!=null?s:sn[E],{pause:O,resume:ne}=Kt(C,()=>mt(C.value),{flush:r,deep:c,eventFilter:A});return P&&v&&Yt(()=>{ie(P,"storage",_e),ie(P,Ye,yt),L&&_e()}),L||_e(),C;function mt(I){try{if(I==null)n.removeItem(t);else{const z=D.write(I),Y=n.getItem(t);Y!==z&&(n.setItem(t,z),P&&P.dispatchEvent(new CustomEvent(Ye,{detail:{key:t,oldValue:Y,newValue:z,storageArea:n}})))}}catch(z){y(z)}}function gt(I){const z=I?I.newValue:n.getItem(t);if(z==null)return u&&V!=null&&n.setItem(t,D.write(V)),V;if(!I&&f){const Y=D.read(z);return typeof f=="function"?f(Y,V):E==="object"&&!Array.isArray(Y)?{...V,...Y}:Y}else return typeof z!="string"?z:D.read(z)}function yt(I){_e(I.detail)}function _e(I){if(!(I&&I.storageArea!==n)){if(I&&I.key==null){C.value=V;return}if(!(I&&I.key!==t)){O();try{(I==null?void 0:I.newValue)!==D.write(C.value)&&(C.value=gt(I))}catch(z){y(z)}finally{I?Ce(ne):ne()}}}}}function we(t){return typeof Window<"u"&&t instanceof Window?t.document.documentElement:typeof Document<"u"&&t instanceof Document?t.documentElement:t}function wl(t,e,n={}){const{window:o=U}=n;return at(t,e,o==null?void 0:o.localStorage,n)}function rt(t){const e=window.getComputedStyle(t);if(e.overflowX==="scroll"||e.overflowY==="scroll"||e.overflowX==="auto"&&t.clientWidth1?!0:(e.preventDefault&&e.preventDefault(),!1)}const fe=new WeakMap;function Pl(t,e=!1){const n=S(e);let o=null,s;q(qt(t),v=>{const u=we(F(v));if(u){const f=u;fe.get(f)||fe.set(f,s),n.value&&(f.style.overflow="hidden")}},{immediate:!0});const r=()=>{const v=we(F(t));!v||n.value||(qe&&(o=ie(v,"touchmove",u=>{an(u)},{passive:!1})),v.style.overflow="hidden",n.value=!0)},c=()=>{var v;const u=we(F(t));!u||!n.value||(qe&&(o==null||o()),u.style.overflow=(v=fe.get(u))!=null?v:"",fe.delete(u),n.value=!1)};return Be(c),w({get(){return n.value},set(v){v?r():c()}})}function Vl(t,e,n={}){const{window:o=U}=n;return at(t,e,o==null?void 0:o.sessionStorage,n)}function rn(t={}){const{window:e=U,behavior:n="auto"}=t;if(!e)return{x:S(0),y:S(0)};const o=S(e.scrollX),s=S(e.scrollY),r=w({get(){return o.value},set(v){scrollTo({left:v,behavior:n})}}),c=w({get(){return s.value},set(v){scrollTo({top:v,behavior:n})}});return ie(e,"scroll",()=>{o.value=e.scrollX,s.value=e.scrollY},{capture:!1,passive:!0}),{x:r,y:c}}function ln(t,e){let n,o=!1;return()=>{n&&clearTimeout(n),o?n=setTimeout(t,e):(t(),o=!0,setTimeout(()=>{o=!1},e))}}function Se(t){return/^\//.test(t)?t:`/${t}`}function le(t){if(St(t))return t.replace(Lt,"");const{site:e}=M(),{pathname:n,search:o,hash:s}=new URL(t,"http://example.com"),r=n.endsWith("/")||n.endsWith(".html")?t:t.replace(/(?:(^\.+)\/)?.*$/,`$1${n.replace(/(\.md)?$/,e.value.cleanUrls?"":".html")}${o}${s}`);return Te(r)}function it(t,e){if(Array.isArray(t))return t;if(t==null)return[];e=Se(e);const n=Object.keys(t).sort((o,s)=>s.split("/").length-o.split("/").length).find(o=>e.startsWith(Se(o)));return n?t[n]:[]}function cn(t){const e=[];let n=0;for(const o in t){const s=t[o];if(s.items){n=e.push(s);continue}e[n]||e.push({items:[]}),e[n].items.push(s)}return e}function un(t){const e=[];function n(o){for(const s of o)s.text&&s.link&&e.push({text:s.text,link:s.link}),s.items&&n(s.items)}return n(t),e}function Le(t,e){return Array.isArray(e)?e.some(n=>Le(t,n)):te(t,e.link)?!0:e.items?Le(t,e.items):!1}function R(){const t=ue(),{theme:e,frontmatter:n}=M(),o=Ve("(min-width: 960px)"),s=S(!1),r=w(()=>{const L=e.value.sidebar,C=t.data.relativePath;return L?it(L,C):[]}),c=w(()=>n.value.sidebar!==!1&&r.value.length>0&&n.value.layout!=="home"),v=w(()=>u?n.value.aside==null?e.value.aside==="left":n.value.aside==="left":!1),u=w(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:e.value.aside!==!1),f=w(()=>c.value&&o.value),$=w(()=>c.value?cn(r.value):[]);function P(){s.value=!0}function A(){s.value=!1}function y(){s.value?A():P()}return{isOpen:s,sidebar:r,sidebarGroups:$,hasSidebar:c,hasAside:u,leftAside:v,isSidebarEnabled:f,open:P,close:A,toggle:y}}function dn(t,e){let n;ee(()=>{n=t.value?document.activeElement:void 0}),W(()=>{window.addEventListener("keyup",o)}),Ae(()=>{window.removeEventListener("keyup",o)});function o(s){s.key==="Escape"&&t.value&&(e(),n==null||n.focus())}}function _n(t){const{page:e}=M(),n=S(!1),o=w(()=>t.value.collapsed!=null),s=w(()=>!!t.value.link),r=w(()=>te(e.value.relativePath,t.value.link)),c=w(()=>r.value?!0:t.value.items?Le(e.value.relativePath,t.value.items):!1),v=w(()=>!!(t.value.items&&t.value.items.length));ee(()=>{n.value=!!(o.value&&t.value.collapsed)}),ee(()=>{(r.value||c.value)&&(n.value=!1)});function u(){o.value&&(n.value=!n.value)}return{collapsed:n,collapsible:o,isLink:s,isActiveLink:r,hasActiveLink:c,hasChildren:v,toggle:u}}const vn=b({__name:"VPSkipLink",setup(t){const e=ue(),n=S();q(()=>e.path,()=>n.value.focus());function o({target:s}){const r=document.querySelector(decodeURIComponent(s.hash));if(r){const c=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",c)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",c),r.focus(),window.scrollTo(0,0)}}return(s,r)=>(a(),l(N,null,[_("span",{ref_key:"backToTop",ref:n,tabindex:"-1"},null,512),_("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}});const pn=m(vn,[["__scopeId","data-v-999d6fc2"]]),fn={key:0,class:"VPBackdrop"},hn=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(t){return(e,n)=>(a(),k(Ne,{name:"fade"},{default:p(()=>[e.show?(a(),l("div",fn)):g("",!0)]),_:1}))}});const mn=m(hn,[["__scopeId","data-v-bfe909ac"]]);function gn(){const t=S(!1);function e(){t.value=!0,window.addEventListener("resize",s)}function n(){t.value=!1,window.removeEventListener("resize",s)}function o(){t.value?n():e()}function s(){window.outerWidth>=768&&n()}const r=ue();return q(()=>r.path,n),{isScreenOpen:t,openScreen:e,closeScreen:n,toggleScreen:o}}function de({removeCurrent:t=!0,correspondingLink:e=!1}={}){const{site:n,localeIndex:o,page:s,theme:r}=M(),c=w(()=>{var u,f;return{label:(u=n.value.locales[o.value])==null?void 0:u.label,link:((f=n.value.locales[o.value])==null?void 0:f.link)||(o.value==="root"?"/":`/${o.value}/`)}});return{localeLinks:w(()=>Object.entries(n.value.locales).flatMap(([u,f])=>t&&c.value.label===f.label?[]:{text:f.label,link:yn(f.link||(u==="root"?"/":`/${u}/`),r.value.i18nRouting!==!1&&e,s.value.relativePath.slice(c.value.link.length-1),!n.value.cleanUrls)})),currentLang:c}}function yn(t,e,n,o){return e?t.replace(/\/$/,"")+Se(n.replace(/(^|\/)?index.md$/,"$1").replace(/\.md$/,o?".html":"")):t}const bn=["src","alt"],$n={inheritAttrs:!1},kn=b({...$n,__name:"VPImage",props:{image:{},alt:{}},setup(t){return(e,n)=>{const o=J("VPImage",!0);return e.image?(a(),l(N,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),l("img",he({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(Te)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,bn)):(a(),l(N,{key:1},[h(o,he({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),h(o,he({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):g("",!0)}}});const xe=m(kn,[["__scopeId","data-v-00ab9169"]]),wn=["href"],Pn=b({__name:"VPNavBarTitle",setup(t){const{site:e,theme:n}=M(),{hasSidebar:o}=R(),{currentLang:s}=de();return(r,c)=>(a(),l("div",{class:B(["VPNavBarTitle",{"has-sidebar":i(o)}])},[_("a",{class:"title",href:i(le)(i(s).link)},[d(r.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(a(),k(xe,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):g("",!0),i(n).siteTitle?(a(),l(N,{key:1},[x(T(i(n).siteTitle),1)],64)):i(n).siteTitle===void 0?(a(),l(N,{key:2},[x(T(i(e).title),1)],64)):g("",!0),d(r.$slots,"nav-bar-title-after",{},void 0,!0)],8,wn)],2))}});const Vn=m(Pn,[["__scopeId","data-v-dacb343b"]]);const Sn={type:"button",class:"DocSearch DocSearch-Button","aria-label":"Search"},Ln={class:"DocSearch-Button-Container"},Mn=_("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[_("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Cn={class:"DocSearch-Button-Placeholder"},Tn=_("span",{class:"DocSearch-Button-Keys"},[_("kbd",{class:"DocSearch-Button-Key"}),_("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Xe=b({__name:"VPNavBarSearchButton",props:{placeholder:{}},setup(t){return(e,n)=>(a(),l("button",Sn,[_("span",Ln,[Mn,_("span",Cn,T(e.placeholder),1)]),Tn]))}});const An={id:"local-search"},Nn={key:1,id:"docsearch"},In=b({__name:"VPNavBarSearch",setup(t){const e=Mt(()=>Ct(()=>import("./VPLocalSearchBox.4355d314.js"),["assets/chunks/VPLocalSearchBox.4355d314.js","assets/chunks/framework.feaf5d10.js"])),n=()=>null,{theme:o,localeIndex:s}=M(),r=S(!1),c=w(()=>{var L,C,V,E,D,O,ne;const y=((L=o.value.search)==null?void 0:L.options)??o.value.algolia;return((D=(E=(V=(C=y==null?void 0:y.locales)==null?void 0:C[s.value])==null?void 0:V.translations)==null?void 0:E.button)==null?void 0:D.buttonText)||((ne=(O=y==null?void 0:y.translations)==null?void 0:O.button)==null?void 0:ne.buttonText)||"Search"});W(()=>{});function v(){r.value||(r.value=!0,setTimeout(u,16))}function u(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||u()},16)}function f(y){const L=y.target,C=L.tagName;return L.isContentEditable||C==="INPUT"||C==="SELECT"||C==="TEXTAREA"}const $=S(!1);Ke("k",y=>{(y.ctrlKey||y.metaKey)&&(y.preventDefault(),$.value=!0)}),Ke("/",y=>{f(y)||(y.preventDefault(),$.value=!0)});const P=S("'Meta'");W(()=>{P.value=/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"'⌘'":"'Ctrl'"});const A="local";return(y,L)=>{var C;return a(),l("div",{class:"VPNavBarSearch",style:et({"--vp-meta-key":P.value})},[i(A)==="local"?(a(),l(N,{key:0},[$.value?(a(),k(i(e),{key:0,placeholder:c.value,onClose:L[0]||(L[0]=V=>$.value=!1)},null,8,["placeholder"])):g("",!0),_("div",An,[h(Xe,{placeholder:c.value,onClick:L[1]||(L[1]=V=>$.value=!0)},null,8,["placeholder"])])],64)):i(A)==="algolia"?(a(),l(N,{key:1},[r.value?(a(),k(i(n),{key:0,algolia:((C=i(o).search)==null?void 0:C.options)??i(o).algolia},null,8,["algolia"])):(a(),l("div",Nn,[h(Xe,{placeholder:c.value,onClick:v},null,8,["placeholder"])]))],64)):g("",!0)],4)}}});const Bn={},xn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",height:"24px",viewBox:"0 0 24 24",width:"24px"},En=_("path",{d:"M0 0h24v24H0V0z",fill:"none"},null,-1),Hn=_("path",{d:"M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z"},null,-1),Dn=[En,Hn];function zn(t,e){return a(),l("svg",xn,Dn)}const On=m(Bn,[["render",zn]]),Fn=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(t){const e=t,n=w(()=>e.tag??e.href?"a":"span"),o=w(()=>e.href&&tt.test(e.href));return(s,r)=>(a(),k(Q(n.value),{class:B(["VPLink",{link:s.href}]),href:s.href?i(le)(s.href):void 0,target:s.target||(o.value?"_blank":void 0),rel:s.rel||(o.value?"noreferrer":void 0)},{default:p(()=>[d(s.$slots,"default",{},void 0,!0),o.value&&!s.noIcon?(a(),k(On,{key:0,class:"icon"})):g("",!0)]),_:3},8,["class","href","target","rel"]))}});const K=m(Fn,[["__scopeId","data-v-6890e624"]]),Gn=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),k(K,{class:B({VPNavBarMenuLink:!0,active:i(te)(i(e).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,target:n.item.target,rel:n.item.rel,tabindex:"0"},{default:p(()=>[x(T(n.item.text),1)]),_:1},8,["class","href","target","rel"]))}});const jn=m(Gn,[["__scopeId","data-v-a5bcf95f"]]),Ee=S();let lt=!1,Pe=0;function Wn(t){const e=S(!1);if(Tt){!lt&&Rn(),Pe++;const n=q(Ee,o=>{var s,r,c;o===t.el.value||(s=t.el.value)!=null&&s.contains(o)?(e.value=!0,(r=t.onFocus)==null||r.call(t)):(e.value=!1,(c=t.onBlur)==null||c.call(t))});Ae(()=>{n(),Pe--,Pe||Un()})}return Me(e)}function Rn(){document.addEventListener("focusin",ct),lt=!0,Ee.value=document.activeElement}function Un(){document.removeEventListener("focusin",ct)}function ct(){Ee.value=document.activeElement}const qn={},Kn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Yn=_("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Xn=[Yn];function Jn(t,e){return a(),l("svg",Kn,Xn)}const ut=m(qn,[["render",Jn]]),Qn={},Zn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},eo=_("circle",{cx:"12",cy:"12",r:"2"},null,-1),to=_("circle",{cx:"19",cy:"12",r:"2"},null,-1),no=_("circle",{cx:"5",cy:"12",r:"2"},null,-1),oo=[eo,to,no];function so(t,e){return a(),l("svg",Zn,oo)}const ao=m(Qn,[["render",so]]),ro={class:"VPMenuLink"},io=b({__name:"VPMenuLink",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),l("div",ro,[h(K,{class:B({active:i(te)(i(e).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,target:n.item.target,rel:n.item.rel},{default:p(()=>[x(T(n.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const $e=m(io,[["__scopeId","data-v-a673c3c5"]]),lo={class:"VPMenuGroup"},co={key:0,class:"title"},uo=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(t){return(e,n)=>(a(),l("div",lo,[e.text?(a(),l("p",co,T(e.text),1)):g("",!0),(a(!0),l(N,null,H(e.items,o=>(a(),l(N,null,["link"in o?(a(),k($e,{key:0,item:o},null,8,["item"])):g("",!0)],64))),256))]))}});const _o=m(uo,[["__scopeId","data-v-61837fb0"]]),vo={class:"VPMenu"},po={key:0,class:"items"},fo=b({__name:"VPMenu",props:{items:{}},setup(t){return(e,n)=>(a(),l("div",vo,[e.items?(a(),l("div",po,[(a(!0),l(N,null,H(e.items,o=>(a(),l(N,{key:o.text},["link"in o?(a(),k($e,{key:0,item:o},null,8,["item"])):(a(),k(_o,{key:1,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):g("",!0),d(e.$slots,"default",{},void 0,!0)]))}});const ho=m(fo,[["__scopeId","data-v-b1c500ac"]]),mo=["aria-expanded","aria-label"],go={key:0,class:"text"},yo={class:"menu"},bo=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(t){const e=S(!1),n=S();Wn({el:n,onBlur:o});function o(){e.value=!1}return(s,r)=>(a(),l("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=c=>e.value=!0),onMouseleave:r[2]||(r[2]=c=>e.value=!1)},[_("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:r[0]||(r[0]=c=>e.value=!e.value)},[s.button||s.icon?(a(),l("span",go,[s.icon?(a(),k(Q(s.icon),{key:0,class:"option-icon"})):g("",!0),x(" "+T(s.button)+" ",1),h(ut,{class:"text-icon"})])):(a(),k(ao,{key:1,class:"icon"}))],8,mo),_("div",yo,[h(ho,{items:s.items},{default:p(()=>[d(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const He=m(bo,[["__scopeId","data-v-57069f4b"]]),$o=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),k(He,{class:B({VPNavBarMenuGroup:!0,active:i(te)(i(e).relativePath,n.item.activeMatch,!!n.item.activeMatch)}),button:n.item.text,items:n.item.items},null,8,["class","button","items"]))}}),ko=t=>(G("data-v-261c60ef"),t=t(),j(),t),wo={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Po=ko(()=>_("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Vo=b({__name:"VPNavBarMenu",setup(t){const{theme:e}=M();return(n,o)=>i(e).nav?(a(),l("nav",wo,[Po,(a(!0),l(N,null,H(i(e).nav,s=>(a(),l(N,{key:s.text},["link"in s?(a(),k(jn,{key:0,item:s},null,8,["item"])):(a(),k($o,{key:1,item:s},null,8,["item"]))],64))),128))])):g("",!0)}});const So=m(Vo,[["__scopeId","data-v-261c60ef"]]),Lo={},Mo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Co=_("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),To=_("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),Ao=[Co,To];function No(t,e){return a(),l("svg",Mo,Ao)}const dt=m(Lo,[["render",No]]),Io={class:"items"},Bo={class:"title"},xo=b({__name:"VPNavBarTranslations",setup(t){const{theme:e}=M(),{localeLinks:n,currentLang:o}=de({correspondingLink:!0});return(s,r)=>i(n).length&&i(o).label?(a(),k(He,{key:0,class:"VPNavBarTranslations",icon:dt,label:i(e).langMenuLabel||"Change language"},{default:p(()=>[_("div",Io,[_("p",Bo,T(i(o).label),1),(a(!0),l(N,null,H(i(n),c=>(a(),k($e,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):g("",!0)}});const Eo=m(xo,[["__scopeId","data-v-dff5934a"]]);const Ho={},Do={class:"VPSwitch",type:"button",role:"switch"},zo={class:"check"},Oo={key:0,class:"icon"};function Fo(t,e){return a(),l("button",Do,[_("span",zo,[t.$slots.default?(a(),l("span",Oo,[d(t.$slots,"default",{},void 0,!0)])):g("",!0)])])}const Go=m(Ho,[["render",Fo],["__scopeId","data-v-5855ec06"]]),jo={},Wo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Ro=At('',9),Uo=[Ro];function qo(t,e){return a(),l("svg",Wo,Uo)}const Ko=m(jo,[["render",qo]]),Yo={},Xo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Jo=_("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),Qo=[Jo];function Zo(t,e){return a(),l("svg",Xo,Qo)}const es=m(Yo,[["render",Zo]]),ts=b({__name:"VPSwitchAppearance",setup(t){const{site:e,isDark:n}=M(),o=S(!1),s=typeof localStorage<"u"?r():()=>{};W(()=>{o.value=document.documentElement.classList.contains("dark")});function r(){const c=window.matchMedia("(prefers-color-scheme: dark)"),v=document.documentElement.classList;let u=localStorage.getItem(Ue),f=e.value.appearance==="dark"&&u==null||(u==="auto"||u==null?c.matches:u==="dark");c.onchange=A=>{u==="auto"&&P(f=A.matches)};function $(){P(f=!f),u=f?c.matches?"auto":"dark":c.matches?"light":"auto",localStorage.setItem(Ue,u)}function P(A){const y=document.createElement("style");y.type="text/css",y.appendChild(document.createTextNode(`:not(.VPSwitchAppearance):not(.VPSwitchAppearance *) { +import{d as b,o as a,c as l,r as d,n as B,a as x,t as T,_ as m,u as bt,b as i,g as $t,e as kt,f as wt,h as Me,i as Pt,j as S,w as q,k as W,l as Ce,m as Ze,p as w,q as ee,s as Vt,v as ce,x as St,P as Lt,y as Te,z as te,A as ue,B as Ae,C as _,F as N,D as k,E as p,T as Ne,G as g,H as J,I as he,J as h,K as et,L as Mt,M as Ct,N as Q,O as tt,Q as Tt,R as H,S as G,U as j,V as At,W as Ue,X as Ie,Y as me,Z as Nt,$ as ae,a0 as It,a1 as Bt,a2 as xt,a3 as Et,a4 as Ht}from"./framework.feaf5d10.js";const Dt=b({__name:"VPBadge",props:{text:{},type:{}},setup(t){return(e,n)=>(a(),l("span",{class:B(["VPBadge",e.type??"tip"])},[d(e.$slots,"default",{},()=>[x(T(e.text),1)],!0)],2))}});const zt=m(Dt,[["__scopeId","data-v-f53771b1"]]),M=bt;function Be(t){return $t()?(kt(t),!0):!1}function F(t){return typeof t=="function"?t():i(t)}const nt=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Ot=Object.prototype.toString,Ft=t=>Ot.call(t)==="[object Object]",re=()=>{},qe=Gt();function Gt(){var t,e;return nt&&((t=window==null?void 0:window.navigator)==null?void 0:t.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((e=window==null?void 0:window.navigator)==null?void 0:e.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function jt(t,e){function n(...o){return new Promise((s,r)=>{Promise.resolve(t(()=>e.apply(this,o),{fn:e,thisArg:this,args:o})).then(s).catch(r)})}return n}const ot=t=>t();function Wt(t,e={}){let n,o,s=re;const r=v=>{clearTimeout(v),s(),s=re};return v=>{const u=F(t),f=F(e.maxWait);return n&&r(n),u<=0||f!==void 0&&f<=0?(o&&(r(o),o=null),Promise.resolve(v())):new Promise(($,P)=>{s=e.rejectOnCancel?P:$,f&&!o&&(o=setTimeout(()=>{n&&r(n),o=null,$(v())},f)),n=setTimeout(()=>{o&&r(o),o=null,$(v())},u)})}}function Rt(t=ot){const e=S(!0);function n(){e.value=!1}function o(){e.value=!0}const s=(...r)=>{e.value&&t(...r)};return{isActive:Me(e),pause:n,resume:o,eventFilter:s}}function Ut(t){return t||Ze()}function qt(...t){if(t.length!==1)return wt(...t);const e=t[0];return typeof e=="function"?Me(Pt(()=>({get:e,set:re}))):S(e)}function st(t,e,n={}){const{eventFilter:o=ot,...s}=n;return q(t,jt(o,e),s)}function Kt(t,e,n={}){const{eventFilter:o,...s}=n,{eventFilter:r,pause:c,resume:v,isActive:u}=Rt(o);return{stop:st(t,e,{...s,eventFilter:r}),pause:c,resume:v,isActive:u}}function Yt(t,e=!0,n){Ut()?W(t,n):e?t():Ce(t)}function $l(t,e,n={}){const{debounce:o=0,maxWait:s=void 0,...r}=n;return st(t,e,{...r,eventFilter:Wt(o,{maxWait:s})})}function kl(t,e,n){let o;Vt(n)?o={evaluating:n}:o=n||{};const{lazy:s=!1,evaluating:r=void 0,shallow:c=!0,onError:v=re}=o,u=S(!s),f=c?ce(e):S(e);let $=0;return ee(async P=>{if(!u.value)return;$++;const A=$;let y=!1;r&&Promise.resolve().then(()=>{r.value=!0});try{const L=await t(C=>{P(()=>{r&&(r.value=!1),y||C()})});A===$&&(f.value=L)}catch(L){v(L)}finally{r&&A===$&&(r.value=!1),y=!0}}),s?w(()=>(u.value=!0,f.value)):f}function Xt(t){var e;const n=F(t);return(e=n==null?void 0:n.$el)!=null?e:n}const U=nt?window:void 0;function ie(...t){let e,n,o,s;if(typeof t[0]=="string"||Array.isArray(t[0])?([n,o,s]=t,e=U):[e,n,o,s]=t,!e)return re;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const r=[],c=()=>{r.forEach($=>$()),r.length=0},v=($,P,A,y)=>($.addEventListener(P,A,y),()=>$.removeEventListener(P,A,y)),u=q(()=>[Xt(e),F(s)],([$,P])=>{if(c(),!$)return;const A=Ft(P)?{...P}:P;r.push(...n.flatMap(y=>o.map(L=>v($,y,L,A))))},{immediate:!0,flush:"post"}),f=()=>{u(),c()};return Be(f),f}function Jt(t){return typeof t=="function"?t:typeof t=="string"?e=>e.key===t:Array.isArray(t)?e=>t.includes(e.key):()=>!0}function Ke(...t){let e,n,o={};t.length===3?(e=t[0],n=t[1],o=t[2]):t.length===2?typeof t[1]=="object"?(e=!0,n=t[0],o=t[1]):(e=t[0],n=t[1]):(e=!0,n=t[0]);const{target:s=U,eventName:r="keydown",passive:c=!1,dedupe:v=!1}=o,u=Jt(e);return ie(s,r,$=>{$.repeat&&F(v)||u($)&&n($)},c)}function Qt(){const t=S(!1);return Ze()&&W(()=>{t.value=!0}),t}function Zt(t){const e=Qt();return w(()=>(e.value,!!t()))}function Ve(t,e={}){const{window:n=U}=e,o=Zt(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const r=S(!1),c=f=>{r.value=f.matches},v=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",c):s.removeListener(c))},u=ee(()=>{o.value&&(v(),s=n.matchMedia(F(t)),"addEventListener"in s?s.addEventListener("change",c):s.addListener(c),r.value=s.matches)});return Be(()=>{u(),v(),s=void 0}),r}const ve=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},pe="__vueuse_ssr_handlers__",en=tn();function tn(){return pe in ve||(ve[pe]=ve[pe]||{}),ve[pe]}function nn(t,e){return en[t]||e}function on(t){return t==null?"any":t instanceof Set?"set":t instanceof Map?"map":t instanceof Date?"date":typeof t=="boolean"?"boolean":typeof t=="string"?"string":typeof t=="object"?"object":Number.isNaN(t)?"any":"number"}const sn={boolean:{read:t=>t==="true",write:t=>String(t)},object:{read:t=>JSON.parse(t),write:t=>JSON.stringify(t)},number:{read:t=>Number.parseFloat(t),write:t=>String(t)},any:{read:t=>t,write:t=>String(t)},string:{read:t=>t,write:t=>String(t)},map:{read:t=>new Map(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t.entries()))},set:{read:t=>new Set(JSON.parse(t)),write:t=>JSON.stringify(Array.from(t))},date:{read:t=>new Date(t),write:t=>t.toISOString()}},Ye="vueuse-storage";function at(t,e,n,o={}){var s;const{flush:r="pre",deep:c=!0,listenToStorageChanges:v=!0,writeDefaults:u=!0,mergeDefaults:f=!1,shallow:$,window:P=U,eventFilter:A,onError:y=I=>{console.error(I)},initOnMounted:L}=o,C=($?ce:S)(typeof e=="function"?e():e);if(!n)try{n=nn("getDefaultStorage",()=>{var I;return(I=U)==null?void 0:I.localStorage})()}catch(I){y(I)}if(!n)return C;const V=F(e),E=on(V),D=(s=o.serializer)!=null?s:sn[E],{pause:O,resume:ne}=Kt(C,()=>mt(C.value),{flush:r,deep:c,eventFilter:A});return P&&v&&Yt(()=>{ie(P,"storage",_e),ie(P,Ye,yt),L&&_e()}),L||_e(),C;function mt(I){try{if(I==null)n.removeItem(t);else{const z=D.write(I),Y=n.getItem(t);Y!==z&&(n.setItem(t,z),P&&P.dispatchEvent(new CustomEvent(Ye,{detail:{key:t,oldValue:Y,newValue:z,storageArea:n}})))}}catch(z){y(z)}}function gt(I){const z=I?I.newValue:n.getItem(t);if(z==null)return u&&V!=null&&n.setItem(t,D.write(V)),V;if(!I&&f){const Y=D.read(z);return typeof f=="function"?f(Y,V):E==="object"&&!Array.isArray(Y)?{...V,...Y}:Y}else return typeof z!="string"?z:D.read(z)}function yt(I){_e(I.detail)}function _e(I){if(!(I&&I.storageArea!==n)){if(I&&I.key==null){C.value=V;return}if(!(I&&I.key!==t)){O();try{(I==null?void 0:I.newValue)!==D.write(C.value)&&(C.value=gt(I))}catch(z){y(z)}finally{I?Ce(ne):ne()}}}}}function we(t){return typeof Window<"u"&&t instanceof Window?t.document.documentElement:typeof Document<"u"&&t instanceof Document?t.documentElement:t}function wl(t,e,n={}){const{window:o=U}=n;return at(t,e,o==null?void 0:o.localStorage,n)}function rt(t){const e=window.getComputedStyle(t);if(e.overflowX==="scroll"||e.overflowY==="scroll"||e.overflowX==="auto"&&t.clientWidth1?!0:(e.preventDefault&&e.preventDefault(),!1)}const fe=new WeakMap;function Pl(t,e=!1){const n=S(e);let o=null,s;q(qt(t),v=>{const u=we(F(v));if(u){const f=u;fe.get(f)||fe.set(f,s),n.value&&(f.style.overflow="hidden")}},{immediate:!0});const r=()=>{const v=we(F(t));!v||n.value||(qe&&(o=ie(v,"touchmove",u=>{an(u)},{passive:!1})),v.style.overflow="hidden",n.value=!0)},c=()=>{var v;const u=we(F(t));!u||!n.value||(qe&&(o==null||o()),u.style.overflow=(v=fe.get(u))!=null?v:"",fe.delete(u),n.value=!1)};return Be(c),w({get(){return n.value},set(v){v?r():c()}})}function Vl(t,e,n={}){const{window:o=U}=n;return at(t,e,o==null?void 0:o.sessionStorage,n)}function rn(t={}){const{window:e=U,behavior:n="auto"}=t;if(!e)return{x:S(0),y:S(0)};const o=S(e.scrollX),s=S(e.scrollY),r=w({get(){return o.value},set(v){scrollTo({left:v,behavior:n})}}),c=w({get(){return s.value},set(v){scrollTo({top:v,behavior:n})}});return ie(e,"scroll",()=>{o.value=e.scrollX,s.value=e.scrollY},{capture:!1,passive:!0}),{x:r,y:c}}function ln(t,e){let n,o=!1;return()=>{n&&clearTimeout(n),o?n=setTimeout(t,e):(t(),o=!0,setTimeout(()=>{o=!1},e))}}function Se(t){return/^\//.test(t)?t:`/${t}`}function le(t){if(St(t))return t.replace(Lt,"");const{site:e}=M(),{pathname:n,search:o,hash:s}=new URL(t,"http://example.com"),r=n.endsWith("/")||n.endsWith(".html")?t:t.replace(/(?:(^\.+)\/)?.*$/,`$1${n.replace(/(\.md)?$/,e.value.cleanUrls?"":".html")}${o}${s}`);return Te(r)}function it(t,e){if(Array.isArray(t))return t;if(t==null)return[];e=Se(e);const n=Object.keys(t).sort((o,s)=>s.split("/").length-o.split("/").length).find(o=>e.startsWith(Se(o)));return n?t[n]:[]}function cn(t){const e=[];let n=0;for(const o in t){const s=t[o];if(s.items){n=e.push(s);continue}e[n]||e.push({items:[]}),e[n].items.push(s)}return e}function un(t){const e=[];function n(o){for(const s of o)s.text&&s.link&&e.push({text:s.text,link:s.link}),s.items&&n(s.items)}return n(t),e}function Le(t,e){return Array.isArray(e)?e.some(n=>Le(t,n)):te(t,e.link)?!0:e.items?Le(t,e.items):!1}function R(){const t=ue(),{theme:e,frontmatter:n}=M(),o=Ve("(min-width: 960px)"),s=S(!1),r=w(()=>{const L=e.value.sidebar,C=t.data.relativePath;return L?it(L,C):[]}),c=w(()=>n.value.sidebar!==!1&&r.value.length>0&&n.value.layout!=="home"),v=w(()=>u?n.value.aside==null?e.value.aside==="left":n.value.aside==="left":!1),u=w(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:e.value.aside!==!1),f=w(()=>c.value&&o.value),$=w(()=>c.value?cn(r.value):[]);function P(){s.value=!0}function A(){s.value=!1}function y(){s.value?A():P()}return{isOpen:s,sidebar:r,sidebarGroups:$,hasSidebar:c,hasAside:u,leftAside:v,isSidebarEnabled:f,open:P,close:A,toggle:y}}function dn(t,e){let n;ee(()=>{n=t.value?document.activeElement:void 0}),W(()=>{window.addEventListener("keyup",o)}),Ae(()=>{window.removeEventListener("keyup",o)});function o(s){s.key==="Escape"&&t.value&&(e(),n==null||n.focus())}}function _n(t){const{page:e}=M(),n=S(!1),o=w(()=>t.value.collapsed!=null),s=w(()=>!!t.value.link),r=w(()=>te(e.value.relativePath,t.value.link)),c=w(()=>r.value?!0:t.value.items?Le(e.value.relativePath,t.value.items):!1),v=w(()=>!!(t.value.items&&t.value.items.length));ee(()=>{n.value=!!(o.value&&t.value.collapsed)}),ee(()=>{(r.value||c.value)&&(n.value=!1)});function u(){o.value&&(n.value=!n.value)}return{collapsed:n,collapsible:o,isLink:s,isActiveLink:r,hasActiveLink:c,hasChildren:v,toggle:u}}const vn=b({__name:"VPSkipLink",setup(t){const e=ue(),n=S();q(()=>e.path,()=>n.value.focus());function o({target:s}){const r=document.querySelector(decodeURIComponent(s.hash));if(r){const c=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",c)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",c),r.focus(),window.scrollTo(0,0)}}return(s,r)=>(a(),l(N,null,[_("span",{ref_key:"backToTop",ref:n,tabindex:"-1"},null,512),_("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}});const pn=m(vn,[["__scopeId","data-v-999d6fc2"]]),fn={key:0,class:"VPBackdrop"},hn=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(t){return(e,n)=>(a(),k(Ne,{name:"fade"},{default:p(()=>[e.show?(a(),l("div",fn)):g("",!0)]),_:1}))}});const mn=m(hn,[["__scopeId","data-v-bfe909ac"]]);function gn(){const t=S(!1);function e(){t.value=!0,window.addEventListener("resize",s)}function n(){t.value=!1,window.removeEventListener("resize",s)}function o(){t.value?n():e()}function s(){window.outerWidth>=768&&n()}const r=ue();return q(()=>r.path,n),{isScreenOpen:t,openScreen:e,closeScreen:n,toggleScreen:o}}function de({removeCurrent:t=!0,correspondingLink:e=!1}={}){const{site:n,localeIndex:o,page:s,theme:r}=M(),c=w(()=>{var u,f;return{label:(u=n.value.locales[o.value])==null?void 0:u.label,link:((f=n.value.locales[o.value])==null?void 0:f.link)||(o.value==="root"?"/":`/${o.value}/`)}});return{localeLinks:w(()=>Object.entries(n.value.locales).flatMap(([u,f])=>t&&c.value.label===f.label?[]:{text:f.label,link:yn(f.link||(u==="root"?"/":`/${u}/`),r.value.i18nRouting!==!1&&e,s.value.relativePath.slice(c.value.link.length-1),!n.value.cleanUrls)})),currentLang:c}}function yn(t,e,n,o){return e?t.replace(/\/$/,"")+Se(n.replace(/(^|\/)?index.md$/,"$1").replace(/\.md$/,o?".html":"")):t}const bn=["src","alt"],$n={inheritAttrs:!1},kn=b({...$n,__name:"VPImage",props:{image:{},alt:{}},setup(t){return(e,n)=>{const o=J("VPImage",!0);return e.image?(a(),l(N,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),l("img",he({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(Te)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,bn)):(a(),l(N,{key:1},[h(o,he({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),h(o,he({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):g("",!0)}}});const xe=m(kn,[["__scopeId","data-v-00ab9169"]]),wn=["href"],Pn=b({__name:"VPNavBarTitle",setup(t){const{site:e,theme:n}=M(),{hasSidebar:o}=R(),{currentLang:s}=de();return(r,c)=>(a(),l("div",{class:B(["VPNavBarTitle",{"has-sidebar":i(o)}])},[_("a",{class:"title",href:i(le)(i(s).link)},[d(r.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(a(),k(xe,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):g("",!0),i(n).siteTitle?(a(),l(N,{key:1},[x(T(i(n).siteTitle),1)],64)):i(n).siteTitle===void 0?(a(),l(N,{key:2},[x(T(i(e).title),1)],64)):g("",!0),d(r.$slots,"nav-bar-title-after",{},void 0,!0)],8,wn)],2))}});const Vn=m(Pn,[["__scopeId","data-v-dacb343b"]]);const Sn={type:"button",class:"DocSearch DocSearch-Button","aria-label":"Search"},Ln={class:"DocSearch-Button-Container"},Mn=_("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[_("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Cn={class:"DocSearch-Button-Placeholder"},Tn=_("span",{class:"DocSearch-Button-Keys"},[_("kbd",{class:"DocSearch-Button-Key"}),_("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Xe=b({__name:"VPNavBarSearchButton",props:{placeholder:{}},setup(t){return(e,n)=>(a(),l("button",Sn,[_("span",Ln,[Mn,_("span",Cn,T(e.placeholder),1)]),Tn]))}});const An={id:"local-search"},Nn={key:1,id:"docsearch"},In=b({__name:"VPNavBarSearch",setup(t){const e=Mt(()=>Ct(()=>import("./VPLocalSearchBox.1a8ec98d.js"),["assets/chunks/VPLocalSearchBox.1a8ec98d.js","assets/chunks/framework.feaf5d10.js"])),n=()=>null,{theme:o,localeIndex:s}=M(),r=S(!1),c=w(()=>{var L,C,V,E,D,O,ne;const y=((L=o.value.search)==null?void 0:L.options)??o.value.algolia;return((D=(E=(V=(C=y==null?void 0:y.locales)==null?void 0:C[s.value])==null?void 0:V.translations)==null?void 0:E.button)==null?void 0:D.buttonText)||((ne=(O=y==null?void 0:y.translations)==null?void 0:O.button)==null?void 0:ne.buttonText)||"Search"});W(()=>{});function v(){r.value||(r.value=!0,setTimeout(u,16))}function u(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||u()},16)}function f(y){const L=y.target,C=L.tagName;return L.isContentEditable||C==="INPUT"||C==="SELECT"||C==="TEXTAREA"}const $=S(!1);Ke("k",y=>{(y.ctrlKey||y.metaKey)&&(y.preventDefault(),$.value=!0)}),Ke("/",y=>{f(y)||(y.preventDefault(),$.value=!0)});const P=S("'Meta'");W(()=>{P.value=/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"'⌘'":"'Ctrl'"});const A="local";return(y,L)=>{var C;return a(),l("div",{class:"VPNavBarSearch",style:et({"--vp-meta-key":P.value})},[i(A)==="local"?(a(),l(N,{key:0},[$.value?(a(),k(i(e),{key:0,placeholder:c.value,onClose:L[0]||(L[0]=V=>$.value=!1)},null,8,["placeholder"])):g("",!0),_("div",An,[h(Xe,{placeholder:c.value,onClick:L[1]||(L[1]=V=>$.value=!0)},null,8,["placeholder"])])],64)):i(A)==="algolia"?(a(),l(N,{key:1},[r.value?(a(),k(i(n),{key:0,algolia:((C=i(o).search)==null?void 0:C.options)??i(o).algolia},null,8,["algolia"])):(a(),l("div",Nn,[h(Xe,{placeholder:c.value,onClick:v},null,8,["placeholder"])]))],64)):g("",!0)],4)}}});const Bn={},xn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",height:"24px",viewBox:"0 0 24 24",width:"24px"},En=_("path",{d:"M0 0h24v24H0V0z",fill:"none"},null,-1),Hn=_("path",{d:"M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z"},null,-1),Dn=[En,Hn];function zn(t,e){return a(),l("svg",xn,Dn)}const On=m(Bn,[["render",zn]]),Fn=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(t){const e=t,n=w(()=>e.tag??e.href?"a":"span"),o=w(()=>e.href&&tt.test(e.href));return(s,r)=>(a(),k(Q(n.value),{class:B(["VPLink",{link:s.href}]),href:s.href?i(le)(s.href):void 0,target:s.target||(o.value?"_blank":void 0),rel:s.rel||(o.value?"noreferrer":void 0)},{default:p(()=>[d(s.$slots,"default",{},void 0,!0),o.value&&!s.noIcon?(a(),k(On,{key:0,class:"icon"})):g("",!0)]),_:3},8,["class","href","target","rel"]))}});const K=m(Fn,[["__scopeId","data-v-6890e624"]]),Gn=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),k(K,{class:B({VPNavBarMenuLink:!0,active:i(te)(i(e).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,target:n.item.target,rel:n.item.rel,tabindex:"0"},{default:p(()=>[x(T(n.item.text),1)]),_:1},8,["class","href","target","rel"]))}});const jn=m(Gn,[["__scopeId","data-v-a5bcf95f"]]),Ee=S();let lt=!1,Pe=0;function Wn(t){const e=S(!1);if(Tt){!lt&&Rn(),Pe++;const n=q(Ee,o=>{var s,r,c;o===t.el.value||(s=t.el.value)!=null&&s.contains(o)?(e.value=!0,(r=t.onFocus)==null||r.call(t)):(e.value=!1,(c=t.onBlur)==null||c.call(t))});Ae(()=>{n(),Pe--,Pe||Un()})}return Me(e)}function Rn(){document.addEventListener("focusin",ct),lt=!0,Ee.value=document.activeElement}function Un(){document.removeEventListener("focusin",ct)}function ct(){Ee.value=document.activeElement}const qn={},Kn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Yn=_("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Xn=[Yn];function Jn(t,e){return a(),l("svg",Kn,Xn)}const ut=m(qn,[["render",Jn]]),Qn={},Zn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},eo=_("circle",{cx:"12",cy:"12",r:"2"},null,-1),to=_("circle",{cx:"19",cy:"12",r:"2"},null,-1),no=_("circle",{cx:"5",cy:"12",r:"2"},null,-1),oo=[eo,to,no];function so(t,e){return a(),l("svg",Zn,oo)}const ao=m(Qn,[["render",so]]),ro={class:"VPMenuLink"},io=b({__name:"VPMenuLink",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),l("div",ro,[h(K,{class:B({active:i(te)(i(e).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,target:n.item.target,rel:n.item.rel},{default:p(()=>[x(T(n.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const $e=m(io,[["__scopeId","data-v-a673c3c5"]]),lo={class:"VPMenuGroup"},co={key:0,class:"title"},uo=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(t){return(e,n)=>(a(),l("div",lo,[e.text?(a(),l("p",co,T(e.text),1)):g("",!0),(a(!0),l(N,null,H(e.items,o=>(a(),l(N,null,["link"in o?(a(),k($e,{key:0,item:o},null,8,["item"])):g("",!0)],64))),256))]))}});const _o=m(uo,[["__scopeId","data-v-61837fb0"]]),vo={class:"VPMenu"},po={key:0,class:"items"},fo=b({__name:"VPMenu",props:{items:{}},setup(t){return(e,n)=>(a(),l("div",vo,[e.items?(a(),l("div",po,[(a(!0),l(N,null,H(e.items,o=>(a(),l(N,{key:o.text},["link"in o?(a(),k($e,{key:0,item:o},null,8,["item"])):(a(),k(_o,{key:1,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):g("",!0),d(e.$slots,"default",{},void 0,!0)]))}});const ho=m(fo,[["__scopeId","data-v-b1c500ac"]]),mo=["aria-expanded","aria-label"],go={key:0,class:"text"},yo={class:"menu"},bo=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(t){const e=S(!1),n=S();Wn({el:n,onBlur:o});function o(){e.value=!1}return(s,r)=>(a(),l("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=c=>e.value=!0),onMouseleave:r[2]||(r[2]=c=>e.value=!1)},[_("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:r[0]||(r[0]=c=>e.value=!e.value)},[s.button||s.icon?(a(),l("span",go,[s.icon?(a(),k(Q(s.icon),{key:0,class:"option-icon"})):g("",!0),x(" "+T(s.button)+" ",1),h(ut,{class:"text-icon"})])):(a(),k(ao,{key:1,class:"icon"}))],8,mo),_("div",yo,[h(ho,{items:s.items},{default:p(()=>[d(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const He=m(bo,[["__scopeId","data-v-57069f4b"]]),$o=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(t){const{page:e}=M();return(n,o)=>(a(),k(He,{class:B({VPNavBarMenuGroup:!0,active:i(te)(i(e).relativePath,n.item.activeMatch,!!n.item.activeMatch)}),button:n.item.text,items:n.item.items},null,8,["class","button","items"]))}}),ko=t=>(G("data-v-261c60ef"),t=t(),j(),t),wo={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Po=ko(()=>_("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Vo=b({__name:"VPNavBarMenu",setup(t){const{theme:e}=M();return(n,o)=>i(e).nav?(a(),l("nav",wo,[Po,(a(!0),l(N,null,H(i(e).nav,s=>(a(),l(N,{key:s.text},["link"in s?(a(),k(jn,{key:0,item:s},null,8,["item"])):(a(),k($o,{key:1,item:s},null,8,["item"]))],64))),128))])):g("",!0)}});const So=m(Vo,[["__scopeId","data-v-261c60ef"]]),Lo={},Mo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Co=_("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),To=_("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),Ao=[Co,To];function No(t,e){return a(),l("svg",Mo,Ao)}const dt=m(Lo,[["render",No]]),Io={class:"items"},Bo={class:"title"},xo=b({__name:"VPNavBarTranslations",setup(t){const{theme:e}=M(),{localeLinks:n,currentLang:o}=de({correspondingLink:!0});return(s,r)=>i(n).length&&i(o).label?(a(),k(He,{key:0,class:"VPNavBarTranslations",icon:dt,label:i(e).langMenuLabel||"Change language"},{default:p(()=>[_("div",Io,[_("p",Bo,T(i(o).label),1),(a(!0),l(N,null,H(i(n),c=>(a(),k($e,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):g("",!0)}});const Eo=m(xo,[["__scopeId","data-v-dff5934a"]]);const Ho={},Do={class:"VPSwitch",type:"button",role:"switch"},zo={class:"check"},Oo={key:0,class:"icon"};function Fo(t,e){return a(),l("button",Do,[_("span",zo,[t.$slots.default?(a(),l("span",Oo,[d(t.$slots,"default",{},void 0,!0)])):g("",!0)])])}const Go=m(Ho,[["render",Fo],["__scopeId","data-v-5855ec06"]]),jo={},Wo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Ro=At('',9),Uo=[Ro];function qo(t,e){return a(),l("svg",Wo,Uo)}const Ko=m(jo,[["render",qo]]),Yo={},Xo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Jo=_("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),Qo=[Jo];function Zo(t,e){return a(),l("svg",Xo,Qo)}const es=m(Yo,[["render",Zo]]),ts=b({__name:"VPSwitchAppearance",setup(t){const{site:e,isDark:n}=M(),o=S(!1),s=typeof localStorage<"u"?r():()=>{};W(()=>{o.value=document.documentElement.classList.contains("dark")});function r(){const c=window.matchMedia("(prefers-color-scheme: dark)"),v=document.documentElement.classList;let u=localStorage.getItem(Ue),f=e.value.appearance==="dark"&&u==null||(u==="auto"||u==null?c.matches:u==="dark");c.onchange=A=>{u==="auto"&&P(f=A.matches)};function $(){P(f=!f),u=f?c.matches?"auto":"dark":c.matches?"light":"auto",localStorage.setItem(Ue,u)}function P(A){const y=document.createElement("style");y.type="text/css",y.appendChild(document.createTextNode(`:not(.VPSwitchAppearance):not(.VPSwitchAppearance *) { -webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important; diff --git a/guide/deployment.html b/guide/deployment.html index 29d4f20fbf5..06504f9375b 100644 --- a/guide/deployment.html +++ b/guide/deployment.html @@ -6,10 +6,10 @@ Deployment | QD - + - + @@ -31,7 +31,7 @@ # Modify the configuration environment variables according to the requirements and configuration description vi local_config.py
  • Run

    sh
    python ./run.py
  • Access

    sh
    # Access the web page
     http://localhost:8923/

    If you are using the source code deployment method, please change the api request of http://localhost/ form in the template to api:// or http://localhost:8923/ manually in order to complete the related API request properly.

    Templates need to be published to be displayed in "Public Templates", and you need admin rights to approve them in "My Publish Requests".

  • Configure administrators

    sh
    python ./chrole.py your@email.address admin

    The first registered user is the administrator by default, you need to log out and then login to get full administrator rights

    Configuration Environment Variables

    variable namerequireddefault valuedescription
    BINDNo0.0.0.0Listening address
    PORTNo8923Listening port
    QD_DEBUGNoFalseWhether to enable Debug mode
    WORKER_METHODNoQueueTask timing execution method,
    The default is Queue, optional Queue or Batch,
    Batch mode is the old version of timing task execution method, the performance is weak,
    Recommended only when Queue timed execution mode fails
    MULTI_PROCESSNoFalse(Experimental) Whether to enable multi-process mode,
    invalid on Windows platform
    AUTO_RELOADNoFalseWhether to enable automatic hot reload,
    invalid when MULTI_PROCESS=True
    STATIC_URL_PREFIXNo/static/Static file URL prefix
    DOMAINNo''Specify the access domain name,
    (recommended modification), otherwise the function of resetting password by email is not valid
    AES_KEYNobinuxAES encryption key, (Modification strongly recommended)
    COOKIE_SECRETNobinuxcookie encryption key, (Modification strongly recommended)
    COOKIE_DAYNo5The number of days the cookie is kept in the client
    DB_TYPENosqlite3Set to 'mysql' when MySQL is required
    JAWSDB_MARIA_URLNo''When you need to use MySQL,
    set to mysql://username:password@hostname:port/database_name?auth_plugin=
    QD_SQL_ECHONoFalseWhether to enable the log output of SQLAlchmey, the default is False,
    When set to True, the SQL statement will be output on the console,
    allow to set to debug to enable debug mode
    QD_SQL_LOGGING_NAMENoQD.sql_engineSQLAlchmey log name, default is 'QD.sql_engine'
    QD_SQL_LOGGING_LEVELNoWarningSQLAlchmey log level, default is 'Warning'
    QD_SQL_ECHO_POOLNoTrueWhether to enable SQLAlchmey's connection pool log output, the default is True,
    allow setting to debug to enable debug mode
    QD_SQL_LOGGING_POOL_NAMENoQD.sql_poolSQLAlchmey connection pool log name, the default is 'QD.sql_pool'
    QD_SQL_LOGGING_POOL_LEVELNoWarningSQLAlchmey connection pool log level, default is 'Warning'
    QD_SQL_POOL_SIZENo10SQLAlchmey connection pool size, default is 10
    QD_SQL_MAX_OVERFLOWNo50SQLAlchmey connection pool maximum overflow, the default is 50
    QD_SQL_POOL_PRE_PINGNoTrueWhether to ping before the connection pool gets a connection, the default is True
    QD_SQL_POOL_RECYCLENo3600SQLAlchmey connection pool recovery time, the default is 3600
    QD_SQL_POOL_TIMEOUTNo60SQLAlchmey connection pool timeout, the default is 60
    QD_SQL_POOL_USE_LIFONoTrueSQLAlchmey whether to use LIFO algorithm, the default is True
    REDISCLOUD_URLNo''When you need to use Redis or RedisCloud,
    set to http://rediscloud:password@hostname:port
    REDIS_DB_INDEXNo1The default is 1
    QD_EVILNo500(Only when the Redis connection is enabled)
    Score = number of operation failures (such as login, verification, test, etc.) * corresponding penalty points
    When the score reaches the upper limit of evil, it will be automatically banned until the next hour cycle
    EVIL_PASS_LAN_IPNoTrueWhether to turn off the evil restriction of local private IP address users and Localhost_API requests
    TRACEBACK_PRINTNoFalseWhether to enable to print Exception's TraceBack information in the console log
    PUSH_PIC_URLNopush_pic.pngThe default is [push_pic.png](https 😕/fastly.jsdelivr.net/gh/qd-today/qd@master/web/static/img/push_pic.png)
    PUSH_BATCH_SWNoTrueWhether to allow periodic push of QD task logs, the default is True
    MAIL_SMTPNo""Email SMTP server
    MAIL_PORTNo465Email SMTP server port
    MAIL_SSLNoTrueWhether to use SSL when connecting to the email server, the default is True
    MAIL_STARTTLSNoFalseWhether to use TLS when connecting to the email server, the default is False
    MAIL_USERNo""Email username
    MAIL_PASSWORDNo""Email password
    MAIL_FROMNoMAIL_USERThe Email used when sending, the default is the same as MAIL_USER
    MAIL_DOMAIN_HTTPSNoFalseWhether to use HTTPS for email domain name.
    Not the framework itself HTTPS configuration.
    If you need HTTPS, please use an external reverse proxy
    PROXIESNo""Global proxy domain name list, separated by "|"
    PROXY_DIRECT_MODENo""Global proxy blacklist mode, not enabled by default
    "url" is URL matching mode; "regexp" is regular expression matching mode
    PROXY_DIRECTNo""Global proxy blacklist matching rules
    NEW_TASK_DELAYNo1Preparation time after new task, default is 1 second
    TASK_WHILE_LOOP_TIMEOUTNo900Maximum runtime of a single While loop during a task run,
    the default is 15 minutes
    TASK_REQUEST_LIMITNo1500Maximum number of requests per task run,
    the default is 1500
    USE_PYCURLNoTrueWhether to enable Pycurl module
    ALLOW_RETRYNoTrueWhen some requests in the Pycurl environment may cause Request errors,
    automatically modify the conflict settings and resend the request
    DNS_SERVERNo""Use specified DNS for resolution via Curl (only supports Pycurl environment),
    such as 8.8.8.8
    CURL_ENCODINGNoTrueWhether to allow to use Curl for Encoding operation
    CURL_CONTENT_LENGTHNoTrueWhether to allow Curl to use custom Content-Length request in Headers
    NOT_RETRY_CODENoSee configuration for details...See configuration for details...
    EMPTY_RETRYNoTrueSee configuration for details...
    USER0ISADMINNoTrueThe first registered user is an administrator, False to close
    NOTEPAD_LIMITNo20The maximum number of notepads within the same user, the default is 20
    EXTRA_ONNX_NAMENo""Customize the ONNX file name in the config directory
    (do not fill in the ".onnx" suffix)
    Separate multiple onnx file names with "|"
    EXTRA_CHARSETS_NAMENo""Custom ONNX in the config directory corresponds to the custom charsets.json file name
    (do not fill in the ".json" suffix)
    Multiple json file names are separated by "|"
    WS_PING_INTERVALNo5WebSocket ping interval, the default is 5 seconds
    WS_PING_TIMEOUTNo30WebSocket ping timeout, the default is 30 seconds
    WS_MAX_MESSAGE_SIZENo10485760WebSocket maximum message size, the default is 10485760 bytes
    WS_MAX_QUEUE_SIZENo100WebSocket maximum queue size, the default is 100
    WS_MAX_CONNECTIONS_SUBSCRIBENo30WebSocket subscribe page maximum number of connections, the default is 30
    SUBSCRIBE_ACCELERATE_URLNojsdelivr_cdnSubscribe page acceleration URL, the default is jsdelivr_cdn,
    See configuration for details...

    For details, please refer to config.py

    Released under the MIT License.

    - diff --git a/guide/faq.html b/guide/faq.html index a2b63b916be..618fcade7c0 100644 --- a/guide/faq.html +++ b/guide/faq.html @@ -6,10 +6,10 @@ FAQ | QD - + - + @@ -44,7 +44,7 @@ proxy_set_header X-Forwarded-Proto $scheme; } }

    Released under the MIT License.

    - diff --git a/guide/how-to-use.html b/guide/how-to-use.html index 07564cb9806..2d7e8bcdcd0 100644 --- a/guide/how-to-use.html +++ b/guide/how-to-use.html @@ -6,10 +6,10 @@ How to Use? | QD - + - + @@ -17,7 +17,7 @@
    Skip to content
    On this page

    How to Use?

    Har Obtain

    1. What is HAR?

    HAR: https://toolbox.googleapps.com/apps/har_analyzer/?lang=

    2. Packet capture

    2.1. Chrome or Edge

    1. Press F12, Ctrl + Shift + I, or from the Chrome menu select More tools > Developer tools.
    2. From the panel that opens at the bottom of your screen, select the Network tab.
    3. Make sure the Record button in the upper left corner of the Network tab is shown in red.
    4. If it's grey, click it once to start recording.
    5. Check the box next to Preserve log. Preserve log
    6. Click the Clear button to clear out any existing logs from the Network tab.
    7. Now try to reproduce the task you were trying to do.
    8. Once you have reproduced the task, right-click anywhere on the grid of network requests.
    9. Select Save as HAR with Content. Save as HAR with Content
    10. Save the file to your computer.

    2.2. Firefox

    1. Press F12 ​(or Go to Tools > Web Developer > Network).
    2. Now try to reproduce the task you were trying to do.
    3. Right-click on the loaded results.
    4. Select Save all as har.

    2.3. Windows - Fiddler

    1. Open Fiddler, open the Tools menu, select Options.
    2. Select the HTTPS tab, check Capture HTTPS Connects.
    3. Select the Connections tab, check Decrypt HTTPS traffic.
    4. Now try to reproduce the task you were trying to do.
    5. export to HAR format - please select HTTPArchive as the export method.

    2.4. IOS - Stream

    1. Open Stream.
    2. Before capture the HTTPS request, you need to install the CA certificate, setting > General > About > Certificate Trust Settings to trust the CA certificate.
    3. Click the start packet capture button, the phone will automatically pop up the VPN configuration window, and then select Allow.
    4. Now try to reproduce the task you were trying to do.
    5. On the app page, click Stop Capture to end this capture.
    6. export the HAR file.

    3. Community HAR

    1. Click the Community Template button to the right of my template.
    2. Update the repository to get the latest HAR file list.
    3. Select the HAR file you want to use and click the Subscribe button to subscribe to the template.
    4. Modify the template according to your needs.
    5. Then jump to step 5 of 3. Edit the template to continue editing.

    Upload the HAR file

    1. Access and login to QD framework.
    2. Click the + button to the right of my template.
    3. Upload the HAR file you just saved.
    4. Click upload to continue.

    Edit the template

    1. Replace the username, password, cookie, header and other parts that change according to the user with a template similar to {{ username }}. (templates support jinja2 syntax)
    2. Use the test panel in request editing to test whether the template is returned correctly, use the correct and wrong user names to test。
    3. Fill in success/failure assertion, which helps to detect sign-in failures and template failures.
    4. When some data from the previous request is needed in the request, variable extraction is used to extract the data through regularization and save it in the environment variable. Use ab(\w+)cd, the group selector, to select part of it.
    5. Use __log__ to extract task logs.
    6. When all request edits are complete, use Test next to the Download button to test the overall.
    7. The template being edited will be automatically saved in the browser cache, so don't worry about losing it.
    8. Click the Save button to save the template.
    9. Click the Download button to download the template.

    Create scheduled task

    1. Click the + button to the right of my task.
    2. Select the template you just created.
    3. Fill in the task variables, task interval, task group and task execution time.
    4. Click the Test button to test the task.
    5. Click the Save button to save the task.

    Released under the MIT License.

    - diff --git a/guide/update.html b/guide/update.html index 7d2e5f0c877..972ef03599c 100644 --- a/guide/update.html +++ b/guide/update.html @@ -6,10 +6,10 @@ Update | QD - + - + @@ -25,7 +25,7 @@ # docker exec -it "container name" /bin/sh wget https://gitee.com/qd-today/qd/raw/master/update.sh -O ./update.sh && \ sh ./update.sh -f

    Released under the MIT License.

    - diff --git a/guide/what-is-qd.html b/guide/what-is-qd.html index 3b3a480c44b..30d0926e197 100644 --- a/guide/what-is-qd.html +++ b/guide/what-is-qd.html @@ -6,17 +6,17 @@ What is QD? | QD - + - +
    Skip to content
    On this page

    What is QD?

    QD is a web framework for HTTP timed task automation base on HAR Editor and Tornado Server.

    Features

    • Har-based: By simply uploading Har obtained through packet capture, you can create HTTP task template required by the framework.
    • Tornado Server: Use Tornado as a server to asynchronously respond to front-end and initiate HTTP requests.
    • API & Plugin Support: Various APIs and filters are built in for template creation, and custom plugins will be provided later.
    • Open source: QD is an open source project based on the MIT license.

    How to deploy

    Please refer: Deployment

    How to use

    Please refer: How to use

    How to Update

    Please refer: Update

    Discussion

    Released under the MIT License.

    - diff --git a/hashmap.json b/hashmap.json index d09e156d9ab..216f20fac3b 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"zh_cn_guide_what-is-qd.md":"cc7ec6c8","toolbox_pusher.md":"16d1fe92","guide_update.md":"6b6e7d93","zh_cn_guide_update.md":"01597012","index.md":"645f855c","zh_cn_guide_how-to-use.md":"a1d5a0f9","guide_what-is-qd.md":"f024519a","zh_cn_guide_deployment.md":"d24c415c","guide_faq.md":"548a0aa3","guide_deployment.md":"7131e717","guide_how-to-use.md":"d89ebfe2","zh_cn_index.md":"3ca4d244","zh_cn_toolbox_pusher.md":"290dd3dc","zh_cn_guide_faq.md":"d40a0e16"} +{"zh_cn_guide_how-to-use.md":"a1d5a0f9","guide_update.md":"6b6e7d93","index.md":"645f855c","guide_how-to-use.md":"d89ebfe2","zh_cn_toolbox_pusher.md":"290dd3dc","zh_cn_guide_update.md":"01597012","guide_faq.md":"548a0aa3","zh_cn_index.md":"3ca4d244","zh_cn_guide_what-is-qd.md":"cc7ec6c8","guide_what-is-qd.md":"f024519a","zh_cn_guide_faq.md":"d40a0e16","toolbox_pusher.md":"16d1fe92","zh_cn_guide_deployment.md":"d24c415c","guide_deployment.md":"7131e717"} diff --git a/index.html b/index.html index 56f50995b74..cac711aabd4 100644 --- a/index.html +++ b/index.html @@ -6,17 +6,17 @@ HTTP task automation framework | QD - + - +
    Skip to content

    QD

    A web framework for HTTP timed task automation.

    QD

    Har-based

    By simply uploading Har obtained through packet capture, you can create HTTP task template required by the framework.

    Tornado Server

    Use Tornado as a server to asynchronously respond to front-end and initiate HTTP requests.

    API & Plugin Support

    Various APIs and filters are built in for template creation, and custom plugins will be provided later.

    Open source

    QD is an open source project based on the MIT license.

    Released under the MIT License.

    - diff --git a/toolbox/pusher.html b/toolbox/pusher.html index 5f47e759805..7e5cb926c6f 100644 --- a/toolbox/pusher.html +++ b/toolbox/pusher.html @@ -6,10 +6,10 @@ Pusher | QD - + - + @@ -28,7 +28,7 @@ proxy_pass https://qyapi.weixin.qq.com/; } }

    WeCom Webhook Push

    WeCom Webhook push needs to set parameters in Toolbox->Push Registration:

    Parameter nameRequiredDefaultDescription
    QYWX_WebHook_KeyTrue""WeCom Webhook Key,
    Can be obtained in WeCom

    Custom Push

    Custom push supports GET and POST push methods, using {log} and {t} to represent the log and title to be replaced.

    Custom push needs to set parameters in Toolbox->Push Registration:

    Custom Get Push

    Parameter nameRequiredDefaultDescription
    URLTrue""Custom Get push address,
    For example, https://example.com/push?log={log}&t={t}
    GET_HeaderFalse""Custom Get push Header,
    Use json format (double quotes), the format is { "key1": "value1", "key2": "value2" },
    If left blank, the Header is not set

    Custom Post Push

    Parameter nameRequiredDefaultDescription
    URLTrue""Custom Post push address,
    For example, https://example.com/push
    POST_HeaderFalse""Custom Post push Header,
    Use json format (double quotes), the format is { "key1": "value1", "key2": "value2" },
    For example, { "key1": "{log}", "key2": "{t}" },
    If left blank, the Header is not set
    POST_DataFalse""Custom Post push Body,
    Use json format (double quotes),
    For example, { "key1": "{log}", "key2": "{t}" },
    If left blank, the Body is not set

    Push Settings

    After registering the push method in Toolbox->Push Registration, you can set the trigger conditions of the push method in Toolbox->Push Settings.

    In Push Settings, you can set the push switch of each task, the task result push channel, the task result notification selection, and the task result batch push.

    Task Result Push Channel

    The task result push channel is used to set the task result push channel. The task result push channel includes the following:

    Task Result Notification Selection

    The task result notification selection is used to set when to push the task result. The task result notification selection includes the following:

    • Manual execution success notification
    • Manual execution failure notification
    • Automatic execution success notification
    • Automatic execution failure notification

    Notify after automatic error can be set to push notifications after automatic execution fails several times. For example, if set to 3, the notification will be pushed after automatic execution fails 3 times.

    Task Result Batch Push

    The task result batch push is used to set the batch push of the task result. When Enable batch push is turned on, the task result within the specified time interval before the current push time will be batch pushed according to the Batch push time setting and Batch push time interval when the task result is pushed.

    • Batch push time setting: The initial batch push time setting, for example, set to 12:00:00, then a batch push will be made at 12:00:00 on the same day.

    • Batch push time interval: Set how many seconds to push the task result once. The default is 86400 seconds, that is, the task result within 86400 seconds before the current push time will be batch pushed every day.

    Released under the MIT License.

    - diff --git a/zh_CN/guide/deployment.html b/zh_CN/guide/deployment.html index 5757c6905d6..bb14965ea2c 100644 --- a/zh_CN/guide/deployment.html +++ b/zh_CN/guide/deployment.html @@ -6,10 +6,10 @@ 部署 | QD - + - + @@ -31,7 +31,7 @@ # 根据需求和配置说明修改配置文件或环境变量值 vi local_config.py
  • 启动

    sh
    python ./run.py
  • 访问

    sh
    # 访问网页
     http://localhost:8923/

    如果您使用的是源码部署方式,请手动将模板中 http://localhost/ 形式的 api 请求改为 api://http://localhost:8923/ ,以便正确完成相关API 请求。

    模板需要发布才会在「公开模板」中展示, 你需要管理员权限在「我的发布请求」中审批通过。

  • 设置管理员

    sh
    python ./chrole.py your@email.address admin

    首位注册用户默认为管理员, 需要先登出再登陆后才能获得完整管理员权限

    配置环境变量

    变量名是否必须默认值说明
    BIND0.0.0.0监听地址
    PORT8923监听端口
    QD_DEBUGFalse是否启用Debug模式
    WORKER_METHODQueue任务定时执行方式,
    默认为 Queue, 可选 Queue 或 Batch,
    Batch 模式为旧版定时任务执行方式, 性能较弱,
    建议仅当 Queue 定时执行模式失效时使用
    MULTI_PROCESSFalse(实验性)是否启用多进程模式,
    Windows平台无效
    AUTO_RELOADFalse是否启用自动热加载,
    MULTI_PROCESS=True时无效
    STATIC_URL_PREFIX/static/静态文件URL前缀
    DOMAIN''指定访问域名,
    (建议修改), 否则通过邮件重置密码及邮箱推送等功能无效
    AES_KEYbinuxAES加密密钥, (强烈建议修改)
    COOKIE_SECRETbinuxcookie加密密钥, (强烈建议修改)
    COOKIE_DAY5Cookie在客户端中保留的天数
    DB_TYPEsqlite3需要使用MySQL时设置为'mysql'
    JAWSDB_MARIA_URL''需要使用MySQL时,
    设置为 (mysql://用户名:密码@hostname:port/数据库名?auth_plugin=)
    QD_SQL_ECHOFalse是否启用 SQLAlchmey 的日志输出, 默认为 False,
    设置为 True 时, 会在控制台输出 SQL 语句,
    允许设置为 debug 以启用 debug 模式
    QD_SQL_LOGGING_NAMEQD.sql_engineSQLAlchmey 日志名称, 默认为 'QD.sql_engine'
    QD_SQL_LOGGING_LEVELWarningSQLAlchmey 日志级别, 默认为 'Warning'
    QD_SQL_ECHO_POOLTrue是否启用 SQLAlchmey 的连接池日志输出, 默认为 True,
    允许设置为 debug 以启用 debug 模式
    QD_SQL_LOGGING_POOL_NAMEQD.sql_poolSQLAlchmey 连接池日志名称, 默认为 'QD.sql_pool'
    QD_SQL_LOGGING_POOL_LEVELWarningSQLAlchmey 连接池日志级别, 默认为 'Warning'
    QD_SQL_POOL_SIZE10SQLAlchmey 连接池大小, 默认为 10
    QD_SQL_MAX_OVERFLOW50SQLAlchmey 连接池最大溢出, 默认为 50
    QD_SQL_POOL_PRE_PINGTrue是否在连接池获取连接前,
    先ping一下, 默认为 True
    QD_SQL_POOL_RECYCLE3600SQLAlchmey 连接池回收时间, 默认为 3600
    QD_SQL_POOL_TIMEOUT60SQLAlchmey 连接池超时时间, 默认为 60
    QD_SQL_POOL_USE_LIFOTrueSQLAlchmey 是否使用 LIFO 算法, 默认为 True
    REDISCLOUD_URL''需要使用Redis或RedisCloud时,
    设置为 http://rediscloud:密码@hostname:port
    REDIS_DB_INDEX1默认为1
    QD_EVIL500(限Redis连接已开启)登录用户或IP在1小时内
    分数 = 操作失败(如登录, 验证, 测试等操作)次数 * 相应惩罚分值
    分数达到evil上限后自动封禁直至下一小时周期
    EVIL_PASS_LAN_IPTrue是否关闭本机私有IP地址用户及Localhost_API请求的evil限制
    TRACEBACK_PRINTFalse是否启用在控制台日志中打印Exception的TraceBack信息
    PUSH_PIC_URLpush_pic.png默认为push_pic.png
    PUSH_BATCH_SWTrue是否允许开启定期推送 QD 任务日志, 默认为True
    MAIL_SMTP""邮箱SMTP服务器
    MAIL_PORT465邮箱SMTP服务器端口
    MAIL_SSLTrue是否启用邮箱SSL, 默认为True
    MAIL_STARTTLSFalse是否启用邮箱STARTTLS, 默认为False
    MAIL_USER""邮箱用户名
    MAIL_PASSWORD""邮箱密码
    MAIL_FROMMAIL_USER发送时使用的邮箱,默认与MAIL_USER相同
    MAIL_DOMAIN_HTTPSFalse发送的邮件链接启用HTTPS,
    非框架前端使用HTTPS,
    如果前端需要HTTPS, 请使用反向代理.
    PROXIES""全局代理域名列表,用"
    PROXY_DIRECT_MODE""全局代理黑名单模式,默认不启用
    "url"为网址匹配模式;"regexp"为正则表达式匹配模式
    PROXY_DIRECT""全局代理黑名单匹配规则
    NEW_TASK_DELAY1新建任务后准备时间, 单位为秒, 默认为1秒
    TASK_WHILE_LOOP_TIMEOUT900任务运行中单个 While 循环最大运行时间,
    单位为秒, 默认为 15 分钟
    TASK_REQUEST_LIMIT1500任务运行中单个任务最大请求次数,
    默认为 1500 次
    USE_PYCURLTrue是否启用Pycurl模组
    ALLOW_RETRYTrue在Pycurl环境下部分请求可能导致Request错误时,
    自动修改冲突设置并重发请求
    DNS_SERVER""通过Curl使用指定DNS进行解析(仅支持Pycurl环境),
    如 8.8.8.8
    CURL_ENCODINGTrue是否允许使用Curl进行Encoding操作
    CURL_CONTENT_LENGTHTrue是否允许Curl使用Headers中自定义Content-Length请求
    NOT_RETRY_CODE详见配置...详见配置...
    EMPTY_RETRYTrue详见配置...
    USER0ISADMINTrue第一个注册用户为管理员,False关闭
    NOTEPAD_LIMIT20单个用户拥有记事本最大数量, 默认为 20
    EXTRA_ONNX_NAME""config目录下自定义ONNX文件名
    (不填 ".onnx" 后缀)
    多个onnx文件名用"|"分隔
    EXTRA_CHARSETS_NAME""config目录下自定义ONNX对应自定义charsets.json文件名
    (不填 ".json" 后缀)
    多个json文件名用"|"分隔
    WS_PING_INTERVALNo5WebSocket ping间隔, 单位为秒, 默认为 5s
    WS_PING_TIMEOUTNo30WebSocket ping超时时间, 单位为秒, 默认为 30s
    WS_MAX_MESSAGE_SIZENo10485760WebSocket 单次接收最大消息大小, 默认为 10MB
    WS_MAX_QUEUE_SIZENo100WebSocket 最大消息队列大小, 默认为 100
    WS_MAX_CONNECTIONS_SUBSCRIBENo30WebSocket 公共模板更新页面最大连接数, 默认为 30
    SUBSCRIBE_ACCELERATE_URLNojsdelivr_cdn订阅加速方式或地址, 用于加速公共模板更新, 仅适用于 GitHub.
    详见配置...

    详细信息请查阅config.py

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/guide/faq.html b/zh_CN/guide/faq.html index 3c96699142c..9f161222473 100644 --- a/zh_CN/guide/faq.html +++ b/zh_CN/guide/faq.html @@ -6,10 +6,10 @@ 常见问题 | QD - + - + @@ -46,7 +46,7 @@ # 其他可选配置 结束 } }

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/guide/how-to-use.html b/zh_CN/guide/how-to-use.html index 2c2aed9bc30..b1fcc9a6545 100644 --- a/zh_CN/guide/how-to-use.html +++ b/zh_CN/guide/how-to-use.html @@ -6,10 +6,10 @@ 如何使用? | QD - + - + @@ -17,7 +17,7 @@
    Skip to content
    页面导航

    如何使用?

    获取 HAR

    1. 什么是 HAR?

    HAR:https://toolbox.googleapps.com/apps/har_analyzer/?lang=zh_CN

    2. 抓包

    2.1. Chrome 或 Edge

    1. F12Ctrl + Shift + I ,或从 Chrome 菜单中选择 更多工具 > 开发者工具
    2. 从屏幕底部或右侧打开的面板中,选择 网络 选项卡。
    3. 确保 网络 选项卡左上角的 录制 按钮显示为 红色
    4. 如果它是灰色的,单击一下开始录制。
    5. 选中 保留日志 旁边的框。 Preserve log
    6. 单击 清除 按钮以清除 网络 选项卡中的所有现有日志。
    7. 现在尝试重现您计划发起的 HTTP 请求。
    8. 重现任务后,右键单击网络请求网格上的任意位置。
    9. 选择 另存为带内容的 HARSave as HAR with Content
    10. 将文件保存到您的计算机。

    2.2. 火狐

    1. F12 (或转到 Tools > Web Developer > Network )。
    2. 现在尝试重现您计划发起的 HTTP 请求。
    3. 右键单击​​加载的结果。
    4. 选择全部另存为 har。

    2.3. Windows - Fiddler

    1. 打开 Fiddler,打开 Tools 菜单,选择 Options
    2. 选择 HTTPS 选项卡 ,勾选 Capture HTTPS Connects
    3. 选择 连接 选项卡,选中 解密 HTTPS 流量
    4. 现在尝试重现您计划发起的 HTTP 请求。
    5. 导出为 HAR 格式 - 请选择 HTTPArchive 作为导出方式。

    2.4. IOS - Stream

    1. 打开 Stream。
    2. 抓取HTTPS请求前,需要安装CA证书, setting > General > About > Certificate Trust Settings 信任CA证书。
    3. 点击开始抓包按钮,手机会自动弹出VPN配置窗口,然后选择允许。
    4. 现在尝试重现您计划发起的 HTTP 请求。
    5. 在应用页面,点击停止抓拍结束本次抓拍。
    6. 导出HAR文件。

    3. 公共模板

    1. 点击 我的模板 右侧的 社区模板 按钮。
    2. 更新存储库以获取最新的 HAR 文件列表。
    3. 选择你要使用的HAR文件,点击 Subscribe 按钮订阅模板。
    4. 根据需要修改模板。
    5. 然后跳到 3.编辑模板 继续编辑。

    上传 HAR 文件

    1. 访问并登录 QD 首页。
    2. 点击 我的模板 右侧的 + 按钮。
    3. 上传刚刚保存的 HAR 文件。
    4. 点击 上传 继续。

    编辑模板

    1. 将用户名、密码、cookie、header 等根据用户变化的部分替换成类似 {{ username }} 的模板。(模板支持 jinja2 语法
    2. 在请求编辑中使用测试面板测试模板是否正确返回,使用正确和错误的用户名进行测试。
    3. 填写 成功/失败断言,这有助于检测模板任务是否运行失败。
    4. 当请求中需要上一次请求的一些数据时,使用变量抽取,通过正则化抽取数据,保存在环境变量中。使用组选择器 ab(\w+)cd 选择其中的一部分。
    5. 使用 __log__ 提取任务日志。
    6. 当所有请求编辑完成后,使用下载按钮旁边的 测试 来测试整体。
    7. 正在编辑的模板会自动保存在浏览器缓存中,不用担心丢失。
    8. 单击 保存 按钮保存模板。
    9. 单击 下载 按钮下载模板。

    创建定时任务

    1. 点击 我的任务 右侧的 + 按钮。
    2. 选择刚刚创建的模板。
    3. 填写任务变量,任务间隔、任务组和任务执行时间。
    4. 单击 测试 按钮测试任务。
    5. 单击保存按钮保存任务。

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/guide/update.html b/zh_CN/guide/update.html index 0191d5f5454..62b8f498d1b 100644 --- a/zh_CN/guide/update.html +++ b/zh_CN/guide/update.html @@ -6,10 +6,10 @@ 更新方法 | QD - + - + @@ -25,7 +25,7 @@ sh /usr/src/app/update.sh

    强制同步最新源码

    sh
    # 先 cd 到仓库代码根目录, 执行命令后重启进程
     wget https://gitee.com/qd-today/qd/raw/master/update.sh -O ./update.sh && \
     sh ./update.sh -f

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/guide/what-is-qd.html b/zh_CN/guide/what-is-qd.html index fa280ee2a2a..8543b9865b3 100644 --- a/zh_CN/guide/what-is-qd.html +++ b/zh_CN/guide/what-is-qd.html @@ -6,17 +6,17 @@ 什么是 QD? | QD - + - +
    Skip to content
    页面导航

    什么是 QD?

    QD 是 一个 基于 HAR 编辑器和 Tornado 服务端的 HTTP 定时任务自动执行 Web 框架。

    特性

    • 基于Har: 仅需上传通过抓包得到的 Har, 即可制作框架所需的 HTTP 任务模板。
    • Tornado 服务端: 使用 Tornado 作为服务端, 以实现异步响应前端和发起 HTTP 请求。
    • API & 插件支持: 内置多种 API 和过滤器用于模板制作, 后续将提供自定义插件支持。
    • 开源: QD 是一个基于 MIT 许可证的开源项目。

    如何部署

    请参考: 部署

    如何使用

    请参考: 如何使用

    如何更新

    请参考: 更新

    讨论

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/index.html b/zh_CN/index.html index 44dbd66d96f..6bd3548e0e6 100644 --- a/zh_CN/index.html +++ b/zh_CN/index.html @@ -6,17 +6,17 @@ HTTP定时任务自动执行框架 | QD - + - +
    Skip to content

    QD

    一个 HTTP 定时任务自动执行 Web 框架

    QD

    基于Har

    仅需上传通过抓包得到的 Har, 即可制作框架所需的 HTTP 任务模板。

    Tornado 服务端

    使用 Tornado 作为服务端, 以实现异步响应前端请求和发起 HTTP 请求。

    API & 插件支持

    内置多种 API 和过滤器用于模板制作, 后续将提供自定义插件支持。

    开源项目

    QD 是一个基于 MIT 许可证的开源项目。

    基于 MIT 许可证发布.

    - diff --git a/zh_CN/toolbox/pusher.html b/zh_CN/toolbox/pusher.html index fa255f4da72..921ba0983f8 100644 --- a/zh_CN/toolbox/pusher.html +++ b/zh_CN/toolbox/pusher.html @@ -6,10 +6,10 @@ 推送工具 | QD - + - + @@ -28,7 +28,7 @@ proxy_pass https://qyapi.weixin.qq.com/; } }

    企业微信 Webhook 推送

    企业微信 Webhook 推送需要在 工具箱->推送注册 中设置参数:

    参数名是否必须默认值说明
    QYWX_WebHook_Key""企业微信 Webhook Key,
    可在 企业微信 中获取

    自定义推送

    自定义推送支持 GETPOST 推送方式, 使用 {log}{t} 表示要替换的日志和标题.

    自定义推送需要在 工具箱->推送注册 中设置参数:

    自定义 Get 推送

    参数名是否必须默认值说明
    URL""自定义 Get 推送地址,
    例如 https://example.com/push?log={log}&t={t}
    GET_Header""自定义 Get 推送 Header,
    使用 json 格式(半角双引号), 格式为 { "key1": "value1", "key2": "value2" },
    如果留空, 则不设置 Header

    自定义 Post 推送

    参数名是否必须默认值说明
    URL""自定义 Post 推送地址,
    例如 https://example.com/push
    POST_Header""自定义 Post 推送 Header,
    使用 json 格式(半角双引号), 格式为 { "key1": "value1", "key2": "value2" },
    如果留空, 则不设置 Header
    POST_Data""自定义 Post 推送 Body,
    使用 json 格式(半角双引号),
    例如 { "key1": "{log}", "key2": "{t}" },
    如果留空, 则不设置 Body

    推送设置

    工具箱->推送注册 中注册推送方式后, 可以在 工具箱->推送设置 中设置推送方式的触发条件.

    推送设置 中, 可以设置每个任务的推送开关, 任务结果推送渠道, 任务结果通知选择, 任务结果批量推送等.

    任务结果推送渠道

    用于设置任务结果推送渠道, 任务结果推送渠道包括以下几种:

    任务结果通知选择

    用于设置在何时推送任务结果, 任务结果通知选择包括以下几种:

    • 手动执行成功通知
    • 手动执行失败通知
    • 自动执行成功通知
    • 自动执行失败通知

    自动错误几次后提醒 可以设置在自动执行失败几次后推送通知, 例如设置为 3 , 则当自动执行失败 3 次后, 会推送通知.

    任务结果批量推送

    开启定期批量推送 时, 会根据 批量推送时间设置批量推送时间间隔 来批量推送距离本次推送时间前指定时间间隔内的任务结果.

    • 批量推送时间设置: 初次批量推送时间设置, 例如设置为 12:00:00 , 则会在当天的 12:00:00 进行一次批量推送.

    • 批量推送时间间隔: 设置每隔多少秒推送一次任务结果, 默认为 86400 秒, 即每隔一天批量推送本次推送时间前86400秒内的任务结果.

    基于 MIT 许可证发布.

    -